圣盖博山脉的难以到达极点
摘要
一篇博客文章描述了使用Voronoi图方法,结合OpenStreetMap道路和步道数据,计算圣盖博山脉的难以到达极点,并在GitHub仓库中分享了相关代码。
暂无内容
查看缓存全文
缓存时间: 2026/08/06 17:03
# 圣盖博山脉中的难达极点
来源:https://notes.secretsauce.net/notes/2015/05/06_poles-of-inaccessibility-in-the-san-gabriel-mountains.html
话说我和一位朋友外出徒步时,聊起了一个问题:圣盖博山脉(San Gabriel Mountains)中最难以到达的地方在哪里?这里“可到达”的定义是附近有道路或小径。我决定回答这个问题。相关代码放在一个新仓库中:https://github.com/dkogan/inaccessibility。
这被称为“难达极点”(Pole of Inaccessibility,http://en.wikipedia.org/wiki/Pole_of_inaccessibility):即距离给定对象集合尽可能远的点。这类极点已知的有地球上最内陆的地点,或离陆地最远的地点。这里我们把范围限制在圣盖博山脉,并尽量远离道路和小径。
## 方法
### 输入数据处理
OpenStreetMap(http://www.openstreetmap.org/)拥有开放数据,可以用来绘制所有道路和小径。这就是输入数据集。
对于二维几何,计算难达极点最好的方法似乎是构建我们试图远离的几何对象的 Voronoi 图(http://en.wikipedia.org/wiki/Voronoi_diagram),然后找到对应最远点的 Voronoi 顶点。
我们的世界并不是二维的;事实上,地球是一个椭球体,上面还有起伏的地形。这里的主要目的是算出一个身强力壮的人能去的地方,并告诉所有人他们做到了,因此不需要极高的精度。所以我认为,假设世界是局部平坦的,并用基于 Voronoi 图的方法就足够了。于是,我构造一个最能描述查询区域的平面,把所有输入点投影到这个平面上。这个平面在查询区域中心与地球表面相切。如果要找像海洋那样大范围的难达极点,这显然行不通,但在这里没问题。
为了计算切平面,我假设地球是球形的。随着我沿着切平面远离切点,高程误差会增大:
E = sqrt(R_earth² + d²) - R_earth
圣盖博山脉跨度约80公里,而切平面位于中间,所以最坏情况下 d = 40公里,误差约为125米。这已经足够好了。图示(源文件:https://notes.secretsauce.net/notes/2015/05/06_poles-of-inaccessibility-in-the-san-gabriel-mountains/plot_flat_earth_error.gp):
plot_flat_earth_error.svg
我完全忽略地球的椭球形状,也忽略地形;因为如果把地形纳入距离度量,就需要比生成 Voronoi 图更复杂的算法,而且会把“难以到达”这个概念弄得更模糊。
### 难达极点的计算
我想使用最基础的 Voronoi 算法,所以输入只表示为点的集合,而不是线段。为了保证合理的精度,我确保每条道路至少每100米采样一次。
现在,在获得了足够密集的二维点集之后,我构造 Voronoi 图。如果不加约束,最远的点会跑到某一侧无穷远的地方,所以人们通常会把解限制在输入点的凸包内。这意味着难达极点要么位于某个 Voronoi 顶点,要么位于 Voronoi 边与输入凸包的交点处。在我的情形中,查询区域边缘的道路通常比内部多(山里的东西比平地少),所以我直接假设难达极点不在凸包上。这简化了实现,因为我只需要忽略查询区域之外的所有 Voronoi 顶点。
因此,我需要检查每个 Voronoi 顶点,计算它与相邻输入点之间的距离,并返回距离最大的那个顶点。
## 实现
流程中的每一步都是一个独立的程序。这简化了实现,也方便分别处理每个部分。
### 数据导入
首先查询 OSM。这是通过 `query.sh` 脚本完成的。它接收查询区域的角点
相似文章
Show HN: Isopolis – 旧金山等距像素地图
Isopolis 是基于 OpenStreetMap 和 CARTO 数据构建的旧金山等距像素地图,其中社区边界来自 DataSF。
如何阻止数据中心落户后院
蒙特利公园居民通过SGV Progressive Action组织起来,借助公开记录申请、大规模出席市议会会议并揭露程序漏洞,成功阻止了一座计划建在距住宅仅500英尺处的25万平方英尺数据中心。
圆形障碍物路径寻找
解释如何使用 A* 算法在圆形障碍物周围进行路径寻找,通过将环境转换为使用切线可见性和双切线构建的图。
OmniPath:用于审计轮椅无障碍性的多模态代理框架
OmniPath是一个多模态代理框架,结合了OpenStreetMap网络拓扑与航空LiDAR数据,通过高分辨率分析坡度、表面不连续等物理障碍来审计轮椅无障碍性,并经过实地调查验证。
分区引导的距离显著性:在多目标优化中连接决策空间与目标空间
提出分区引导的距离显著性(PGDS),一种新颖的多目标优化XAI框架,利用几何直觉解释决策变量如何影响目标空间接近度,在10目标基准测试和一个物理信息工程问题上得到验证。