我正在使用OSMnx库从OpenStreetMap检索一些几何图形,代码如下:
G = ox.graph_from_place('Casco Viejo, Bilbao, Spain', network_type='walk',
retain_all=True, buffer_dist = 50, which_result = 2,
infrastructure = 'relation["highway" = "pedestrian"]')
这将生成由形状优美的线串组成的以下图形:
然后我将图形转换为geopandas geodataframe:
ped = ox.graph_to_gdfs(G, nodes = False)
我尝试过将Linestrings
转换为Points
,然后将Points
转换为Multipolygon
有没有办法将此线条字符串转换为形状Multipolygon
:
from shapely import geometry, ops
# combine them into a multi-linestring
multi_line = geometry.MultiLineString(list(ped['geometry']))
merged_line = ops.linemerge(multi_line)
from shapely.geometry import Point, MultiPoint
points = []
for i in range(0, len(merged_line)):
points.append((Point(list(merged_line[i].coords[1]))))
coords = [p.coords[:][0] for p in points]
poly = Polygon(coords)
这会产生一个奇怪的错误几何体:
shape(poly)
如果我尝试:
MultiPolygon(points)
它给出了以下错误消息:TypeError: 'Point' object is not subscriptable
有没有办法将Linestrings
转换成Multipolygon
并将其转换成GeoDataFrame
如果您试图使用
ox.graph_from_X
函数构造一个图,那么使用polgon或multipolgon是没有意义的,因为图模型只是一组通过边彼此链接的元素(节点)如果您只需要区域中可行走元素的几何图形(点、多边形、多边形等),则应使用pois模块获取几何图形的地理数据框(无任何图形拓扑),如:
最后,请注意
infrastructure
参数的使用在几个版本之前已经被弃用,并在以前的版本中被删除。您可能希望将包更新到最新版本相关问题 更多 >
编程相关推荐