Python 获取OpenStreetMap的最大值和最小值

Python 获取OpenStreetMap的最大值和最小值,python,openstreetmap,Python,Openstreetmap,我为一个城市下载了相应的openstreetmap数据。我想得到纬度和经度的最大值和最小值。我该怎么做 我的做法如下: import osmread as osm #... def _parse_map(self): geo = [(entity.lat, entity.lon) for entity in osm.parse_file('map.osm') if isinstance(entity, osm.Node)] return max(geo[0]), min(geo[

我为一个城市下载了相应的openstreetmap数据。我想得到纬度和经度的最大值和最小值。我该怎么做

我的做法如下:

import osmread as osm
#...
def _parse_map(self):
    geo = [(entity.lat, entity.lon) for entity in osm.parse_file('map.osm') if isinstance(entity, osm.Node)]
    return max(geo[0]), min(geo[0]), max(geo[1]), min(geo[1])
但当我打印这些值时,我认为它们是不对的。当我从OpenStreetMap网站下载该区域时,我有一个白色区域,指示我正在导出哪个区域。对于这个区域,我还得到了纬度和经度的最小值和最大值。这些值与我从简单脚本中得到的值不符

我做错了什么

return max(geo[0]), min(geo[0]), max(geo[1]), min(geo[1])
您正在取
geo
的第一个和第二个元素的极值。但是
geo
是一个2元组列表。因此第一个元素
geo[0]
是一个2元组,由第一个节点的
entity.lat
entity.lon
组成。因此,您只需为一个节点选择纬度和经度的最小/最大值

如果要将列表中每个元组的第一个(第二个)元素提供给聚合函数,则必须特别选择这些元素。例如,对于发电机:

return max(x[0] for x in geo), min(x[0] for x in geo), max(x[1] for x in geo), min(x[1] for x in geo)

谢谢,这给了我很好的效果。在我在网站上绘制的边界框外可能有一些节点,但我认为这必须是在所选区域内正确显示地图。