PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。刚好最近又遇上一个问题,也使我萌发了开坑PostGIS的想法。

1 PostGIS简介

PostGIS是对象关系型数据库系统PostgreSQL的一个扩展,PostGIS提供如下空间信息服务功能:空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范。PostGIS的版权被纳入到GNU的GPL中,也就是说任何人可以自由得到PostGIS的源码并对其做研究和改进。正是由于这一点,PostGIS得到了迅速的发展,越来越多的爱好者和研究机构参与到PostGIS的应用开发和完善当中。

以上引自百度百科。

下面是我的第一篇博客。

桌面GIS连接Postgresql总结

安装可以在网上搜索教程,在连接ArcGIS、QGIS拓展内容可见上文。

2 关键问题

最近需要的一个工作是基于土地覆被数据和其他数据做一个简单的适宜用地提取。其实总结起来就是各种基础的空间叠加分析,但是却遇上了一个关键问题。土地覆被数据分辨率为300 m,下图即为土地覆被数据(已提取了需要的土地覆被类型)。为了面积准确性,进行栅格转矢量的时候并没有选择简化面。结果导致数据量非常巨大。

打开属性表可以发现,研究区一共有3146163条数据。

然后需要和另外一个结果做空间叠加(Intersection,相交),得到适宜用地的空间分布。结果由于数据量太大运行时间较长。在ArcGIS平台测试结果如图。花了21分钟27秒。

笔者同时尝试着使用了ArcGIS Pro来进行大数据量的矢量相交计算。计算时间为13分钟6秒。

也有人给的建议是选用PostGIS进行计算。于是进行了测试。

需要设置SRID和geometry。接下来在PostGIS的SQL查询里运行如下的SQL查询。

1
2
SELECT ST_Intersection(suitablewgs84.geometry, ecooutwgs84.geometry) 
FROM public.suitablewgs84 INNER JOIN public.ecooutwgs84 on ST_Intersects(suitablewgs84.geometry, ecooutwgs84.geometry)

可能是目前学习不够深入,速度似乎不够快。而这也是本部分学习笔记的开篇。

先放一些PostGIS的资料。

postgresql学习资料

PostGIS