0

我想使用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

4

2 回答 2

0

有关此问题的全面讨论以及如何在查询中解决它,请参阅https://github.com/gboeing/osmnx/issues/16 。

根据 OSMnx 文档:

查询必须是可地理编码的,并且 OSM 必须具有地理编码结果的多边形边界。如果 OSM 没有该地点的多边形,您可以改为使用 graph_from_address 函数获取其街道网络,该函数将地名地理编码到一个点并获取该点一定距离内的网络。或者,您可以尝试改变 which_result 参数以使用不同的地理编码结果。例如,第一个地理编码结果(即默认值)可能会解析为点几何,但此查询的第二个地理编码结果可能会解析为多边形,在这种情况下,您可以使用带有 which_result=2 的 graph_from_place。

于 2019-04-09T21:34:05.310 回答
0

我猜这是 osmnx 的一个内部错误。“太子港”在 OSM 中被映射为一个节点。此节点是在 Nominatim (地理编码器)中搜索“太子港”时的第一个结果。osmnx 似乎期望的是一个区域,即行政边界关系。这种关系在 Nominatim 中排在第二位和第三位。如果 osmnx 找到一个节点作为第一个搜索结果,它似乎会失败。为 osmnx 创建上游错误报告。

于 2019-04-08T09:28:22.557 回答