你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
端到端地理空间存储、分析和可视化
地理空间数据以各种形式提供,需要各种功能来处理、分析和可视化数据。 虽然地理信息系统 (GIS) 很常见,但它在很大程度上也不是云原生的。 大多数 GIS 在桌面上运行,这限制了它们的规模和性能。 虽然在将数据移动到后端方面取得了进展,但这些系统仍然受 IaaS 约束,这使得它们难以扩展。
本文将提供一种高级方法,用于使用云原生功能以及一些开源软件选项和商业选项。 将会考虑三个角色。 角色是将要寻求概要工作流的架构师,无需了解实现的具体细节。 角色包括:
- 常规地理空间架构师。 此架构师将要寻求一种实现地理空间的方法,但可能没有 GIS 或遥感方面的背景。
- OSS 地理空间架构师。 此架构师致力于开源软件 (OSS) 解决方案,但利用云进行计算和存储。
- COTS 地理空间架构师。 此架构师致力于 COTS,但也利用云计算和存储。
可能的用例
这些体系结构中提供的解决方案适用于许多用例:
- 处理、存储大量光栅数据(例如图层或气候数据)并提供对这些数据的访问。
- 将 ERP 系统的实体位置数据与 GIS 参考数据合并,或包括矢量数据、数组、点云等。
- 存储来自移动设备的物联网 (IoT) 遥测数据,并实时或批量进行分析
- 运行分析地理空间查询。
- 在 Web 应用中嵌入特选和情境化的地理空间数据。
- 处理来自无人机的数据、航拍图像、卫星图像、LiDAR、网格模型结果等。
常规地理空间架构
Azure 具有许多原生地理空间功能。 在此示意图和后续示意图中,你将找到地理空间数据经历的概要阶段。 首先,你拥有数据源、一个引入步骤以及一个用于存储、转换、提供、发布和最终使用数据的位置。 请注意具有原生地理空间功能的服务旁边的地球图标。 此外,不要将这些示意图视为线性过程。 可以先从“转换”列开始,然后“发布”和“使用”,接下来创建一些需要返回到上一列的某些派生数据集。
此体系结构流假定数据可能来自数据库、文件或流式源,而不是以原生 GIS 格式存储。 使用 Azure 数据工厂或通过 Azure IoT、事件中心和流分析引入数据后,可以使用 Azure SQL、Azure SQL 托管实例、Azure Database for PostgreSQL 或 Azure Data Lake Storage 将这些数据永久存储在暖存储中。 在那里,可以使用 Azure Batch 或 Synapse Spark 池批量转换和处理数据,这两者都可以通过使用 Azure 数据工厂或 Synapse 管道自动执行。 对于实时数据,可以使用流分析、Azure Maps 进一步转换或处理,或者通过 Azure 数字孪生引入到上下文中。 数据在经过转换之后,可以再次在 Azure SQL DB 或 Azure Database for PostgreSQL、Synapse SQL 池(用于抽象的非地理空间数据)、Azure Cosmos DB 或 Azure 数据资源管理器中提供,以用于其他用途。 准备就绪后,可以直接通过数据库 API(但经常使用发布层)查询数据。 Azure Maps 数据 API 应可以满足小型数据集的需求,否则可以基于 OSS 或 COTS 引入非原生服务,用于通过 Web 服务或桌面应用程序访问数据。 最后,Azure 应用服务中托管的 Azure Maps Web SDK 可以实现地理可视化。 另一种选择是在 Power BI 中使用 Azure Maps。 最后,HoloLens 和 Azure 空间定位点可用于查看数据并将其放置在现实世界中以获得虚拟现实 (VR) 和增强现实 (AR) 体验。
还应注意的是,其中许多选项是可选的,可以使用 OSS 进行补充,以降低成本,同时还保持可伸缩性;或者可以使用第三方工具进行补充,以利用其特定功能。 下一个会话解决此需求。
第三方和开放源代码软件地理空间体系结构
此模式采用使用 Azure 原生地理空间功能的方法,同时利用某些第三方工具和开源软件工具。
这种方法与之前的流程图之间最显著的区别是使用了 Safe Software, Inc. 的 FME(可以从 Azure 市场获取)。 FME 允许地理空间架构师集成各种类型的地理空间数据,包括 CAD(用于 Azure Maps Creator)、GIS、BIM、3D、点云、LIDAR 等。有 450 多个集成选项,可以通过其功能加快创建许多数据转换的速度。 但是,其实现基于虚拟机的使用,因此在其缩放功能方面有限制。 FME 转换的自动化可以通过将 FME API 调用与 Azure 数据工厂和/或 Azure Functions 配合使用来实现。 例如,一旦将数据加载到 Azure SQL 中,它就可以在 GeoServer 中提供并作为 Web 地理要素服务(矢量)或 Web 地图图块服务(栅格)发布,并在 Azure Maps Web SDK 中可视化或通过 QGIS 进行分析,以用于桌面以及其他 Azure Maps 基本地图。
COTS 地理空间体系结构:Esri 与静态源和流式源
我们将介绍的下一个方法使用商业 GIS 作为解决方案的基础。 Esri 的技术(可从 Azure 市场获得)将是此体系结构的基础,尽管其他商业软件可以适应相同的模式。 与以前一样,源、引入、(原始)存储、加载/提供在很大程度上保持不变。 数据也可以在独立计算机 (VM) 上通过 ArcGIS Pro 进行转换,或者作为更大解决方案的一部分通过 Azure 虚拟桌面进行转换。 可以通过 ArcGIS Enterprise 或 ArcGIS Enterprise on Kubernetes(Azure Kubernetes 服务)发布数据。 可以在将 ArcGIS Image 作为 ArcGIS Enterprise 部署的一部分的 IaaS 上处理图像。 可以通过 ArcGIS JavaScript SDK、ArcGIS Pro 最终用户、ArcGIS Runtime 移动 SDK 或 ArcGIS for Power BI 在 Azure 应用服务中托管的 Web 应用内使用数据。 同样,用户可以通过 ArcGIS Online 使用数据。
COTS 地理空间图像体系结构:Esri 的 ArcGIS Image 和Azure Orbital
下一个体系结构涉及 Azure Orbital 和 Esri 的 ArcGIS Image。 借助这种端到端的流,Azure Orbital 允许你计划与卫星的联系,并将数据通过下行链接发送到 VM 或流式传输到 Azure 事件中心。 除了直接流式传输的卫星数据之外,无人机或其他图像数据也可以带到平台上并进行处理。 原始数据可以存储在 Azure NetApp 文件、Azure 存储帐户 (blob) 或数据库(如 Azure Database for PostgreSQL)中。 根据卫星和传感器平台,会将数据转换为级别 0 到级别 2 的数据集。 请参阅 NASA 数据处理级别。 需要达到哪个级别,取决于卫星和传感器。 接下来,ArcGIS Pro 可将数据转换为马赛克数据集。 然后会使用 ArcGIS Enterprise(在 VM 或 Kubernetes 上)将马赛克数据集转换为图像服务。 ArcGIS Image Server 可以直接将数据作为图像服务提供,或者用户可以通过 ArcGIS Image for ArcGIS Online 使用该图像服务。
COTS/开源软件地理空间图像体系结构:Azure 空间到分析就绪数据集
通过用于启用搜索和查询功能的 API(如 Microsoft 的 Planetary Computer)提供分析就绪数据集时,无需首先从卫星下载数据。 但是,如果图像所需的交付周期较短,则最好直接从 Azure 空间获取数据,因为卫星运营商或任务驱动的组织可以通过 Azure Orbital 计划与卫星的联系。 从级别 0 转到级别 2 分析就绪数据集的过程因卫星和图像产品而异。 通常需要多个工具和中间步骤。 Azure Batch 或其他计算资源可以处理群集中的数据并存储生成的数据。 在准备好在 ArcGIS、QGIS 或其他一些地理视觉化工具中使用数据之前,数据可能会经历多个步骤。 例如,一旦数据采用云优化 GeoTIFF (COG) 格式,它就会通过存储帐户或 Azure Data Lake 提供,并可供通过 STAC API(可以作为服务通过 AKS 等部署在 Azure 上)进行访问和查询。 或者,数据将作为 Web 地图图块服务通过 GeoServer 发布。 然后,使用者可以在 ArcGIS Pro 或 QGIS 中或通过带有 Azure Maps 或 Esri 的移动和 Web SDK 的 Web 应用访问这些数据。
组件
- Azure 事件中心是一个完全托管的大数据流式处理平台。 此平台即服务 (PaaS) 提供已分区的使用者模型。 多个应用程序可以使用此模型同时处理数据流。
- Azure Orbital 是完全托管的基于云的地面站即服务,可用于通过直接将空间数据注入 Azure 来简化操作。
- Azure 数据工厂是一种集成服务,可用于处理来自不同数据存储的数据。 可以使用此完全托管的无服务器平台来创建、计划和安排数据转换工作流。
- Azure Cosmos DB 是一个完全托管的 NoSQL 数据库服务,用于新式应用开发。
- Azure Synapse Analytics 是一项企业分析服务,可以缩短在数据仓库和大数据系统中生成见解所需的时间。
- Azure 数字孪生是一项平台即服务产品/服务,用于基于整个环境(可以是建筑物、工厂、农场、能源网络、铁路、体育场馆或整个城市)的数字模型创建孪生图。
- Azure 虚拟桌面是在云中运行的桌面和应用虚拟化服务。
- Azure Databricks 是一个数据分析平台。 它的完全托管的 Spark 群集处理来自多个源的大量数据流。 Azure Databricks 可以大规模转换地理空间数据,以在分析和数据可视化效果中使用。
- Azure Batch 用于运行大规模并行的高性能计算作业。
- Azure Data Lake Storage 是一种可缩放且安全的数据湖,适用于高性能分析工作负载。 这项服务可以管理 PB 量级的信息,同时保持数百千兆的吞吐量。 这些数据通常来自多个异类源,可以是结构化的、半结构化的或非结构化的。
- Azure SQL 数据库是 PaaS 版本的 SQL Server,是一种智能的可缩放关系数据库服务。
- Azure Database for PostgreSQL 是基于开放源代码 PostgreSQL 数据库引擎社区版本的完全托管的关系数据库服务。
- PostGIS 是 PostgreSQL 数据库的扩展,它与 GIS 服务器集成。 PostGIS 可以运行涉及地理对象的 SQL 位置查询。
- Power BI 是一系列软件服务和应用。 可以使用 Power BI 连接不相关的数据源并创建它们的视觉对象。
- 适用于 Power BI 的 Azure Maps 视觉对象提供了一种使用空间数据增强地图的方式。 你可以使用此视觉对象来显示位置数据对业务指标的影响。
- 应用服务及其 Web 应用功能提供了一个框架,用于生成、部署和缩放 Web 应用。 应用服务平台提供内置基础结构维护、安全修补程序和缩放功能。
- Azure Maps 中的 GIS 数据 API 以 GeoJSON 和矢量图块等格式存储和检索地图数据。
- Azure 数据资源管理器是一种快速、完全托管的数据分析服务,可处理大量数据。 此服务最初侧重于时序和 Log Analytics。 它现在还可处理来自应用程序、网站、IoT 设备和其他来源的各种数据流。 Azure 数据资源管理器中的地理空间功能提供了用于呈现地图数据的选项。
- Azure NetApp 文件是一种企业级的、高性能的、计量式文件网络连接的存储 (NAS) 服务。
- Quantum GIS 是一款免费的开源桌面 GIS,支持地理空间数据的编辑、分析和地理可视化。
- ArcGIS Enterprise 是一个用于地图和地理可视化、分析和数据管理的平台,它托管数据、应用程序和自定义低代码/无代码应用程序。 它与称为 ArcGIS Pro 或 ArcGIS Desktop(此处未包括,因为它已被 ArcGIS Pro 取代)的桌面 GIS 一起工作。
- ArcGIS Pro 是 Esri 的专业桌面 GIS 应用程序。 它允许超级用户对数据进行浏览、地理可视化和分析。 它包括2D 和3D 功能,最适合在 Azure 高性能计算 VM(如 NV 系列)上运行。 可以使用 Azure 虚拟桌面扩展 ArcGIS 的用途。
- ArcGIS Image for ArcGIS Online 是 ArcGIS Online (SaaS) 的扩展,用于地理可视化、托管、发布和分析。
- STAC API 规范用于通过目录查询和检索光栅数据。
尽管上面的示意图中未显示,但 Azure Monitor、Log Analytics 和 Key Vault 也应是更广泛的解决方案的一部分。
- Azure Monitor 收集有关环境和 Azure 资源的数据。 此诊断信息有助于维护可用性和性能。 两个数据平台组成监视器:
- Azure Monitor 日志记录并存储日志和性能数据。
- Azure Monitor 指标按固定间隔收集数值。
- Azure Log Analytics 是对 Monitor 日志数据运行查询的 Azure 门户工具。 Log Analytics 还提供了用于制表和统计分析查询结果的功能。
- Key Vault 存储和控制对机密(如令牌、密码和 API 密钥)的访问。 Key Vault 还会创建和控制加密密钥并管理安全证书。
备选方法
各种 Spark 库可用来处理 Azure Databricks 和 Synapse Spark 池中的地理空间数据。 请参阅以下库:
但还存在其他解决方案,用于通过 Azure Databricks 处理和缩放地理空间工作负载。
其他要考虑的 Python 库包括 PySAL、Rasterio、WhiteboxTools、Turf.js、Pointpats、Raster Vision、EarthPy、Planetary Computer、PDAL 等。
矢量图块提供了一种有效的方式来在地图上显示 GIS 数据。 解决方案可以使用 PostGIS 动态查询矢量图块。 此方法适用于包含少于 1 百万条记录的简单查询和结果集。 但在以下情况下,可能会有一种不同的方法:
- 查询的计算成本高昂。
- 数据不会频繁更改。
- 正在显示大型数据集。
在这些情况下,请考虑使用 Tippecanoe 来生成矢量图块。 你可以将 Tippecanoe 作为数据处理流的一部分运行,或者作为容器或使用 Azure Functions。 可以通过 API 使生成的图块可用。
- 与事件中心一样,Azure IoT 中心可以引入大量的数据。 但 IoT 中心还提供了与设备的双向通信功能。 如果直接从设备接收数据,但同时向设备发送命令和策略,请考虑使用 IoT 中心,而不是事件中心。
相关资源
相关体系结构
相关指南
- 地理空间数据处理和分析
- 比较 Microsoft 的机器学习产品和技术 - Azure Databricks
- 用于通过 Azure 机器学习提升机器学习生命周期的机器学习操作 (MLOps)
- Azure 机器学习最佳工具选择决策指南
- 监视 Azure Databricks