Bestimmen des längsten Liniensegments innerhalb des Polygons, das durch seinen Schwerpunkt verläuft?

8

Ein Doktorand kam kürzlich auf mich zu und fragte, wie man die längste gerade Linie bestimmen würde, die durch den Schwerpunkt eines Polygons verläuft. Die Ausgabe ist eine Polylinie und nicht nur eine Zahlentabelle. Die Polylinie würde sich innerhalb des Polygons befinden, beginnend an der Kante an einem Ende, durch den Schwerpunkt verlaufend und dann an der gegenüberliegenden Kante endend.

Weiß jemand, wie man das berechnet?

Ich bin überrascht (aber ich glaube, ich zeige meine Unwissenheit), dass dies keine Schnittstelle in ArcObjects ist.

Das Polygon stellt die Kraterkante eines Vulkans ohne Inseln dar, sodass das Polygon eine unregelmäßige Form haben kann.

Hornbydd
quelle

Antworten:

11

Ein Radial-Sweep-Algorithmus reicht aus, Duncan. Beachten Sie, dass der Schwerpunkt außerhalb des Polygons liegen kann, daher gibt es in solchen Fällen keine Lösung. Beachten Sie auch, dass diese Konstruktion seltsam ist: Während der Schwerpunkt eine globale Eigenschaft des Polygons ist, ist die Linie, die Sie erstellen, eine lokale Eigenschaft des Polygons in der Nähe dieses Schwerpunkts. Die Kombination ist für die meisten geometrischen oder physikalischen Analysen nicht sinnvoll, bei denen das Polygon möglicherweise in Bezug auf seinen Schwerpunkt nicht konvex oder nicht sternförmig sein kann. (Dies erklärt, warum Sie es weder in ArcObjects noch wahrscheinlich irgendwo anders finden.) Möglicherweise fragen Sie den Schüler eingehender, um herauszufinden, was er mit dieser Konstruktion versucht, um sicherzustellen, dass sie den beabsichtigten Zweck erfüllt .

whuber
quelle
1
Wow danke für die mega schnelle Antwort! Sie haben mir beide einige Schlüsselwörter zum Nachschlagen gegeben. "Radial Sweep" klingt komplex ...
Hornbydd
Beachten Sie auch, dass es Polygone gibt, bei denen es keine "längste gerade Linie" gibt. Stattdessen kann es viele mögliche Zeilen geben. [[Ich wette auch $ 1, dass der betreffende Student eine (n) Transect-Umfrage (n) entwirft.]]
Dan S.
@ Hornbydd: Es gibt Komplexe und es gibt Komplexe. Das Implementieren eines radialen Sweeps ist in Bezug auf die rechnerische Geometrie nicht allzu schwierig, aber das erstmalige Eintauchen in das Schreiben von rechnerischem Geometriecode kann einschüchternd sein. Ich würde gerne einen Pseudocode für Sie eingeben, wenn Sie einen Ausgangspunkt wünschen.
Dan S.
Dan, ich schätze dein Angebot, aber ich bin nicht der Betreuer der Studenten, sondern nur ein zufälliger Typ, den sie kontaktiert hat. Als GIS-Entwickler wäre es zwar interessant, einen Pseudocode zu sehen, um die Grundidee eines radialen Sweeps zu erhalten, aber bitte verbringen Sie keine Zeit damit, da Sie mir bereits einige Hinweise gegeben haben, die sehr geschätzt werden.
Hornbydd
2
In einem leichteren Ton habe ich meine Frage auf dieser Seite gepostet, gesehen, wie Whubers Antwort losging und einen Kaffee kochte, zurückkam, in Google "Radial Sweep Polygon Centroid" tippte und sofort auf diese Seite zurückkam! Wie um alles in der Welt hat Google diese Seite so schnell gefunden und in ihre Suche integriert?
Hornbydd