Algorithm OpenStreetMap:获取公园的所有入口

Algorithm OpenStreetMap:获取公园的所有入口,algorithm,geometry,openstreetmap,path-finding,Algorithm,Geometry,Openstreetmap,Path Finding,我从Openstreetmap中提取了一些国家公园。但现在我想知道入口在哪里。Openstreetmap有一些标签,但并不经常使用 所以我想:进入国家公园的入口是一条穿过公园边界的道路。一定是真的:你要去公园。我能想到的唯一缺点是,它可能是一条供工作人员使用的私人道路或其他东西,但这应该是一个很小的百分比 那么,找到这些要点的最佳方法是什么 我猜:我知道公园的边界。所以我可以下载公园里的所有道路。然后,我可以在公园里的所有路段上使用这个按钮,看它是否穿过边界。当它到达时:那是一条通往公园的路。

我从Openstreetmap中提取了一些国家公园。但现在我想知道入口在哪里。Openstreetmap有一些标签,但并不经常使用

所以我想:进入国家公园的入口是一条穿过公园边界的道路。一定是真的:你要去公园。我能想到的唯一缺点是,它可能是一条供工作人员使用的私人道路或其他东西,但这应该是一个很小的百分比

那么,找到这些要点的最佳方法是什么

我猜:我知道公园的边界。所以我可以下载公园里的所有道路。然后,我可以在公园里的所有路段上使用这个按钮,看它是否穿过边界。当它到达时:那是一条通往公园的路。 然而,这可能非常缓慢。如果你有一个大公园,里面有很多道路,那么检查所有路段可能需要很长时间。
还有更聪明的方法吗?

现代计算机真的很快。光线投射算法相当便宜。除非你需要检查数十亿个点,否则这应该不是什么大问题

一个简单的优化是对公园边界线段进行排序。如果沿y轴投射光线,则在最低的x坐标上对其进行排序。
对于检查的每个点,当线段的最低x坐标大于该点的x坐标时,可以停止检查。

现代计算机速度非常快。光线投射算法相当便宜。除非你需要检查数十亿个点,否则这应该不是什么大问题

一个简单的优化是对公园边界线段进行排序。如果沿y轴投射光线,则在最低的x坐标上对其进行排序。
对于您检查的每个点,当线段的最低x坐标大于该点的x坐标时,可以停止检查。

您可以使用立交桥turbo执行此任务:以下解决方案将确定与国家公园关系边界相交的所有道路

试试在立交桥涡轮

只需导航到您感兴趣的区域并点击Run

下面简要说明此查询的工作原理:

//将搜索限制为当前边界框 [bbox:{{bbox}}]; //获取与标签边界=国家公园的所有关系 rel[边界=国家公园]; //获取此关系中的所有方式,并将其存储在inputset boundaryways中 wayr->.边界通道; //现在得到所有的高速公路,它们在边界上与我们的道路相交 周围的道路[公路]。边界道路:0; //排除标记为highway=*的道路,它们是边界关系的一部分 ._; - 边界[公路];; //打印结果 外几何;
您可以使用overpass turbo执行此任务:以下解决方案将确定与国家公园关系边界相交的所有道路

试试在立交桥涡轮

只需导航到您感兴趣的区域并点击Run

下面简要说明此查询的工作原理:

//将搜索限制为当前边界框 [bbox:{{bbox}}]; //获取与标签边界=国家公园的所有关系 rel[边界=国家公园]; //获取此关系中的所有方式,并将其存储在inputset boundaryways中 wayr->.边界通道; //现在得到所有的高速公路,它们在边界上与我们的道路相交 周围的道路[公路]。边界道路:0; //排除标记为highway=*的道路,它们是边界关系的一部分 ._; - 边界[公路];; //打印结果 外几何; 交叉柱:交叉柱: