首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用地理位置数据搜索"motorway_junction“点,并创建带有描述的配置文件(awk)

使用地理位置数据搜索"motorway_junction“点,并创建带有描述的配置文件(awk)
EN

Stack Overflow用户
提问于 2021-03-03 09:30:06
回答 1查看 54关注 0票数 1

我正在为导航软件准备一个配置文件。我需要一个and motorway_junction点的列表,并列出它们的名称、里程碑(如果有)和出口(如果有)。

我想,用awk是有可能的。

它应该是一个如下的输出结构:

代码语言:javascript
复制
IDX,X,Y,TYPE,SPEED,DirType,Direction // $TYPE=“|milestone| name | exit_to“

openstreetmap输入文件中的示例节点有一个结构:

代码语言:javascript
复制
<node id="146994270" version="12" timestamp="2016-09-13T14:08:42Z" lat="50.4589679" lon="18.2668417">
<tag k="name" v="Kędzierzyn-Koźle"/>
<tag k="highway" v="motorway_junction"/>
<tag k="milestone" v="272"/> 
</node>

脚本必须搜索带有标记的节点。

代码语言:javascript
复制
<tag k="highway" v="motorway_junction"/>

如果找到,请在此节点中读取以下值:

Description

  • exit_to Description

  • milestones值→

  • →X

→Y

  • id→类型

  • name value→value→Description

F 216

提示:并非所有motorway_junction节点都有值里程碑、名称或exit_to

脚本应该有以下变量

  • $IDX=→0
  • $SPEED=→60
  • $DirType=→1

这种情况下的“愿望输出”:

代码语言:javascript
复制
0,18.2668417,50.4589679,146994270,60,1,1 // $146994270=“|272| Kędzierzyn-Koźle“

exit_to的另一个例子

代码语言:javascript
复制
"Note: I'm not really sure where SPEED, $DirType, and $Driection are supposed to come from?"

只需手动操作,就需要这些值,但不会显示值。

“而且,在您的预期输出中,您不使用exit_to值。”在现实中是motorway_junction点本身,但有时在这一点上是更多的出口。一个更好的例子:

代码语言:javascript
复制
<node id="254705885" version="18" timestamp="2018-10-02T15:30:49Z" lat="53.3416624" lon="14.4562602">
<tag k="name" v="Szczecin Zachód"/>
<tag k="exit_to" v="Kołbaskowo;Szczecin;Rosówek;Schwedt"/>
<tag k="highway" v="motorway_junction"/>
</node>

exit_to的预期输出(但这里是里程碑标记“空”)

代码语言:javascript
复制
0,14.4562602,53.3416624,254705885,60,1,1 // $254705885=“Szczecin Zachód | Kołbaskowo;Szczecin;Rosówek;Schwedt“

稍后,在第二步中,文本变量作为屏蔽:https://vk.com/@bydmapl-motorwayjunction上的格式化文本出现。

EN

回答 1

Stack Overflow用户

发布于 2021-03-03 10:00:26

这不是awk,而是您处理的数据看起来与HTML解析器(如BeautifulSoup )完美匹配。

这是我对你用Python3写的任务的看法。

注意:我不太确定SPEED$DirType$Driection应该从哪里来?另外,在您的预期输出中,您不使用exit_to值。

代码语言:javascript
复制
from bs4 import BeautifulSoup

sample = """<node id="146994270" version="12" timestamp="2016-09-13T14:08:42Z" lat="50.4589679" lon="18.2668417">
<tag k="name" v="Kędzierzyn-Koźle"/>
<tag k="highway" v="motorway_junction"/>
<tag k="milestone" v="272"/> 
</node>"""

nodes = BeautifulSoup(sample, "html.parser").find_all("node")

speed, dir_type, direction = 60, 1, 1
for idx, node in enumerate(nodes):
    _id, lat, lon = node["id"], node["lat"], node["lon"]
    name, exit_to, milestone = [v["v"] for v in node.find_all("tag")]

    template_left = f"{idx},{lon},{lat},{_id},{speed},{dir_type},{direction}"
    template_right = f"${_id}='|{milestone}| {name}'"

    print(f"{template_left} // {template_right}")

这些指纹:

代码语言:javascript
复制
0,18.2668417,50.4589679,146994270,60,1,1 // $146994270='|272| Kędzierzyn-Koźle'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66454227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档