使用OSMnx保存Shapefile时osmid字段创建失败错误求助
问题分析与解决方案
错误原因
调用ox.save_graph_shapefile时参数顺序错误:该函数的第二个参数是输出路径(filepath),第三个参数是编码(encoding),你将输出路径C:\\MY传递给了encoding参数,导致Fiona错误地把路径值当作字段编码相关参数处理,触发字段创建失败的报错。
正确调用方式
以下两种写法均可解决问题:
方式1:指定输出目录,自动生成标准命名的shapefile文件
将输出目录直接作为第二个参数传入,函数会在该目录下生成nodes.shp、edges.shp及配套的dbf、shx等文件:
import fiona import geopandas as gpd import pandas as pd import networkx as nx import osmnx as ox G = ox.graph_from_point((37.79, -122.41), dist=1000, network_type='all') ox.save_graph_shapefile(G, "C:\\MY") # 直接传输出目录
注意:确保C:\\MY文件夹已存在,若不存在可提前用os.makedirs("C:\\MY", exist_ok=True)创建。
方式2:指定文件名前缀,生成自定义命名的shapefile文件
若需要自定义文件前缀,可将带前缀的路径作为第二个参数,函数会生成[前缀]_nodes.shp、[前缀]_edges.shp等文件:
# 在C:\MY目录下生成2_nodes.shp、2_edges.shp等文件 ox.save_graph_shapefile(G, "C:\\MY\\2")
或者在当前工作目录生成:
ox.save_graph_shapefile(G, "2")
内容的提问来源于stack exchange,提问作者li xu
相关产品推荐
相关产品推荐

