地理信息可视化

几个常用的关于地图和网络的包(osmnx, geopandas, fmm)

地理坐标系

ref:

https://zhuanlan.zhihu.com/p/363528840

https://zhuanlan.zhihu.com/p/97097402

https://docs.qgis.org/3.10/zh_Hans/docs/gentle_gis_introduction/coordinate_reference_systems.html

OSMnx

OSMnx 是一个Python软件包,可以让你从OpenStreetMap下载地理空间数据,并对现实世界的街道网络和任何其他地理空间几何图形进行建模、投影、可视化和分析。你可以用一行Python代码下载并建立可步行、可驾驶或可骑自行车的城市网络模型,然后轻松地对其进行分析和可视化。你可以同样轻松地下载并处理其他基础设施类型、便利设施/兴趣点、建筑占地面积、海拔数据、街道方位/方向和速度/旅行时间。

指导1

指导2

可以配置的选项Link

基本操作

下载代码(详情可见osmnx.geometries部分)

1
2
3
4
5
G = osmnx.geometries.geometries_from_address(address, tags, dist=1000)	# 通过查询地点
G = osmnx.geometries.geometries_from_bbox(north, south, east, west, tags) #通过制定经纬范围
G = osmnx.geometries.geometries_from_place(query, tags, which_result=None, buffer_dist=None) # 通过查询地点 (返回的一定是一个多边形范围 https://github.com/gboeing/osmnx/issues/16)
G = osmnx.geometries.geometries_from_point(center_point, tags, dist=1000) # 通过制定中心点经纬度
...

可以直接对其可视化

1
osmnx.plot.plot_graph(G)

p1

通过请求得到 G 的基本上都是NetworkX MultiDiGraph objects类型,可以转换为

  • undirected MultiGraphs

    • ```python
      M = ox.utils_graph.get_undirected(G)
      1
      2
      3
      4
      5

      - DiGraphs without (possible) parallel edges

      - ```python
      D = ox.utils_graph.get_digraph(G)
  • GeoPandas node/edge GeoDataFrames

    • ```python
      gdf_nodes, gdf_edges = ox.graph_to_gdfs(G)
      1
      2
      3
      4
      5
      6
      7



      对于下载好的G我们可以对其坐标系进行转换

      ```python
      osmnx.projection.project_graph(G, to_crs=None) # Return type:networkx.MultiDiGraph

OSMnx构造的G可以转换成Geopandas格式的数据,其中包含两部分,edges和nodes

1
2
3
gdf_nodes, gdf_edges = ox.graph_to_gdfs(G)
gdf_nodes.plot()
gdf_edges.plot()

⚠️ gdf_edges中的‘那么’可能会存在 list 的情况

p3

p2

简化和修正地图上的节点Link

GeoPandas

GeoPandas是一个为pandas对象添加地理数据支持的项目。它目前实现了GeoSeries和GeoDataFrame类型,它们分别是pandas.Series和pandas.DataFrame的子类。GeoPandas对象可以作用于有形状的几何对象并执行几何操作。

GeoPandas的几何操作是笛卡尔式的。坐标参考系统(crs)可以作为一个对象的属性来存储,并且在从文件加载时自动设置。对象可以通过to_crs()方法转换为新的坐标系。目前没有强制执行类似坐标的操作,但这在未来可能会改变。

官方样例.

CS为主的话依靠OSMnx已经可以做出很不错的可视化展示

更多是以geopandas的GeoDataFrame作为辅助

以后如果有需要再进行细致解读

占位💺s

FMM

FMM是一个开源的C++和Python的地图匹配框架。它解决了将嘈杂的GPS数据与路网匹配的问题。该设计考虑了性能、可扩展性和功能的最大化。

2021.7.22

⚠️ fmm安装在服务器上需要sudo权限

⚠️ fmm 仅支持python2

⚠️ fmm 配套使用osmnx版本为0.15.1

官方指南

配合OSMnx进行路网匹配操作可见Link1Link2

作者

Shuyu Zhang

发布于

2021-07-20

更新于

2022-10-16

许可协议

评论