我正在使用NLCD数据处理一个巨大的区域,森林和非森林的7个州。在一些林区内有一块地块(这是我正在写的硕士论文)。我已经用这个庞大的数据集难住了我问过的每个人,但我们确信有一个解决方案。森林/非森林区域是有符号的离散栅格。我能够通过划分森林区域将森林区域划分为多边形。我不能把非森林区域变成多边形(太大了)。所以我试着得到点的距离(点在多边形内)到森林多边形的边缘。你有什么建议可以得到一个点到森林边缘的距离吗?
发布于 2009-05-22 00:18:17
好吧,这确实取决于几件事;具体地说,你想要哪条边?是否要查找最近的边,或者是否有一些其他条件可用于选择边(例如,基数方向)?
如果你想找到最近的边,你基本上想要迭代多边形定义的所有线段,执行线段到点的距离计算;这将找到你的距离。在Python语言中有关于this问题的算法的很好的实现,并且有一些关于算法的很好的描述。
发布于 2013-03-18 17:31:59
下面是一些代码,用于输出点到边的距离,无论多边形是不是凸的,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));
}发布于 2009-05-22 00:21:57
如果您不确定该点是否在外部多边形内,请首先对其进行测试。然后,要测试到最近的森林边缘的距离,可以尝试如下所示:
http://www.bdcc.co.uk/Gmaps/BdccGeo.js
Google有大量关于“从点到多边形边缘的距离”的结果。
https://stackoverflow.com/questions/895900
复制相似问题