OSMnx 入门指南及最佳实践

OSMnx 入门指南及最佳实践

osmnx-examples项目地址:https://gitcode.com/gh_mirrors/os/osmnx-examples

1. 项目介绍

OSMnx 是一个 Python 包,用于方便地从 OpenStreetMap 下载、建模、分析和可视化城市街道网络和其他地理空间特征。只需一行代码,你就能下载步行、驾驶或骑行网络数据,随后进行分析并绘制地图。此外,OSMnx 还支持处理城市设施、建筑、公交站、海拔数据、道路方向、出行速度和路径规划。

2. 项目快速启动

安装

确保你已经安装了 Python 和 Anaconda,然后在命令行中运行以下命令来安装 OSMnx:

conda create --name osmnx python=3.9
conda activate osmnx
pip install osmnx

第一个示例

下面是一个简单的例子,演示如何下载和绘制加利福尼亚州伯克利市的街路网络:

import osmnx as ox

# 定位到伯克利
place = 'Berkeley, California'

# 使用 OSMnx 下载地理数据
G = ox.graph_from_place(place)

# 绘制街路网络图
ox.plot_graph(G)

上述代码将显示伯克利的街路网络图。

3. 应用案例和最佳实践

案例1:获取城市区域内的POI

# 获取特定范围的点兴趣(POIs)
place = "Berkeley, California"
G_poi = ox.pois_from_place(place)

最佳实践:利用缓存优化性能

由于 OSM 数据下载可能较慢,建议保存下载的数据以供后续使用:

# 保存图形数据
ox.save_graph_shapefile(G, filename='berkeley')

# 加载已保存的数据
GReloaded = ox.load_graph_shapefile('berkeley')

4. 典型生态项目

OSMnx 与其他生态项目的集成使得它成为强大的工具链一部分:

  • GeoPandas: 处理地理空间数据,与 OSMnx 结合,可以实现更复杂的地理空间操作。
  • networkx: OSMnx 建立在网络x基础之上,可利用其算法进行复杂网络分析。
  • matplotlibplotly: 可视化工具,用于创建交互式地图和静态图表。

通过这些库的组合,你可以构建出强大的地理空间分析和可视化解决策略。

查阅 OSMnx 文档 获取更多详细信息、示例和API参考。

osmnx-examples项目地址:https://gitcode.com/gh_mirrors/os/osmnx-examples

### OSMnx 使用示例代码教程 #### 获取和显示地图数据 为了展示如何使用OSMnx获取并操作地理空间数据,这里给出一段简单的Python代码来加载特定位置的地图数据,并将其可视化: ```python import osmnx as ox # 定义地点名称 place_name = 'Piedmont, California, USA' # 下载该地区的步行网络图 graph = ox.graph_from_place(place_name, network_type='walk') # 绘制图形 fig, ax = ox.plot_graph(graph) ``` 这段程序会从OpenStreetMap下载指定地区(本例中为美国加利福尼亚州皮埃蒙特市)内的行人路径网,并创建一张表示这些道路连接关系的图像[^4]。 #### 计算基本统计信息 除了绘图外,还可以利用OSMnx计算关于所选区域内路网的各种统计数据。例如,要获得有关上述所得步行网络的信息摘要,可执行如下命令: ```python stats = ox.basic_stats(graph) for key, value in stats.items(): print(f"{key}: {value}") ``` 这将打印出一系列描述性指标,如节点数量、边数以及平均度等特性值[^3]。 #### 自定义投影设置 当需要更精确地控制输出结果的空间参照系时,可以通过调整参数实现自定义投影方式。比如,在绘制之前更改默认使用的坐标系统至WGS84经纬度格式: ```python # 将Graph对象转换成GeoDataFrame形式 nodes, edges = ox.graph_to_gdfs(graph) # 设置新的CRS (Coordinate Reference System) 参数 edges.crs = {'init': 'epsg:4326'} # 重新绘制带有新坐标的地图 ax = edges.plot(figsize=(10, 10), alpha=0.5, edge_color='b') ``` 以上脚本展示了怎样改变原始数据集中的坐标体系到全球广泛接受的标准——EPSG:4326编码方案下。 #### 处理多种类型的数据源 值得一提的是,OSMnx不仅限于处理单一类型的地理特征;相反,它可以方便地与其他种类的城市要素相结合来进行综合研究。例如,对于建筑物轮廓线的操作同样简单明了: ```python buildings = ox.geometries_from_place(place_name, tags={'building': True}) # 显示建筑分布情况 ax = buildings.plot(color='gray', figsize=(10, 10)) ``` 此段代码能够提取给定范围内的所有标记有`building=true`属性的对象,并以灰色填充的方式呈现出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白秦朔Beneficient

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值