Mer

Reiseplanlegging - Finne de lengste punktene i en polygon


Jeg vil organisere en tur rundt innsjøen med 2 mål:

  • maksimere lengden på kyster å se
  • minimere reiseavstand

For å gjøre det kan jeg:

  1. Velg to mest fjerntliggende punkter på innsjøen når det gjelder reiseavstand
  2. Definer "venstre" og "høyre" bredden av innsjøen
  3. Reise i lik avstand mellom kyster fra A til B

Hva er den beste måten å finne disse 2 punktene?

OPPDATERING OM ORIGINAL Q:

Tilnærmingen jeg bruker er å plassere flere tilfeldige punkter og beregne det euklidiske minimumstrekket.

Iterere gjennom alle par punkter/noder for å finne et par med lengst avstand. Bildet viser avstanden der destinasjonen er punktet i nord. Det fungerer, men litt tungvint, så jeg leter etter ideer. Raster eller vektor vil gjøre.

Dette handler om å aldri slutte diskusjon om polygonlengde.


Ikke-konveks polygon

Du bør tegne Medial Axis Transform (skjelett eller midtlinje) til polygonen. Alternativer for å gjøre dette:

  1. Lag senterlinjer

  2. bruk CGAL med bueobjekter

Bruk deretter senterlinjene til å beregne nettverksbasert avstand mellom to punkter og finn de lengste.

Konveks polygon

Den enkleste, om enn ikke den mest effektive måten, er å beregne (arcpy) parvise avstander mellom hver toppunkt i polygonfunksjonen (Lake) og trekke ut den største. Kompleksiteten ville være o (n^2), med n antall hjørner, for hver polygon.

Hvis du ikke vil gjøre koding (python), kan du lage en modell med:

  1. Feature To Point GP -verktøy
  2. DISTANCE BETWEEN POINTS TOOL (fra Hawths analyseverktøy)

Lignende spørsmål

Hvordan beregne rette skjeletter ved hjelp av Python?

Forenkling av polygoner til linestreng

Finn tunnelen 'senterlinje'?


Se videoen: CIV181012 - M08S03 - Syarat Geometris Poligon (September 2021).