gpt4 book ai didi

python - 获取 OpenStreetMap map 的最大值和最小值

转载 作者:行者123 更新时间:2023-12-01 05:25:15 25 4
gpt4 key购买 nike

我为一个城市下载了相应的 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是一个二元组列表。因此,第一个元素 geo[0] 是一个 2 元组,由第一个节点的 entity.latentity.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)

关于python - 获取 OpenStreetMap map 的最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21486212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com