GPS 到 OpenStreetMaps 中的 id 匹配
GPS to way id matching in OpenStreetMaps
我有这样的问题:我有一个纬度、经度对列表,对于其中的每一个,我想知道它是在哪种类型的道路上生成的。
所有点均来自在 public 道路上行驶的汽车的 GPS 装置。
我已经下载了OpenStreetMap .osm export,其中道路存储格式如下:
<way id="88596345" visible="true" version="9" changeset="453983438" timestamp="2017-05-04T15:47:48Z" user="wegavision" uid="453845">
<nd ref="456877786"/>
<nd ref="3335483999"/>
<nd ref="248335839"/>
<nd ref="406453920"/>
<nd ref="25808860"/>
<tag k="destination" v="abcd"/>
<tag k="highway" v="secondary"/>
<tag k="lanes" v="1"/>
<tag k="lit" v="yes"/>
<tag k="maxspeed" v="30"/>
<tag k="oneway" v="yes"/>
<tag k="ref" v="M54"/>
<tag k="sidewalk" v="left"/>
<tag k="smoothness" v="good"/>
<tag k="surface" v="asphalt"/>
</way>
现在我的问题是,是否有任何工具可以找到 GPS 坐标和这条路 ID 之间的匹配项?这是如何使用 OpenStreetMaps 完成的?
好吧,最后我是这样想的:
首先,我在我的 Ubuntu 机器上安装了一个 Overpass API 并在那里加载了下载的 .osm。然后我可以像这样查询加载的 .osm 文件:
/some_path/osm-3s_v0.7.54/bin/osm3s_query --db-dir=/some_path/osm-3s_v0.7.54/mydb <<< "way['highway'](around:10,'_GPSLAT_,_GPSLON_');out;"
这返回了一个 XML 字符串,我可以在其中解析路径 ID。
此方法的主要问题是,当您的 GPS 点靠近多条道路时,您会收到包含多个道路 ID 的 XML 响应。在我的解决方案中,我完全忽略了这一点,我可以接受这可能带来的任何错误。由于我的数据集非常大且密集,我认为所犯的错误不会很严重,早期的实验证明我是对的。
我有这样的问题:我有一个纬度、经度对列表,对于其中的每一个,我想知道它是在哪种类型的道路上生成的。 所有点均来自在 public 道路上行驶的汽车的 GPS 装置。
我已经下载了OpenStreetMap .osm export,其中道路存储格式如下:
<way id="88596345" visible="true" version="9" changeset="453983438" timestamp="2017-05-04T15:47:48Z" user="wegavision" uid="453845">
<nd ref="456877786"/>
<nd ref="3335483999"/>
<nd ref="248335839"/>
<nd ref="406453920"/>
<nd ref="25808860"/>
<tag k="destination" v="abcd"/>
<tag k="highway" v="secondary"/>
<tag k="lanes" v="1"/>
<tag k="lit" v="yes"/>
<tag k="maxspeed" v="30"/>
<tag k="oneway" v="yes"/>
<tag k="ref" v="M54"/>
<tag k="sidewalk" v="left"/>
<tag k="smoothness" v="good"/>
<tag k="surface" v="asphalt"/>
</way>
现在我的问题是,是否有任何工具可以找到 GPS 坐标和这条路 ID 之间的匹配项?这是如何使用 OpenStreetMaps 完成的?
好吧,最后我是这样想的:
首先,我在我的 Ubuntu 机器上安装了一个 Overpass API 并在那里加载了下载的 .osm。然后我可以像这样查询加载的 .osm 文件:
/some_path/osm-3s_v0.7.54/bin/osm3s_query --db-dir=/some_path/osm-3s_v0.7.54/mydb <<< "way['highway'](around:10,'_GPSLAT_,_GPSLON_');out;"
这返回了一个 XML 字符串,我可以在其中解析路径 ID。
此方法的主要问题是,当您的 GPS 点靠近多条道路时,您会收到包含多个道路 ID 的 XML 响应。在我的解决方案中,我完全忽略了这一点,我可以接受这可能带来的任何错误。由于我的数据集非常大且密集,我认为所犯的错误不会很严重,早期的实验证明我是对的。