3

我在 Python 中使用 OSMnx 来获取状态的几何形状(例如奥地利)。但是,OSMnx 有时会选择错误的 OSM 对象作为位置。我可以使用其 ID 指定 OSM 对象吗?

例子:

我使用 OverpassAPI 获得奥地利各州的名称:

(area["ISO3166-1"="{country}"];rel(area)[admin_level="{adminLevel}"];);
out center meta;

这给了我状态列表:

@id @lat    @lon    name
35183   47.2199394  14.8675619  Steiermark
52343   47.1971981  11.5319171  Tirol
52345   46.7517868  13.8605291  Kärnten
74942   47.2184818  9.8839555   Vorarlberg
76909   47.4746574  16.5785134  Burgenland
77189   48.2213684  15.7607387  Niederösterreich
86539   47.4926636  13.0361103  Salzburg
102303  48.1168383  13.8707061  Oberösterreich
109166  48.2202874  16.3796721  Wien

但是当我使用 OSMnx 来获取“萨尔茨堡”的几何图形时,我得到的是一个点而不是一个多边形。

>>> outline = osmnx.gdf_from_place("Salzburg")

geometry    place_name
POINT (13.0464806 7.7981346)    Salzburg, 5020, Austria

由于“萨尔茨堡”既是一个城市也是一个州,我想将 OSM ID 放入查询中以使其明确。有没有办法做到这一点?

4

1 回答 1

1

OSMnx 不采用 OSM ID,但您可以指定您想要城市还是州(甚至which_result):

import osmnx as ox
outline_city = ox.gdf_from_place({'city':'Salzburg'})
outline_state = ox.gdf_from_place({'state':'Salzburg'})

编辑:请注意,从 OSMnx v0.15.0 开始,gdf_from_placeandgdf_from_places函数已被弃用并被该geocode_to_gdf函数取代。有关详细信息,请参阅文档

于 2019-03-01T18:58:01.167 回答