Python 获取OpenStreetMap的最大值和最小值
我为一个城市下载了相应的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[
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)
谢谢,这给了我很好的效果。在我在网站上绘制的边界框外可能有一些节点,但我认为这必须是在所选区域内正确显示地图。