所以我最近开始在一家新公司工作,并且有很多 ArcGIS 用户似乎非常热衷于使用 PostGIS 实例来为我们的客户提供一些数据。虽然我对此没有意见,但我们是一家 95% 的 SQL Server 和 5% 的 Oracle 商店。我们当前的内部 GIS 在 SQL Server 上运行,我还没有听到任何抱怨。
我知道自 2012 年起 SQL Server 具有许多改进的空间/几何功能,但是 PostGIS 中是否有任何杀手级功能值得进入新平台?我试图研究它,但找不到任何真正深入的东西,或者这不完全是偏见。
我想为他们提供最好的工具来完成他们的工作,但也必须权衡这样一个事实,即我将从一开始就学习 Postgres/GIS,这本身就是一个完整的旅程。
我使用过 Postgres 和 SQL Server。我发现 Postgres 在 GIS 功能上更胜一筹。虽然我将在下面简要详细介绍我的发现,但我建议这样做:给自己一个简短但合理的时间段来回顾你所知道的不熟悉的解决方案,并牢记特定的目标。例如,可能需要 2 周的时间来安装和学习当前正在使用的某些特定功能。如果您发现在该时间段内卡住或缺乏功能,那么您知道它不适合您。这是一项研究投资,可以拓宽您的视野并帮助您意识到您可能错过了以前不知道的东西,或者只是确认您当前的课程是正确的。
就数据库而言,我发现 Postgres 的学习曲线更短、更浅。文档简直令人难以置信。SQL Server 确实有相当多的文档,但我发现很多文档很难阅读,而且没有足够的示例和教程。
PostGIS vs SQL Server Spatial 在文档方面与上述类似,但 PostGIS 在功能上击败了 SQL Server Spatial。例如,谷歌地图,以及在较小程度上的必应地图,最近在他们的地图 API 中添加了完整的 geoJSON 支持。好吧,PostGIS 可以使用ST_AsGeoJSON()轻松地直接从数据库查询中返回 geoJSON 结果。然后可以将此 geoJSON 结果直接传递给任何可以理解 geoJSON 的对象。SQL Server 要求您使用额外的库和处理,或者使用 ogr2ogr。此外,PostGIS 有超过 300 个函数可用于数据进出数据库的转换,而 SQL Server 则只有 70-100 个。
在使用了这两个系统的 GIS 功能后,我建议如下:
在我看来,哪个数据库更好并不是您主要关心的问题,相反,您有两个不同的考虑因素相互矛盾,即业务知识与客户需求。最终,这将是一个商业决策,而不是技术决策。
正如 Max 在评论中指出的那样,显然存在机会成本。没有办法解决这个问题。如果您打算使用 Postgres 路线,请考虑以良好的咨询协议、经验丰富的 dba 或两者兼而有之的形式获得一些帮助。
如果您的用户想要 PostGIS,那么这可能是一个净赢。通过转换,您将销售多少服务?在机会成本方面值得吗?这些决定不是根据您认为哪个数据库更好或根据技术规格做出的决定,而是根据学习曲线和市场营销。