高速公路上的经纬度出口,例如 US 101 表示在 N-S 方向排列

Lat-Long of exits on a Freeway e.g US 101 say arranged in N-S direction

我正在尝试查找 US 101 出口上的所有出口,最好使用 OpenGIS osm2pgsql 从北到南的顺序。但到目前为止运气不好。

关闭我找到的解决办法是: 接近 SQL:

select osm_id, name, ref from planet_osm_roads where highway='motorway_link';

查询:

select osm_id, name, ref from planet_osm_roads where highway='motorway'; 

Returns 有很多带 ref 的节点,但我不认为这些是高速公路出口(高速公路上标注的点有什么特别之处,其中 highway="motorway"?

然而,大多数出口的名称和编号都是空的,所以虽然我有出口经纬度,但不清楚这些出口在哪条高速公路上,也没有命令说从北到南..

请帮忙。

在 OSM 数据中,高速公路出口被标记为 highway=motorway_junction,它是点的类型,因此:

select * 
from planet_osm_point 
where highway = 'motorway_junction' 
 and ref = '101' 
order by ST_Y(way) desc

如果空ref在这一点上有问题你也可以检查是否有指定ref的高速公路(当然这不是100%的方法但总比没有方法好)

select * 
from planet_osm_point p 
where highway = 'motorway_junction' 
 and exists (
  select 1 
  from planet_osm_lines l 
  where st_DWithin(l.way::geography, p.way::geography, 100)
   and highway = 'motorway'
   and ref = '101')
order by ST_Y(way) desc

您可以 运行 一个 Overpass 查询,它为您提供所有标记为 highway=motorway_link 的方式,这些方式连接到标记为 [ref="US 101"] 的方式:

[timeout:60][bbox:19.56,-132.63,51.62,-56.60];
way[highway][ref="US 101"];
node(w);
way(bn)[highway=motorway_link];
out center;

然后您可以将数据导出为 GeoJSON。