如何用Overpass Turbo经纬度查询并提取州及邮政编码特定标签
使用Overpass根据经纬度提取州名和邮政编码
问题分析
你当前的查询会返回经纬度所在位置的所有父级地理元素,但未过滤特定类型的区域,导致结果冗余。要精准提取州名和邮政编码,需要针对OpenStreetMap的标签规则过滤元素,并指定输出内容。
解决方案
1. 提取州名(以美国为例)
美国的州对应admin_level=4的区域,通过过滤该属性并仅输出标签,可直接获取州名:
[out:json]; is_in(39.767145, -86.158836); area["admin_level"="4"]; out tags;
返回结果会包含州的name标签(如"Indiana")。
2. 提取邮政编码
邮政编码对应place=postal_code的区域,提取其postal_code标签即可:
[out:json]; is_in(39.767145, -86.158836); area["place"="postal_code"]; out tags;
返回结果会包含邮政编码值(如"46202")。
3. 合并查询同时获取两者
可以把两个查询合并,一次获取州名和邮政编码:
[out:json]; is_in(39.767145, -86.158836); ( area["admin_level"="4"]; area["place"="postal_code"]; ); out tags;
关键说明
out tags:仅输出元素的标签信息,避免返回冗余的几何数据或无关属性。- 不同国家的地理标签规则可能不同:比如部分国家的州/省对应
admin_level=6,需根据目标区域调整admin_level值。 - 确保OpenStreetMap数据中该位置的州和邮政编码信息已完善,否则可能返回空结果。
内容的提问来源于stack exchange,提问作者Andrew Littell
相关产品推荐
相关产品推荐

