Greenplum数据库中使用PostGIS扩展

2023年 8月 12日 36.1k 0

本文包含以下内容:关于 PostGISGreenplum 数据库中的PostGIS 扩展提供PostGIS能力升级Greenplum的PostGIS扩展迁移PostGIS 1.4到2.0使用PostGIS 功能和限制1. 关于 PostGIS关于PostGIS的介绍,本文不再赘述,请参考本公众号相关专题文章。

2. Greenplum 数据库中的PostGIS 扩展可从Pivotal Network网站(https://network.pivotal.io )获得Greenplum数据库PostGIS扩展。可以使用Greenplum软件包管理器(gppkg)安装它。 有关详细信息,请参见《 Greenplum数据库实用程序指南》中的gppkg。

Greenplum数据库4.3支持PostGIS扩展软件包2.0版(PostGIS 2.0.3)。Greenplum数据库4.2.6和更高版本支持PostGIS扩展包版本1.0和2.0(PostGIS 1.4和2.0.3)在Greenplum数据库的安装中,只能安装PostGIS扩展软件包的一个版本(1.0或2.0)。4.2.6之前的Greenplum数据库支持PostGIS扩展软件包版本1.0(PostGIS 1.4)。重要说明:由于引入了Pivotal Query Optimizer,用于Greenplum Database 4.3.4.x和更早版本的扩展程序包与Greenplum Database 4.3.5.0和更高版本不兼容。另外,用于Greenplum数据库4.3.5.0和更高版本的扩展程序包与Greenplum数据库4.3.4.x和更早版本不兼容。要将扩展包与Greenplum Database 4.3.5.0及更高版本一起使用,必须安装和使用为Greenplum Database 4.3.5.0及更高版本构建的Greenplum Database扩展包(gppkg文件和contrib模块)。 对于与Greenplum Database 4.3.4.x及更早版本一起使用的自定义模块,必须重建与Greenplum Database 4.3.5.0及更高版本一起使用的模块。

从1.4.2开始的2.0.3的主要增强和更改包括:

Support for geographic coordinates (latitude and longitude) with a GEOGRAPHY type and related functions.Input format support for these formats: GML, KML, and JSONUnknown SRID changed from -1 to 03D relationship and measurement support functionsMaking spatial indexes 3D awareKNN GiST centroid distance operatorMany deprecated functions are removedPerformance improvements警告:PostGIS 2.0删除了许多已过时但在PostGIS 1.4中可用的功能。 使用PostGIS 1.4中已弃用的函数编写的函数和应用程序可能需要重写。 有关新功能,增强功能或已更改功能的列表,请参见PostGIS文档:http://postgis.net/docs/manual-2.0/PostGIS_Special_Functions_Index.html#NewFunctions

Greenplum数据库不支持的PostGIS特性:

拓扑栅格少数用户定义的函数和集合PostGIS长事物支持几何和地理类型修改3. 提供PostGIS能力安装PostGIS扩展软件包后,可以为每个需要使用PostGIS的数据库启用PostGIS支持。 要启用支持,请在目标数据库中运行PostGIS软件包随附的启动器SQL脚本。对于PosgGIS 1.4,启用程序脚本为postgis.sql

psql -f postgis.sql -d your_database

您的数据库现在已启用空间能力。对于PostGIS 2.0.3,可以在目标数据库中运行两个SQL脚本postgis.sql和spatial_ref_sys.sql。例如:

psql -d mydatabase -f $GPHOME/share/postgresql/contrib/postgis-2.0/postgis.sqlpsql -d mydatabase -f $GPHOME/share/postgresql/contrib/postgis-2.0/spatial_ref_sys.sql

4. 升级Greenplum的PostGIS扩展如果从PostGIS扩展软件包2.0版(pv2.0)或更高版本升级,则必须在目标数据库中运行postgis_upgrade_20_minor.sql。 本示例升级PostGIS扩展软件包并运行脚本:

gppkg -u postgis-ossv2.0.3_pv2.0.1_gpdb4.3-rhel5-x86_64.gppkg

psql -d mydatabase -f $GPHOME/share/postgresql/contrib/postgis-2.0/postgis_upgrade_20_minor.sql

5. 迁移PostGIS 1.4到2.0要将启用PostGIS的数据库从1.4迁移到2.0,必须执行PostGIS HARD UPGRADE。 硬升级包括转储已启用PostGIS 1.4的数据库并将该数据库的数据加载到已启用PostGIS 2.0的新数据库。

有关PostGIS 手动过程的信息,请参见PostGIS文档:http://postgis.net/docs/manual-2.0/postgis_installation.html#hard_upgrade

6. 使用以下示例SQL语句创建非OpenGIS表和几何。

CREATE TABLE geom_test ( gid int4, geom geometry, name varchar(25) );INSERT INTO geom_test ( gid, geom, name ) VALUES ( 1, 'POLYGON((0 0 0,0 5 0,5 5 0,5 0 0,0 0 0))', '3D Square');INSERT INTO geom_test ( gid, geom, name ) VALUES ( 2, 'LINESTRING(1 1 1,5 5 5,7 7 5)', '3D Line' );INSERT INTO geom_test ( gid, geom, name ) VALUES ( 3, 'MULTIPOINT(3 4,8 9)', '2D Aggregate Point' );SELECT * from geom_test WHERE geom && Box3D(ST_GeomFromEWKT('LINESTRING(2 2 0, 3 3 0)'));

下面的示例SQL语句创建一个表,并向表中添加一个几何列,该列的SRID整数值引用了SPATIAL_REF_SYS表中的一个条目。 INSERT语句将添加到表的地理位置。

CREATE TABLE geotest (id INT4, name VARCHAR(32) );SELECT AddGeometryColumn('geotest','geopoint', 4326,'POINT',2);INSERT INTO geotest (id, name, geopoint) VALUES (1, 'Olympia', ST_GeometryFromText('POINT(-122.90 46.97)', 4326));INSERT INTO geotest (id, name, geopoint)| VALUES (2, 'Renton', ST_GeometryFromText('POINT(-122.22 47.50)', 4326));SELECT name,ST_AsText(geopoint) FROM geotest;

空间索引PostgreSQL支持GiST空间索引。GiST方案甚至可以在大型对象上提供索引。它使用有损索引编制系统,其中较小的对象充当索引中较大对象的代理。在PostGIS索引系统中,所有对象都将其边界框用作索引中的代理。

建立空间索引可以按以下方式构建GiST索引:

CREATE INDEX indexnameON tablenameUSING GIST ( geometryfield );

7. PostGIS 功能和限制Greenplum数据库PostGIS扩展不支持以下功能:

拓扑结构栅格支持的数据类型:

box2dbox3dgeometrygeographyspheroid支持的索引

Greenplum数据库PostGIS扩展支持GiST(通用搜索树)索引。

PostGIS扩展限制本节列出了Greenplum数据库PostGIS扩展限制,包括用户定义函数(UDF),数据类型和集合。

Greenplum数据库不支持与PostGIS拓扑或栅格功能相关的数据类型和功能,例如TopoGeometry和ST_AsRaster。不支持ST_Estimated_Extent函数。该功能需要表列统计信息来显示Greenplum数据库无法提供的用户定义数据类型。不支持ST_GeomFromGeoJSON函数。该功能需要JSON支持。 Greenplum数据库不支持JSON。Greenplum数据库不支持以下PostGIS聚合:

ST_MemCollectST_MakeLine在具有多个细分的Greenplum数据库上,如果重复调用多次,则聚合可能会返回不同的答案。

Greenplum数据库不支持PostGIS长事务。

PostGIS依赖触发器和PostGIS表public.authorization_table来提供长期事务支持。当PostGIS尝试获取长交易的锁时,Greenplum数据库会报告错误,指出该函数无法访问关系authorization_table。

Greenplum数据库不支持用户定义类型的类型修饰符。解决方法是将AddGeometryColumn函数用于PostGIS几何对象。例如,无法使用以下SQL命令创建具有PostGIS几何形状的表

CREATE TABLE geometries(id INTEGER, geom geometry(LINESTRING));

使用AddGeometryColumn函数将PostGIS几何添加到表中。 例如,以下这些SQL语句创建一个表并将PostGIS几何添加到表中:

CREATE TABLE geometries(id INTEGER);SELECT AddGeometryColumn('public', 'geometries', 'geom', 0, 'LINESTRING', 2);

本文来源:https://blog.csdn.net/eqmaster/article/details/108763432

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论