3

私は、NLCD データを使用して、森林と非森林の 7 つの州という広大な地域で作業しています。森林地帯の一部には区画があります (これは私が取り組んでいる修士論文です)。この大規模なデータセットで質問したすべての人を困惑させましたが、そこに解決策があると確信しています. 森林/非森林エリアは、署名された個別のラスターです。森林地帯をサブセット化することで、森林地帯をポリゴンにすることができました。非森林エリアをポリゴンにできません (大きすぎます)。そのため、森林に覆われたポリゴンの端までのポイント距離 (ポイントはポリゴン内にあります) を取得しようとしていました。ポイントから森の端までの距離を取得するための提案はありますか?

4

3 に答える 3

2

多角形が凸であるかどうか、反時計回りであるかどうかにかかわらず、ポイントからエッジまでの距離を出力するコードを次に示します。すべてのポリゴンのエッジをテストする必要があります。エッジのセットが大きい場合は、少し遅くなる可能性があります。

- (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));

}
于 2013-03-18T09:31:58.840 に答える