ArcGIS中使用PostGIS数据源

以下测试场景为ArcGIS 10.4.1。

PostGIS Geometry vs SDE st_geometry

ArcGIS 10.4.x开始直接支持PostGIS Geometry,而无需再单独拷贝st_geometry,以及使用sde账户等等繁琐的事情(一如当年支持Oracle Spaitial和SQL Server Spatial)。这无疑是很大利好,PostGIS的功能、函数和增长性、活跃程度上,也不是sde所能媲美的。sde的方式可查看之前写的这篇博文

创建或使用空间数据库

在ArcCategory中创建好已添加PostGIS扩展的数据库的连接后,就可以正常使用了。添加数据库的界面如下图,与连接其他库无异。

需要注意的,是必须创建与pg用户名相同的schema,来处理数据。pg和PostGIS的最低版本要求,可以查看官方网站说明

添加了PostGIS扩展,并建好同名schema后,在ArcGIS的Category中从任意Geodatabase或文件要素类中往PostgreSQL库中拷贝带空间字段的数据,在数据量不是非常大的情况下,这种拷贝的体验还是非常不错的。ArcGIS在粘贴操作时会给出如下提示:

使用PostGIS的空间函数

创建了PostGIS Extension后,任何schema都可以使用geometry字段了,由于ArcGIS只能在与PostgreSQL用户名同名的schema中读写数据,因此public schema一般是派不上用场了(除非是username定为public),所以手动创建与username同名的schema后,当需要使用Postgis的空间计算函数等对象的时候,需要通过public schema来调用。