【发布时间】:2020-10-05 20:41:39
【问题描述】:
我正在使用 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 地理数据框:
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?
【问题讨论】: