Piszę skrypt Pythona dla ArcGIS 10.3. Wiem o Scale tool
interfejsie ArcGIS, ale nie mogę znaleźć takiego polecenia. Istnieje?
Jak widać na zdjęciu, Scale tool
działa on inaczej niż Buffer tool
- zmienia formę oryginalnego wielokąta. Pytanie brzmi:
Czy mogę korzystać Scale tool
(dostępne z interfejsu ArcGIS) za pomocą Arcpy?
arcgis-desktop
arcpy
polygon
Mr. Che
źródło
źródło
Odpowiedzi:
Nie znam niczego w Arcpy API, które wykonałoby skalowanie za ciebie, ale napisanie funkcji, która by to zrobiła, byłoby stosunkowo proste.
Poniższy kod wykonuje skalowanie elementów 2D i nie uwzględnia wartości M ani Z:
Możesz to nazwać obiektem geometrycznym, współczynnikiem skali (1 = taki sam rozmiar, 0,5 = pół rozmiaru, 5 = 5 razy większy itp.) I opcjonalnym punktem odniesienia:
Użyj tego w połączeniu z kursorami, aby skalować całą klasę obiektów, zakładając, że docelowa klasa obiektów już istnieje:
edycja: oto przykład z przybliżeniem twojej geometrii testowej, 0,5 i 5 razy:
Przetestowano również z wielokątami wielokątnymi (dziurami)!
Wyjaśnienie, zgodnie z prośbą:
scale_geom
pobiera pojedynczy wielokąt i zapętla się przez każdy wierzchołek, mierząc odległość od niego do punktu odniesienia (domyślnie środek ciężkości wielokąta).Odległość ta jest następnie skalowana na podstawie skali podanej w celu utworzenia nowego „skalowanego” wierzchołka.
Skalowanie odbywa się zasadniczo poprzez narysowanie linii na skalowanej długości od punktu odniesienia przez oryginalny wierzchołek, przy czym koniec linii staje się skalowanym wierzchołkiem.
Kąt i obrót istnieje, ponieważ łatwiej jest obliczyć położenie końca linii wzdłuż jednej osi, a następnie obrócić go „na miejsce”.
źródło
bdist = refgeom.distanceTo(apnt)
. Czy możesz to przetestować i naprawić?