地理空间分析架构

Last reviewed 2024-03-25 UTC

本文档可帮助您了解 Google Cloud 地理空间功能以及如何在地理空间分析应用中使用这些功能。本文档面向希望了解如何使用 Google Cloud 中提供的产品和服务向业务利益相关者提供地理空间数据洞见的地理信息系统 (GIS) 专业人士、数据科学家和应用开发者。

概览

Google Cloud 提供了一套全面的地理空间分析和机器学习功能,可帮助您开发数据洞见,以详细了解世界、您的环境和业务。您从这些 Google Cloud 功能中获得的地理空间数据洞见可帮助您做出更准确的且可持续的业务决策,而无需管理传统 GIS 基础架构的复杂性和费用。

地理空间分析使用场景

许多关键业务决策都围绕位置数据来制定。从地理空间分析中收集的数据洞见适用于许多行业、企业和市场,如以下示例所示:

  • 评估环境风险。通过预测洪水和森林火灾等自然灾害,了解环境状况所带来的风险,从而更有效地预测风险并进行规划。
  • 优化站点选择。将专有站点指标与流量模式和地理移动性等公开可用数据结合起来,然后使用地理空间分析来确定您的企业的最佳位置并预测财务成果。
  • 规划物流和运输。通过将地理空间数据整合到业务决策中,更好地管理车队运维(例如最后一公里物流)、分析自动车辆中的数据、管理精确的道路运输、改进移动性规划。
  • 了解并改善土地健康状况和产量。分析数百万英亩的土地以了解土地特征,并帮助农民分析影响农业生产的变量之间的相互作用。
  • 管理可持续发展。绘制经济、环境和社会状况图,以确定保护环境的重点领域。

地理空间云基础组件

您的地理空间分析架构可以由一个或多个地理空间云组件组成,具体取决于您的使用场景和要求。每个组件提供不同的功能,这些组件协同工作以形成统一、可扩缩的地理空间云分析架构。

数据是提供地理空间数据洞见的原始材料。您可以通过一些公共和专有来源获得质量地理空间数据。公共数据源包括 BigQuery 公开数据集Earth Engine 目录美国地质调查局 (USGS)。专有数据源包括 SAP 和 Oracle 等内部系统以及 Esri ArcGIS Server、Carto 和 QGIS 等内部 GIS 工具。您可以汇总来自多个业务系统(例如库存管理、营销分析和供应链物流)的数据,然后将这些数据与地理空间源数据相结合,并将结果发送到地理空间数据仓库。

您也许能够将地理空间数据源直接加载到分析数据仓库中,具体取决于来源的数据类型和目标。例如,BigQuery 内置了加载以换行符分隔的 GeoJSON 文件的支持,而 Earth Engine 具有集成数据目录,其中包含一系列全面的分析就绪数据集。您可以通过地理空间数据流水线加载其他格式的其他数据,以预处理地理空间数据并将其加载到 Google Cloud 中的企业数据仓库。您可以使用 Dataflow 构建达到生产就绪状态的数据流水线。或者,您可以使用合作伙伴解决方案,例如 FME 空间空间 ETL

企业数据仓库是地理空间分析平台的核心。将地理空间数据加载到数据仓库中后,您可以使用以下功能开始构建地理空间应用和数据分析:

然后,您的架构将作为单个系统,可用于大规模存储、处理和管理数据。在该架构中,您还可以构建和部署高级分析解决方案,以便能在不包含这些功能的系统上生成不可行的数据分析。

地理空间数据类型、格式和坐标系

要将地理空间数据聚合到 BigQuery 等数据仓库中,您必须了解您可能在内部系统和公共来源中遇到的地理空间数据格式。

数据类型

地理空间数据类型分为两类:矢量和光栅。

矢量数据由顶点和线段组成,如下图所示。

矢量图像示例(点、线串、多边形、多边形集和集合)。

矢量数据的示例包括地块边界、公共道路和资产位置。由于矢量数据可以以表格(行和列)格式存储,因此 BigQuery 和 Cloud SQL 中的 PostGIS 等地理空间数据库非常适合存储、索引、分析矢量数据。

