我有一个数据集,其中包含一些元素的纬度和经度。我正在尝试获取特定纬度经度周围所有便利设施的信息。我已经使用了天桥查询,我能够提取便利设施。但是,我希望在python查询中使用直接下载的OSM.pbf文件。我可以使用以下查询提取特定纬度经度值的所有便利设施
import esy.osm.pbf
osm = esy.osm.pbf.File('california-latest.osm.pbf')
amenities = [entry for entry in osm if entry.tags.get('amenity')]在此之后,我能够通过lonlat值并获得便利设施。我是否可以在代码中传递半径、经度和纬度值来获取所需的信息
使用天桥查询的代码。我想使用上面的方法复制以下代码
import overpy
amenities = []
for latitude,longitude in zip(Dataset_Sample.Latitude, Dataset_Sample.Longitude):
overpass_query = """[out:json][timeout:25]; node["amenity"](around:1000.0,"""+ str(latitude) + "," +str(longitude)+"); out;"
response = requests.get(overpass_url, params={'data': overpass_query})
response_json = response.json()
amenities.append([element['tags']['amenity'] for element in response_json['elements']])发布于 2021-06-18 03:49:58
第一个元素展开对象的结构(esy.osm.pbf.file.Node):
amenities[0]当您仔细观察时,您会发现tags本身就是Node对象中的一个dict:
type(amenities[0].tags) # := dictlonglat也是如此!(tuple inside Node):
type(amenities[0].longlat) # := tuple因此,假设您正在寻找“确切的”坐标(long, lat),您只需运行以下代码:
for entry in osm :
if entry.loglat == (long, lat)
target = entry
break并且您已经在target中找到了您正在寻找的Node。我猜你已经明白了,并且知道如何寻找类似的坐标(使用regex等)。
https://stackoverflow.com/questions/59809556
复制相似问题