数据工程堆栈 - 收集、转换和可视化地理空间数据

数据挖掘 可视化 地理空间 工具 数据工程
2021-10-15 18:22:51

我正在做一个附带项目,我通过网络报废和 OSM API 收集地理空间数据。我从简单的 Java 应用程序开始,但是,我想将其作为数据流,纯粹用于学习目的。

不幸的是,我对工具的了解,主要是连接它们,是,嗯,低。

我的目标是什么?
作为最终结果,我想将地图上废弃的地理空间点与连接它们的道路(来自 OSM)可视化。

当前流程:
在独立的 Java 应用程序中,我正在删除地理空间点的数据。有一个客户端使用 OSM API 来获取所需数据。

我认为它可能有用:
使用 Apache Spark 收集和转换数据。然后以某种方式使用 GeoSpark、或 Geotrellis 和 Zeppelin 来可视化数据。我也在考虑使用 ES + Kibana 来处理地理数据,但看起来 Zeppelin 就足够了。
我觉得使用 Java 很舒服,然后是 Scala。

你怎么认为?有没有更好的工具我可以使用?我错过了什么吗?

2个回答

你可以这样做,让你目前正在做的事情更容易。

对于数据抓取,使用任何让你开心的东西。就我而言,我将使用 Uipath 或仅使用 python,具体取决于复杂性。但这取决于您,您只需要一些适合您的格式的数据集。

获得数据后,您希望将其可视化。这是一项经典的数据科学任务。我来自python军队,所以我建议去python。如果你精通 Java,那么过渡就像切热黄油一样。

有一些很好的库可以极大地帮助你。在这里,我推荐一些我过去使用过的软件包,它们会对您有很大帮助。

  1. 大叶
  2. 地理图
  3. 介绍叶(再次)

就我而言,我可能会坚持使用 Foliumm,因为互联网上有很多代码可以重复使用,而且它是小菜一碟。

这是我个人对我将要做什么的看法。可能还有其他工具和语言...

OpenStreeMap 有 Overpass API 来获取这些数据。它们提供了由节点、方式和关系组成的特定数据模型,您可以将其转换为点和其他几何图形,以及您习惯于操作的首选数据结构。

如果你想在 python 库的帮助下做到这一点,我最近实现了geohunter,它是这个数据模型到 geopandas 的GeoDataFrame(当今 python 中最常用的空间数据结构)的解析器。然后,您可以为 GeoJSON 或 shapefile 导出 GeoDataFrame 并通过简单调用将 gdf ​​导入到您的 java 应用程序中,to_file('points.geojson', driver='GeoJSON')或者将 gdf ​​转储到 geojson 字符串中to_json()

您还可以将结果放入一个 mongodb,它有一个非常漂亮的 geojson 接口。

这是一个如何使用 geohunter 在 GeoDataFrame 中获取 OSM 数据的示例。

import geohunter
api = geohunter.osm.Eagle()

# Get the city df you want to analyze
city = api.get(bbox='(-8.02, -41.01, -3.0, -33.0)',
               largest_geom=True,
               name='Natal')

# Get some points from the map features available on OSM
poi = api.get(city,
              amenity=['school', 'hospital'],
              highway='primary',
              natural='*')

要了解 OSM 可用的地图功能(数据类型),请参阅他们的文档

geohunter 可能有一些错误来解析一些几何图形。如果它发生在您身上,请打开一个问题并让我们讨论它。