Jak ArcGIS Desktop oblicza punkt WEWNĘTRZNY dla elementu do punktu?

11

Wróćmy i powiem, że z tego, co rozumiem, istnieją dwa typowe sposoby obliczania środka ciężkości wielokąta w ArcGIS Desktop:

  1. Korzystanie z funkcji Oblicz geometrię dla pól w tabeli atrybutów klasy obiektów.
  2. Korzystanie Data Management -> Features -> Feature to Pointz przybornika.

Oba dają ten sam wynik - geometryczny środek wieloboku. Jednak nie ma gwarancji, że punkt znajduje się wewnątrz wielokąta.

Narzędzie Feature to Point ma wewnętrzną opcję, która zgodnie z dokumentacją:

Używa lokalizacji zawartej przez element wejściowy jako lokalizacji punktu wyjściowego.

Chciałbym wiedzieć, w jaki sposób ten punkt jest obliczany przez ArcGIS Desktop i jakie jest jego „teoretyczne” znaczenie, jeśli ma to sens.

bezmyślna panda
źródło
2
Biorąc pod uwagę ogólną niejasność dokumentacji ESRI, prawdopodobnie konieczne będzie przeprowadzenie inżynierii wstecznej procedury przez przetestowanie. Kiedy zrobiłem to z AV 3.x 15 lat temu, algorytm (1) znalazł geometryczną centroid, a następnie (2) przesunął ją poziomo do najbliższego punktu wewnątrz wielokąta.
whuber
@ whuber - w tym przypadku punkt wewnętrzny może być inny, nawet jeśli sam środek ciężkości znajduje się wewnątrz wielokąta, więc myślę, że jest to zupełnie inna kalkulacja
bezmyślna.
3
Ten post na forum na stronie ESRI jest interesujący i wydaje się wskazywać na czarną skrzynkę.
mindless.panda
Korzystając z Pythona w 9.3.1, porównałem niektóre możliwe sposoby generowania „centroida”. Można zobaczyć tutaj ! na forach ESRI.
SaultDon
@mindless W starym algorytmie, jeśli środek ciężkości znajdował się wewnątrz wielokąta, oczywiście nie został przesunięty: zbiega się z najbliższym punktem wewnątrz wielokąta. Jednak znaleziony na forum post świadczy o tym, że problem: ESRI zmienił algorytm. Nie wywnioskowałbym jednak, że jest „zupełnie inny”. To może być tylko udoskonalenie starszego. Jednak inżynieria wsteczna nie będzie łatwa.
whuber

Odpowiedzi:

4

Algorytmy są zastrzeżone, ale istnieją tutaj dwie podstawowe koncepcje. Środek ciężkości wykorzystuje algorytm środka ciężkości (istnieje wiele różnych sposobów obliczania tego). Pole wyboru „wewnątrz” oblicza środek ciężkości, ale następnie przesuwa punkt do środka, jeśli wypadnie na zewnątrz, ponieważ w niektórych przypadkach jest to pożądane.

Na poziomie ArcObjects te podejścia są zdefiniowane jako Centroid i Label Point . Zobacz link Centroid na przykład obrazy.

Craig Williams
źródło
Chociaż nie mówi nam to, jak obliczany jest punkt wewnętrzny, wskazuje nam jego synonim z punktem etykiety.
mindless.panda
1

Użyliśmy ArcMap 10.3. Obliczona (1) operacja na punkt z opcją wewnętrzną (2) operacja na punkt bez środka (3) środek ciężkości poprzez obliczenie geometrii.

Punkty z (2) i (3) dzielą lokalizację, czasami te punkty znajdują się poza wielokątem. (1) tworzy punkty wewnątrz wielokątów, zgodnie z oczekiwaniami, w większości identyczne z punktami z (3) i (2). Czasami punkty z (1) są różne, nawet gdy punkty z (3) lub (2) znajdują się wewnątrz wielokąta (!): Nie możemy wykryć konieczności przesunięcia przestrzennego w celu otrzymania punktu wewnętrznego.

Przesunięte punkty z (1) nie są ściśle przesunięte w kierunku WE lub NS. Czasami niepotrzebnie przesunięte punkty są lokalizowane jako nowe w położeniu zdecydowanie nie reprezentującym punktu ciężkości i są nieoczekiwane.

Prace naukowe muszą być powtarzalne. Nie możemy znaleźć dokumentacji dla algorytmu ani wyjaśnić zmiany, szczególnie tam, gdzie nie jest to konieczne. Dlatego centroid z funkcją ESRI nie ma zastosowania.

Christoph
źródło