地理信息可视化
几个常用的关于地图和网络的包(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代码下载并建立可步行、可驾驶或可骑自行车的城市网络模型,然后轻松地对其进行分析和可视化。你可以同样轻松地下载并处理其他基础设施类型、便利设施/兴趣点、建筑占地面积、海拔数据、街道方位/方向和速度/旅行时间。
可以配置的选项Link
基本操作
下载代码(详情可见osmnx.geometries部分)
1 | G = osmnx.geometries.geometries_from_address(address, tags, dist=1000) # 通过查询地点 |
可以直接对其可视化
1 | osmnx.plot.plot_graph(G) |
通过请求得到 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)
- ```python
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
- ```python
OSMnx构造的G
可以转换成Geopandas格式的数据,其中包含两部分,edges和nodes
1 | gdf_nodes, gdf_edges = ox.graph_to_gdfs(G) |
⚠️ gdf_edges中的‘那么’可能会存在 list 的情况
简化和修正地图上的节点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