Spark读取OpenStreetMap数据时如何访问Tags字段筛选指定城市
筛选指定城市的实现方法
OSM中城市类relation实体的标签有固定规则:tags字段中会包含place: city的键值对标记实体类型为城市,城市名称默认存储在name键中,多语言版本名称可以通过name:语言代码键获取,比如中文名称对应name:zh。
你使用的是Spark框架处理ORC数据,框架中Map类型的字段可以直接通过字段名['键名']的语法访问指定键对应的值,具体实现代码如下:
1. 筛选所有城市级relation实体
all_cities = nlorc.filter( (nlorc.type == "relation") & (nlorc.tags["place"] == "city") )
2. 筛选指定名称的目标城市
# 替换为你需要查询的城市实际名称即可 target_city = nlorc.filter( (nlorc.type == "relation") & (nlorc.tags["place"] == "city") & (nlorc.tags["name"] == "目标城市名称") )
结果验证
如果需要确认筛选结果是否正确,可以执行以下语句查看对应记录的核心信息:
target_city.select("id", "tags", "members").show(truncate=False)
内容的提问来源于stack exchange,提问作者gilianzz
相关产品推荐
相关产品推荐

