Chapter 13 Greenplum PostGIS Extension

Chapter 13 GreenplumPostGIS Extension

This chaptercontains the following information:

•    About PostGIS

•    Greenplum PostGIS Extension

•    Enabling PostGIS Support

•    Upgrading the Greenplum PostGIS Extension

•    Migrating from PostGIS 1.4 to 2.0

•    Usage

•    PostGIS Extension Support and Limitations

About PostGIS

PostGIS是PostgreSQL的空间数据库扩展,允许GIS(地理信息系统)对象存储在数据库中。 Greenplum数据库PostGIS扩展包括对基于GiST的R-Tree空间索引和用于分析和处理GIS对象的功能的支持。

有关PostGIS的更多信息,请访问http://postgis.refractions.net/。

有关Greenplum数据库PostGIS扩展支持的信息,请参阅PostGIS扩展支持和限制。

Greenplum PostGIS Extension

Greenplum数据库PostGIS扩展可从PivotalNetwork获得。 您可以使用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)。

Table 141: PostGIS Component Version

PostGIS Extension Package

PostGIS

Geos

Proj

2.0

2.0.3

3.3.8

4.8.0

1.0

1.4.2

3.2.2

4.7.0

 


 

 

有关支持的扩展包和软件版本的信息,请参阅Greenplum数据库发行说明。

重要:由于引入了Pivotal QueryOptimizer,GreenplumDatabase 4.3.4.x及更早版本的扩展包与GreenplumDatabase 4.3.5.0及更高版本不兼容。此外,GreenplumDatabase 4.3.5.0及更高版本的扩展包与GreenplumDatabase 4.3.4.x及更早版本不兼容。

要在GreenplumDatabase 4.3.5.0及更高版本中使用扩展包,必须安装并使用为GreenplumDatabase 4.3.5.0及更高版本构建的GreenplumDatabase扩展包(gppkg文件和contrib模块)。对于GreenplumDatabase 4.3.4.x及更早版本中使用的自定义模块,您必须重新构建与GreenplumDatabase 4.3.5.0及更高版本配合使用的模块。

1.4.3中2.0.3的主要增强和变化包括:

•支持具有GEOGRAPHY类型和相关功能的地理坐标(经度和纬度)。

•这些格式的输入格式支持:GML,KML和JSON

•未知SRID从-1更改为0

•3D关系和测量支持功能

•使空间索引3D感知

•KNN GiST质心距离运算符

•许多弃用的功能被删除

•性能改进

 

请参阅PostGIS文档以获取更改列表:http://postgis.net/docs/manual-2.0/release_notes.html

警告:PostGIS 2.0删除了许多弃用的功能,但在PostGIS 1.4中可用。

使用PostGIS 1.4中不推荐使用的函数编写的函数和应用程序可能需要

改写。 请参阅PostGIS文档以获取新功能,增强功能或更改功能的列表:

http://postgis.net/docs/manual-2.0/PostGIS_Special_Functions_Index.html#NewFunctions

 

Greenplum Database PostGIS Limitations

Greenplum数据库PostGIS扩展不支持以下功能:

•    Topology

•    Raster

•    A small numberof user defined functions and aggregates

•    PostGIS longtransaction support

•    Geometry andgeography type modifier

有关Greenplum数据库PostGIS支持的信息,请参阅PostGIS扩展支持和限制。


Enabling PostGIS Support

安装PostGIS扩展包后,为每个需要使用的数据库启用PostGIS支持。 要启用支持,请在目标数据库中运行随PostGIS包一起提供的启用SQL脚本。

对于PosgGIS 1.4,启用脚本是postgis.sql

psql -fpostgis.sql -d your_database

您的数据库现在在空间上启用。

对于PostGIS 2.0.3,在目标数据库中运行两个SQL脚本postgis.sql和spatiai_ref_sys.sql。

例如:

psql -dmydatabase -f $GPHOME/share/postgresql/contrib/postgis-2.0/postgis.sql

psql -dmydatabase -f $GPHOME/share/postgresql/contrib/postgis-2.0/spatial_ref_sys.sql

注意:spatial_ref_sys.sql使用EPSG坐标系定义标识符填充spatial_ref_sys表。 如果您已经覆盖了标准条目,并且希望使用这些覆盖,则在创建新数据库时不要加载spatial_ref_sys.sql文件。

