PostGIS插件
功能描述
PostGIS是在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力的开源GIS数据库,它在PostgreSQL的基础上增加了表达地理信息的空间数据类型和操作这些类型的函数。
Vastbase G100 V2.2版本可使用PostGIS的如下模块:
- 支持矢量分析的postgis模块。
- 支持计算几何的sfcgal模块。
- 支持栅格分析的raster模块。
- 支持拓扑分析的topology模块。
支持扩展组件如下:
- Fuzzystrmatch扩展,是一个判断字符串之间相似性和距离的一个插件,主要是提供Soundex、Levenshtein、Metaphone和Double Metaphone四个功能,开源PostgreSQL的contrib中包含此扩展。PostGIS中的postgis_tiger_geocoder依赖此扩展。
- postgis_tiger_geocoder扩展,TIGER指的是拓扑集成地理编码和参考,这个扩展提供了TIGER数据的地理编码支持。
注意postgis_tiger_geocoder扩展启用前,需要先启用fuzzystrmatch(字符串模糊查询)扩展,以及可选的address_standardizer、address_standardizer_data_us。
- address_standardizer扩展, TIGER数据地址规则化,是基于PAGC标准的地名标准化的扩展。
- address_standardizer_data_us扩展,TIGER地址规则化示例数据集,包含了基于PAGC标准的地名标准化的美国样例数据。
注意事项
Vastbase创建函数不支持添加WINDOW关键字,所以不支持函数ST_ClusterDBSCAN和ST_ClusterKMeans。
Vastbase不支持BRIN 索引,所以不支持geog_brin_inclusion_add_value和geom2d_brin_inclusion_add_value等相关函数。
Vastbase不支持WITH ORDINALITY功能,所以topology.ValidateTopology提供的功能与PostGIS 3.2版本不一致。
不支持PostGIS 3.2版本中的ST_AsGeoJson函数。
示例
示例1: 安装PostGIS插件。
1、联系工程师获取Vastbase专用PostGIS插件安装包。
2、使用root用户解压Vastbase专用PostGIS插件安装包,将解压得到的postgis文件夹下的内容复制到$GAUSSHOME目录中($GAUSSHOME为数据库的安装路径)。
cp -r postgis/* $GAUSSHOME chown -R vastbase:vastbase $GAUSSHOME
3、yum安装相关依赖(如果不能使用yum,则可下载对应版本的安装包进行安装)。
yum install -y gmp gmp-devel #(版本6.0.0) yum install -y mpfr mpfr-devel #(版本3.1.1) yum install -y boost boost-devel #(版本1.53.0)
4、启动数据库并设置guc参数behavior_compat_options(PGDATA为数据库的实例路径,vastbase为数据库安装用户)。
su - vastbase vb_ctl start vb_guc reload -D $PGDATA -c " behavior_compat_options = 'bind_procedure_searchpath, display_leading_zero' "
5、重启并连接数据库(可能需要指定路径或修改连接端口等)。
vb_ctl restart vsql -r -p 5432 -d vastbase
6、创建插件。
create extension postgis; create extension postgis_sfcgal; create extension postgis_raster; create extension postgis_topology;
7、查询测试。
SELECT Box3D(ST_GeomFromEWKT('LINESTRING(1 2 3, 3 4 5, 5 6 5)'));
结果返回如下:
Box3d --------- BOX3D(1 2 3,5 6 5) (1 row)
8、删除插件
drop extension postgis cascade;
示例2: 创建address_standardizer_data_us扩展。
1、创建扩展(前提条件:已创建PostGIS插件)。
create extension address_standardizer_data_us;
2、查询是否安装成功。
\dx
示例3: 创建fuzzystrmatch和postgis_tiger_geocoder扩展。
1、创建扩展(前提条件:已创建PostGIS插件)。
create extension fuzzystrmatch; create extension postgis_tiger_geocoder;
2、查看已创建扩展。
\dx