Jak sprawdzić, czy wielokąt ma dziurę za pomocą kalkulatora pola w ArcGIS
10
Niektóre programy innych firm nie obsługują wielokątów z dziurami (wielokąty pierścieniowe). Aby je znaleźć, zawsze używam kalkulatora pola ArcView 3, ponieważ:
jednak gdy próbuję to zrobić w ArcGIS, otrzymuję to:
Byłem zaskoczony, że partcount nie działał zgodnie z oczekiwaniami, więc zacząłem kopać. Okazuje się, że pozornie pączki mogą czasami (?) Być elementami pojedynczymi z pierścieniami wewnętrznymi - zobacz zdanie / grafikę przed ostatnim blokiem kodu na tej stronie . Widziałem też wątek o skrypcie, który wykrywa je w pythonie, ale nie w kalkulatorze polowym.
Mogę to zrobić za pomocą bloku kodu, ale jest brzydka. Główne linie prt = shp.getPart (0) feat = arcpy.Polygon (prt). Wystarczy obliczyć feat.area i porównać ją z shp.area
Powiązany zasób: gis.stackexchange.com/questions/27255 Twoje rozwiązanie do porównywania obszarów może być brzydkie, ale wydaje się, że działa i działa w obrębie kalkulatora pola. Być może warto opublikować jako odpowiedź.
Liczba części nie da poprawnej odpowiedzi . Możesz mieć wieloczęściowy wielokąt bez otworów. Zobacz poniższy scenariusz.
Byłoby to proste zapytanie sprzed ArcGIS 10, ponieważ można było wywołać ArcObjects, aby zapytać, czy wielokąt ma dziurę, ale ESRI usunął wiele z tego wsparcia w środowisku VBScripting do tego stopnia, że jest teraz całkiem bezużyteczne, naprawdę wstyd ...
W każdym razie możesz rozwiązać to pytanie za pomocą jakiegoś Pythona:
def hasHole(geom):
parts = geom.partCount
boundaries = geom.boundary().partCount
if boundaries > parts:return1else:return0
Czy odnosisz się do różnicy między tymi dwoma wyrażeniami? Jeśli tak, wygląda na to, że dolny używa Pythona jako parsera, podczas gdy ten na górze używa VB. Aby to zmienić w oknie Kalkulatora pola w ArcGIS, wystarczy wybrać VB zamiast Python, a górne wyrażenie powinno działać.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.