[译] 为什么我们需要关注PostGIS? - Part 1

原文链接:https://medium.com/@tjukanov/why-should-you-care-about-postgis-a-gentle-introduction-to-spatial-databases-9eccd26bc42b

由于原博文较长,我分为几个部分翻译。上一部分在这里:https://blog.csdn.net/IDisposable/article/details/103830440

 

第一部分:一种新的工作方式

 

PostGIS能够带给你一种新的工作方式。你能够更容易地重复这种工作方式,你能更容易地使用版本控制,PostGIS使多人工作流成为可能。

文件常常需要特定的软件来读取和写入。SQL是一个间接层,使用它能够随机地访问数据并且分析数据。如果没有这个间接层,你要么需要特定的软件来操作数据,要么自己写代码来完成数据访问和分析。

使用SQL来分析数据,而不是使用各式各样的软件、各式各样的操作来处理文件,使得你能够更轻松地分享和重现你的工作。你可能有那么一个”主SHP文件",你用这个主文件和另外的SHP文件做了一些空间的连接操作,做了剪切操作,搞定了工作。那么,文件丢了肿么办?

Johnnie 同学在推特上有一个很好的例子,讲的是他一个不小心把所有数据删除了,但是万幸的是他在GIT上存了一些SQL脚本,所以很轻松恢复了他的工作。

搞软件开发的人可能(希望是这样)熟悉版本控制。我在这篇博文里边不打算多讲版本控制,但是你可以(并且你应该)把SQL脚本放到像GIT这样的版本控制系统里边。把它当做放在你书架里的烹饪书,经常性地更新它,加入最好的菜谱,做出最美味的“数据分析”大菜。哪怕是你房子烧了你也能从版本系统中再得到一本新的。

数据库也能帮助你整理好你的空间数据。没有人是完美的,所以我们常常创建一些表,例如temp_1, final_final,但是数据库比普通文件提供了更好的机会让你标准化你的数据结构(例如,标准化表格中的数据类型)。

 

那么那些大的数据集呢?空间数据库使得处理大的数据集变得可能。使用数据库不仅仅是变得容易,因为很多时候不用数据库来处理大数据集几乎是不可能的。你试过打开2GB大小的csv文件吗?或者用800MB的GeoJSON文件做空间分析?你晓不晓得SHP文件尺寸有上限?当然你能够用GeoPackage或者其他文件格式来搞定一些问题,但是通常来讲PostGIS是处理大型空间数据的最优工具。

 

 

这张图片是根据QGIS从PostGIS数据库读取的22,000,000个船只GPS位置的点数据渲染出来的。你能看到这些船只哪些是在河流上,哪些是在公海上吗?

 

数据库有一个很赞的功能是能够轻松地自动完成一些你平时手动处理的事情。例如使用PostgreSQL的NOTIFY功能,你能自动地更新你的QGIS地图。你也能使用ETL工具(例如FME)来自动化你的工作,从PostGIS表中读取,或者将数据写入PostGIS表中都比读写文件容易多了。

如果你跟我不一样(我自己单干,我的兴趣所在),你可能工作在一个团队中,有一些同事。他们可能需要和你需要访问相同的数据。在工作中使用数据库来实现并行工作,跟使用共享目录中的文件相比,完全不是同一个层次。

一个主要的原因是并发用户可能破坏文件。虽然说你可以额外地写一些代码来保证对于同一个文件的写操作不会破坏数据,那时候你解决了文件保护的问题也解决了由此引起的性能问题,但你不可能比一个数据库做得更好。

当然采用一个新的工作方式有好处也有坏处。就像下班之前整理好文件一样,维护数据库也是一项不小的工作。例如升级你的PostGIS到一个新版本可能很痛苦。能力越大,责任越大。

 

让我们来看看这些“大”的部分。

 

【广而告之】对地理信息系统开发感兴趣的同学们,欢迎加QQ群: 开源GIS技术交流群  群号:767137544 入群请注明:CSDN

QQ Group Image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章