发表用户:讨论贴
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=4&ID=2932
信息原始来源:James MapInfo技术论坛

文章标题:求一点到一个featrue的最近点和最近距离?

fym37

和大家探讨一个算法
      已知一点和一个feature对象  
      求这个点到feature的最短距离和最近点(这个最近点不一定是节点了)?
现在有个方法,就是以这个点为圆心,半径逐渐放大,直到发现这个园与feature相交为止。(当然可以设置最大的圆半径,例如可以设置为这个点到feature中心点的距离) 

jsliuyun

如果featrue是圆的画,圆的半径=已知一点和一个feature对象中心点的距离-feature的半径

再以已知一点为圆心,用圆的半径与feature对象用相交测试,可以得到点的坐标

fym37

feature大多数是不规则多边行。麻烦呢

starfeng

将feature中所有的折点列出, 然后化成直线集合
再求点到每一直线的最短距离,设为min[1],min[2]....
点到feature的最小距离就是min的中最小值

点最直线的最短距离的逻辑,有一个方程式,高中的书上就有。

fym37

starfeng的方法可以解决这个问题。各位大侠还要别的办法吗?

mapxcoder

高见!

fym37

看来慢慢实现了,特殊情况满多的。实现好了把代码贴出来