来自地理信息系统 (GIS) 的空间数据无处不在。从让我们的生活更美好、更便捷的智能手机,到提高农民粮食产量并降低成本的精准农业,无论我们是否意识到,我们生活的几乎每个方面都与空间数据息息相关。
空间数据的增加同时带来了越来越多人们可以消费和使用以构建各种新应用的开放空间数据集。然而,这些类型的数据集并非总是易于使用。此外,由于某些地理数据的大小,它们可能难以引入现代应用程序部署框架(如 Kubernetes)。
为了帮助解决这些问题,Crunchy Data 最近宣布了两个新的开源项目:pg_tileserv 和 pg_featureserv,以使开发云原生空间应用程序更加容易。这些项目是开源 Crunchy Spatial 的一部分,可帮助开发人员利用强大的 PostGIS 地理空间数据库扩展到 PostgreSQL,而无需编写复杂的 SQL 语句。
那么,pg_tileserv 和 pg_featureserv 是什么?它们如何使开发人员更轻松地将位置服务添加到 Kubernetes 应用程序中?这对空间应用程序的未来意味着什么?
传统 GIS 与现代空间微服务
传统上,当组织或个人处理空间数据时,他们从作为 GIS 成长的产品开始。有许多高质量的开源 GIS 产品(QGIS、GeoServer、GeoNode 等),但它们可能与现代、云原生的软件设计方法不一致。
Kubernetes 的普及为这些遗留应用程序带来了关于自动化和部署的挑战,因为它们需要大量的手动配置,例如,当添加和修改数据源时。在许多设置中,这些空间应用程序必须存在于 Kubernetes 之外,并且无法利用它提供的许多便利。
相比之下,现代空间服务应该由它们正在处理和提供的空间数据驱动。它们应该与现代软件开发实践保持一致,并高效地扩展并轻松地与开发人员工作流程集成。
空间感知应用程序还需要确保它们可以处理空间数据的独特特征(例如,几何图形、投影等)。除非您拥有功能强大的数据库来为您完成大部分工作,否则在独立的微服务中完成所有这些操作可能具有挑战性。这就是 pg_tileserv 和 pg_featureserv 的用武之地,因为这两个项目都利用 PostGIS(PostgreSQL 的开源地理空间扩展)的强大功能,通过简单的 REST 框架提供高级空间功能。
使用 pg_tileserv 生成地图矢量瓦片

pg_tileserv 是用 Go 编写的轻量级矢量瓦片服务器,使您能够直接从 PostGIS 生成矢量瓦片。它通过以最佳实践方法实现 ST_AsMVT() 函数来实现这一点,该方法将 HTTP 请求转换为数据库。它包括常见的默认设置,允许您将数据库连接 URL 传递给服务器,并在短时间内启动并运行。无需安装和配置重量级软件,它专为云原生 GIS 应用程序而设计。
有关如何使用它的具体示例,请查看我们关于瓦片服务和使用 PostgreSQL 函数进行空间瓦片服务的博客文章。
使用 pg_featureserv 注释您的地图

pg_featureserv 是用 Go 编写的轻量级服务,使您能够直接从 PostGIS 提供要素。它实现了 OGC API 的要素,并为 PostGIS 中包含的空间数据和函数提供了标准的 REST 端点。与 pg_tileserv 一样,无需安装重量级软件;只需将数据库连接 URL 传递给您的 PostGIS 数据库,您就可以开始使用了。有关如何使用它的具体示例,请查看我们关于查询空间要素的文章。
专注于空间数据,而不是 GIS
凭借我们在开发 PostGIS 和构建基于 PostGIS 的应用程序方面的深厚背景,我们希望帮助开发人员以易于部署、扩展和维护的方式释放空间数据的所有价值。正如 pg_tileserv 和 pg_featureserv 的源代码所示,我们只是利用 PostGIS 中已有的函数。这使开发人员可以快速将空间数据添加到他们的应用程序中,并使数据科学家能够专注于数据。

这种方法的优点是:
- 性能更快,因为 PostgreSQL 和 PostGIS 正在为您完成工作
- 更少的配置需要维护,因为数据库结构就是配置
- 从一开始就设计为在云端以企业规模运行
- 更快地更新面向客户的应用程序——当您更新数据库中的数据时,您的应用程序会立即更新
- 能够更专注于维护您的数据并为您的用户交付价值,而减少在软件上的纠缠
此外,由于这些服务响应数据库的配置,它们还公开了数据库中包含的函数。数据科学家可以创建数据库中的函数,这些函数可以通过 REST API 立即使用,而不是开发他们的数据函数以稍后将其合并到软件中。软件开始淡化到后台,以便组织可以专注于数据。
我想说的是,我们对这些新的地理空间服务感到非常兴奋,并且我们非常希望收到您对它们的反馈。请随时查看 pg_tileserv 和 pg_featureserv,尝试将它们与您的 PostGIS 数据库以及 PostgreSQL Operator 一起部署,并在评论中分享您的反馈。
评论已关闭。