点到边的距离

问题描述 投票:3回答:3

我正在使用NLCD数据处理一个巨大的区域,7个森林和非森林状态。在一些林区内有一个地块(这是我的硕士论文,我正在研究)。我用这个大的数据集问遍了所有的人,但我们确信有一个分辨率在那里。森林非森林区域是一个有符号和离散的栅格。我能够通过将森林区域子集出来,将森林区域变成多边形。我无法将非森林区域制作成多边形(太大)。所以我试图获得点距离(点在多边形内)到森林多边形的边缘。你有什么建议可以获得点到森林边缘的距离吗?

polygon point
3个回答
2
投票

好吧,这确实取决于几件事;具体来说,你想要哪个边缘? 你是想找到最近的边缘,还是有其他的标准来选择边缘(例如,基本方向)?

如果你想找到最近的边缘,基本上你要遍历多边形定义的所有线段,进行线段到点的距离计算;这将找到你的距离。 在Python上有一个很好的算法实现。这个 问题,那里有一些很好的算法描述。


2
投票

这里有一些代码,可以输出一个点到一个边的距离,不管这个多边形是不是凸的,是不是CCW的。你必须对所有多边形的边缘进行测试。对于一个大的边缘集来说,它可能会有点慢。

- (double) distanceFromPoint:(yourPoint)testPoint
{

double pointX = edgePointB.x - edgePointA.x;
double pointY = edgePointB.y - edgePointA.y;

double k = pointX * pointX + pointY * pointY;
double u = ((testPoint.x - edgePointA.x) * pointX + (testPoint.y - edgePointA.y) * pointY) / k;

if (u > 1)
    u = 1;
else if (u < 0)
    u = 0;

double x = edgePointA.x + (u * pointX);
double y = edgePointA.y + (u * pointY);

double dx = x - testPoint.x;
double dy = y - testPoint.y;

return sqrt((dx * dx) + (dy * dy));

}

1
投票

如果你不确定该点是否在外多边形内,先测试一下。然后,为了测试离最近的森林边缘的距离,你可以试试这样的方法。

http:/www.bdcc.co.ukGmapsBdccGeo.js

Google有很多关于 "点到多边形边缘的距离 "的结果。

© www.soinside.com 2019 - 2024. All rights reserved.