我有一组点作为shapefile,我想找到一个新点(坐标),该点与每个现有点的距离最长。那可能吗?如果是,是否有任何示例VB代码?感谢Demetris
我有一组点作为shapefile,我想找到一个新点(坐标),该点与每个现有点的距离最长。那可能吗?如果是,是否有任何示例VB代码?感谢Demetris
Answers:
柯克·库肯达尔(Kirk Kuykendall)建议构造一个球面Voronoi图(蒂森多边形)是一个很好的建议,但可能有一些技术难题需要解决。同时,作为替代,一个人可以应用另一个线程中描述的标准栅格解决方案。使用球面距离而不是欧几里得距离。
这是一个使用五个点的示例,这里给出了(lat,lon):
82.7051 -145.256
60.3321 81.2881
-17.076 105.125
-38.792 -122.686
0.000 180.000
该球面距离图的水平范围是-180至180度,垂直范围是-90至90度。这些点显示有大的红点。距离随亮度增加。明显的山脊一定是大圆圈的一部分。(-15.3268,-2.04352)附近的小黑点表示最大距离为11,227 km。(距离在ITRF00椭球基准中计算。)
该网格的分辨率为1度。为了获得更精确的解决方案,可以放大到这样一个点(以及具有与全局最大值足够接近的值的任何其他局部最大值),然后在较小但分辨率更高的网格上重复该计算。
我从没有尝试过,但似乎可行:
创建3D voronoi图球。由此产生的多边形将大致以原始现有(种子)点为中心。
循环遍历每个结果顶点,以找到离其最近的现有点最远的那个顶点。这一点应该是地球上最遥远的一点。
您可以使用成本加权距离函数来确定栅格中每个像元与所有其他点的距离。
到您的一组点中最远的点就是该组中最内部的点的倒数。例如,如果您集合中最里面的点的坐标为北49度,东为-144度,则倒数和最远点的坐标为南49度和西36度。这并非完全正确,因为地球不是完美的球形,而是大地水准面。因此,结果点的正确性在很大程度上取决于您使用的投影和地理系统(正交,正射...)。找到整个集合的倒数(为一个集合传送对映体),然后在对映体集覆盖的地形内进行表面分析可能会有所帮助,因为地形可能会非常好。我认为您的问题不是关于地球外物体(例如其他行星或卫星)的任何问题。抱歉,我没有适合您的VB代码。🙄