我想使用osmnx
从海地提取建筑物层信息。我在不同的城市工作,而不是
import osmnx as ox
place_name = "Port-au-Prince"
buildings = ox.buildings_from_place(place_name)
我收到以下错误
TypeError: Geometry must be a shapely Polygon or MultiPolygon
答案 0 :(得分:0)
我猜这是osmnx的内部错误。 “太子港”在OSM中映射为node。该节点是first result when searching for "Port-au-Prince" in Nominatim(地理编码器)。 osmnx似乎期望使用一个区域,即administrative boundary relation。这样的关系在名词上排名第二和第三。如果osmnx找到一个节点作为第一个搜索结果,它将失败。为osmnx创建上游错误报告。
答案 1 :(得分:0)
有关此问题以及如何在查询中解决该问题的详细信息,请参见https://github.com/gboeing/osmnx/issues/16。
根据OSMnx文档:
查询必须是可地理编码的,并且OSM必须具有地理编码结果的面边界。如果OSM在该地点没有多边形,则可以使用graph_from_address函数获取其街道网络,该函数将地点名称地理编码为一个点,并在该点的某个距离内获取网络。或者,您可以尝试更改which_result参数以使用不同的地理编码结果。例如,第一个地理编码结果(即默认值)可能会解析为点几何,但此查询的第二个地理编码结果可能会解析为多边形,在这种情况下,您可以将graph_from_place与which_result = 2一起使用。