光栅数据由像素网格组成。光栅数据的示例包括大气测量和卫星图像,如以下示例所示。

显示地理区域的航拍照片的光栅图像示例。

Earth Engine 旨在实现全球范围的光栅数据存储和分析。Earth Engine 包含矢量化光栅的功能,可帮助您对区域进行分类并理解光栅数据中的模式。例如,通过分析大气光栅数据随时间的变化,您可以提取表示盛行风气流的矢量。您可以使用多边形化过程将每个光栅像素加载到 BigQuery 中,该过程会将每个像素直接转换为矢量形状。

地理空间云应用通常会组合使用这两种类型的数据来生成总体数据分析,以利用每个类别的数据源的优势。例如,有助于识别新开发地点的房地产应用可能会将矢量数据(例如宗地边界)与光栅数据(例如海拔数据)结合起来,以最大程度地降低洪水风险和保险成本。

数据格式

下表列出了常用的地理空间数据格式以及在分析平台中使用的方式。

数据源格式 说明 示例
Shapefile Esri 开发的矢量数据格式。它可让您存储几何图形位置并建立属性关联。 人口普查区几何图形、建筑物占地面积
WKT OGC 发布的人类可读矢量数据格式。BigQuery 内置对此格式的支持。 CSV 文件中几何图形的表示
WKB 相当于 WKT 的存储高效二进制文件。BigQuery 内置对此格式的支持。 CSV 文件和数据库中几何图形的表示
KML Google Earth 和其他桌面工具使用且与 XML 兼容的矢量格式。该格式由 OGC 发布。 3D 建筑形状、道路、土地特征
Geojson 基于 JSON 的开放式矢量数据格式。 网络浏览器和移动应用中的功能
GeoTIFF 广泛使用的光栅数据格式。此格式可让您将 TIFF 图片中的像素映射到地理坐标。 数字海拔模型 Landsat

坐标参考系统

无论类型和格式如何,所有地理空间数据都包含一个坐标参考系统,可让 BigQuery 和 Earth Engine 等地理空间分析工具将坐标与地球表面相关联。坐标参考系统有两种基本类型:测地线和平面

测地数据考虑地球的曲线,并使用基于地理坐标(经度和纬度)的坐标系。测地线形状通常称为“地理位置”。BigQuery 使用的 WGS 84 坐标参考系统是测地坐标系。

平面数据基于将地理坐标映射到二维平面的地图投影(如 Mercator)。要将平面数据加载到 BigQuery 中,您需要将平面数据重新投影到 WGS 84 坐标系中。您可以使用现有的 GIS 工具或使用地理空间云数据流水线手动进行重新投影(请参阅下一部分)。

构建地理空间云数据流水线的注意事项

如上所述,您可以将一些地理空间数据直接加载到 BigQuery 和 Earth Engine 中,具体取决于数据类型。如果数据使用 WGS 84 参考系统,BigQuery 允许您加载 WKT、WKB 和 GeoJSON 文件格式的矢量数据。Earth Engine 直接与 Earth Engine 目录中可用的数据集成,支持直接加载 GeoTIFF 文件格式的光栅图像

您可能会遇到以其他格式存储且无法直接加载到 BigQuery 中的地理空间数据。或者数据可能位于坐标参考系中,您必须首先将其重新投影到 WGS 84 参考系中。同样,您可能会遇到需要预处理、简化和更正的错误。

您可以通过使用 Dataflow 构建地理空间数据流水线,将预处理的地理空间数据加载到 BigQuery 中。Dataflow 是一种代管式分析服务,支持大规模流式传输和批量处理数据。

您可以使用 geobeam Python 库,用于扩展 Apache Beam 并向 Dataflow 添加地理空间处理功能。该库允许您从各种来源读取地理空间数据。该库还帮助您处理和转换数据,并将其加载到 BigQuery 中,以用作地理空间云数据仓库。geobeam 库是开源的,因此您可以修改和扩展它以支持其他格式和预处理任务。

借助 Dataflow 和 geobeam 库,您可以并行提取和分析大量地理空间数据。geobeam 库通过实现自定义 I/O 连接器来工作。geobeam 库包括 GDALPROJ 和其他相关库,以便更轻松地处理地理空间数据。例如,geobeam 会自动将所有输入几何图形重新投影到 BigQuery 使用的 WGS84 坐标系,以存储、聚类和处理空间数据。

geobeam 库遵循 Apache Beam 设计模式,因此您的空间流水线的工作方式类似于非空间流水线。不同之处在于,您可以使用 geobeam 自定义 FileBasedSource 类从空间源文件读取内容。您还可以使用内置的 geobeam 转换函数来处理空间数据并实现您自己的函数。

以下示例展示了如何创建读取光栅文件的流水线,将光栅多边形化,将其重新投影到 WGS 84,然后将多边形写入 BigQuery。

with beam.Pipeline(options=pipeline_options) as p:
  (p
   | beam.io.Read(GeotiffSource(known_args.gcs_url))
   | 'MakeValid' >> beam.Map(geobeam.fn.make_valid)
   | 'FilterInvalid' >> beam.Filter(geobeam.fn.filter_invalid)
   | 'FormatRecords' >> beam.Map(geobeam.fn.format_record,
       known_args.band_column, known_args.band_type)
   | 'WriteToBigQuery' >> beam.io.WriteToBigQuery('DATASET.TABLE'))

BigQuery 中的地理空间数据分析

当数据存储在 BigQuery 中时,您可以对数据进行转换、分析和建模。例如,您可以通过计算这些地理的交集并使用标准 SQL 连接表来查询地块的平均海拔。BigQuery 提供了许多函数,让您可以构建新的地理值、计算地理测量值以及探索两个地理之间的关系等等。您可以使用 BigQuery S2 函数对 S2 网格单元进行分层地理空间索引。此外,您还可以使用 BigQuery ML 的机器学习功能来识别数据中的模式,例如创建 k-means 机器学习模型以对地理空间数据进行聚类

地理空间可视化、报告和部署

Google Cloud 提供了多种选项来可视化和报告您的空间数据和见解,以便将它们交付给用户和应用。您用来表示空间数据分析的方法取决于您的业务需求和目标。并非所有空间数据分析都以图形方式表示。许多数据分析最好通过 Apigee 等 API 服务提供,或者将其保存到 Firestore 等应用数据库中,以便这些数据分析可以助力面向用户的应用中的功能。

对地理空间分析进行测试和原型设计时,您可以使用 BigQuery GeoViz 验证查询并从 BigQuery 生成可视化输出。对于商业智能报告,您可以使用 Looker 数据洞察Looker 连接到 BigQuery 并结合使用地理空间可视化以及各种其他报告类型,以便呈现您所需的数据洞见的统一视图。

您还可以构建应用,让用户与地理空间数据和数据洞见进行交互,并将这些数据洞见整合到业务应用中。例如,通过使用 Google Maps Platform,您可以将地理空间分析、机器学习以及 Maps API 中的数据组合到单个映射应用中。使用 deck.gl 等开源库,您可以添加高性能可视化和动画来告知地图更好地呈现您的数据。

Google 还拥有强大且不断发展的合作伙伴产品生态系统,可帮助您充分利用地理空间数据分析。CartoNGISClimate Engine 等都具有专门的功能和产品,您可以根据自己的行业和业务进行定制。

参考架构

下图显示的参考架构说明了地理空间云组件如何交互。该架构有两个关键组件:地理空间数据流水线和地理空间分析平台。

显示从数据源(Earth Engine 或 Cloud Storage)到基于 Dataflow 的流水线的流并将结果放入 BigQuery 的架构。

如图所示,将地理空间源数据加载到 Cloud Storage 和 Earth Engine 中。从其中任一产品,您都可以使用 Dataflow 流水线加载数据,并使用 geobeam 执行常见的预处理操作,例如特征验证和几何图形重新投影。Dataflow 将流水线输出写入 BigQuery。当数据位于 BigQuery 中时,可以使用 BigQuery 分析和机器学习对其进行就地分析,也可以通过 Looker 数据洞察、Looker、Vertex AI 和 Apigee 等其他服务进行访问。

后续步骤