Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OSMnx:在“中指定位置”;gdf“从“U place”出发”;更好的_Python_Osmnx - Fatal编程技术网

Python OSMnx:在“中指定位置”;gdf“从“U place”出发”;更好的

Python OSMnx:在“中指定位置”;gdf“从“U place”出发”;更好的,python,osmnx,Python,Osmnx,我在Python中使用OSMnx来获取状态的几何图形(例如奥地利)。但是,OSMnx有时会选择错误的OSM对象作为位置。我可以使用OSM对象的ID指定它吗 示例: 我使用Overpasspi获得奥地利各州的名称: (area["ISO3166-1"="{country}"];rel(area)[admin_level="{adminLevel}"];); out center meta; 这给了我一份州的名单: @id @lat @lon name 35183 47.21993

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

示例:

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

(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放入查询中,使其明确无误。有什么方法可以做到这一点吗?

OSMnx不接受OSM ID,但您可以指定您想要的是城市还是州(甚至是
哪个结果
):

编辑:请注意,自OSMnx v0.15.0起,
gdf_from_place
gdf_from_places
功能已被弃用,并被
geocode_to_gdf
功能取代。有关详细信息,请参阅

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