您的数据库现在在空间上启用。

Upgrading the Greenplum PostGISExtension

If you upgrade from PostGIS extensionpackage version 2.0 (pv2.0) or later, you must run postgis_upgrade_2o_minor.sqi in your target database. This exampleupgrades the PostGIS extension package and runs The script:

gppkg -upostgis-ossv2.0.3_pv2.0.1_gpdb4.3-rhel5-x86_64.gppkg

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


 


Migrating from PostGIS 1.4 to 2.0

要将PostGIS启用的数据库从1.4迁移到2.0,您必须执行PostGIS HARD升级。

HARD UPGRADE包括转储使用PostGIS 1.4启用的数据库并加载

将数据库数据化为使用PostGIS 2.0启用的新数据库。

有关PostGIS HARD升级过程的信息,请参阅PostGIS文档:http://postgis.net/docs/manual-2.0/postgis_installation.html#hard_upgrade

 

Usage

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

CREATETABLE geom_test ( gid int4, geom geometry,

namevarchar(25) );

INSERTINTO 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');

INSERTINTO geom_test ( gid, geom, name )

VALUES( 2, 'LINESTRING(1 1 1,5 5 5,7 7 5)', '3D Line' );

INSERTINTO 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(22 0, 3 3 0)'));

 

以下示例SQL语句将创建一个表,并使用引用SPATIAL_REF_SYS表中的条目的SRID整数值向表中添加几何列。 INSERT语句添加到表中的地点。

CREATETABLE geotest (id INT4, name VARCHAR(32) );

SELECTAddGeometryColumn('geotest','geopoint', 4326,'POINT',2);

INSERT INTOgeotest (id, name, geopoint)

VALUES (1,'Olympia', ST_GeometryFromText('POINT(-122.90 46.97)', 4326));

INSERT INTOgeotest (id, name, geopoint)|

VALUES (2,'Renton', ST_GeometryFromText('POINT(-122.22 47.50)', 4326));

SELECTname,ST_AsText(geopoint) FROM geotest;

Spatial Indexes

PostgreSQL提供对GiST空间索引的支持。 即使在大型物体上,GiST方案也提供索引。 它使用有损索引系统,其中较小的对象充当索引中较大对象的代理。 在PostGIS索引系统中,所有对象都使用边界框作为索引中的代理。

Building aSpatial Index

 

You can build a GiST index as follows:

CREATE INDEX indexnameON tablename

USING GIST ( geometryfield );

PostGIS Extension Support andLimitations

This sectiondescribes Greenplum PostGIS extension feature support and limitations.

•    Supported PostGIS Data Types

•    Supported PostGIS Index

•    PostGIS Extension Limitations

The GreenplumDatabase PostGIS extension does not support the following features:

•    Topology

•    Raster

Supported PostGIS Data Types

GreenplumDatabase PostGIS extension supports these PostGIS data types:

•    box2d

•    box3d

•    geometry

•    geography

•    spheroid

Supported PostGIS Index

GreenplumDatabase PostGIS extension supports the GiST (Generalized Search Tree) index.

PostGIS Extension Limitations

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

•Greenplum数据库不支持与PostGIS拓扑或栅格功能相关的数据类型和函数,如TopoGeometry和ST_AsRaster。

•ST_Estimated_Extent函数不受支持。该功能需要用户定义的数据类型的表格列统计数据,而Greenplum数据库不提供这些数据类型。

•不支持ST_GeomFronGeoJSoN功能。该功能需要JSON支持。 Greenplum数据库不支持JSON。

•这些PostGIS聚合不受Greenplum数据库支持:

•ST MemCollect

•ST_MakeLine

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

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

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

•Greenplum数据库不支持用户定义类型的类型修饰符。

解决的办法是为PostGIS几何体使用AddGeometrycoiumn函数。例如,具有PostGIS几何的表格不能使用以下SQL命令创建:

CREATE TABLE geometry(id INTEGER,geomgeometry(LINESTRING));

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

CREATE TABLE geometry(id INTEGER);

SELECTAddGeometryColumn('public','geometries','geom',0,'LINESTRING',2);

你可能感兴趣的:(Chapter 13 Greenplum PostGIS Extension)