Mam wiele niereferencyjnych warstw CAD (patrz to pytanie ), które mają funkcje adnotacji tekstu. Stworzyłem model do konwersji tekstu na punkty, ale po przekonwertowaniu adnotacji na klasę Punktów widzę, że punkty kontrolne tekstu CAD nie pokrywają się ze środkiem tekstu CAD (do którego należą punkty).
Dlatego chciałbym programowo (przy użyciu ArcPy lub ModelBuilder) [przenieść] funkcję względem jej bieżącej lokalizacji (delta x, y) przy użyciu zmierzonej wartości X, Y, którą podam.
Pozwoliłoby mi to przenieść punkty GIS z powrotem do miejsca, w którym należą, zamiast przesuniętego punktu kontrolnego CAD.
Jak mogę wykonać to zadanie?
@ PolyGeo udzielił doskonałej odpowiedzi za pomocą SHAPE @ XY IN 10.1, ale obecnie korzystam z wersji 10.0. Jakieś pomysły 10.0?
źródło
Podziękowania dla @ artwork21 za doprowadzenie mnie do mojego ostatecznego rozwiązania. Właściwie znalazłem prawie kompletny skrypt w artykule pomocy online ArcGIS 10.0 „ Oblicz przykłady pola ”, wymienionym w podkategorii „ Próbki kodu - geometria ” i „ W przypadku klasy obiektów punktowych przesunąć współrzędną x każdego punktu o 100 ”
Ostatnim skryptem, którego użyłem w narzędziu Model Caluate „Calculate Field” było:
Wyrażenie:
gdzie ShiftX i ShiftY są zmiennymi (jako parametrami) zdefiniowanymi na kanwie ModelBuilder.
Typ wyrażenia:
Blok kodu:
Ponieważ wszystkie modele działają na wybranym zestawie, powinieneś być w stanie stworzyć to jako ogólne narzędzie, które będzie działało w połączeniu z innymi modelami / narzędziami w innych sesjach konstruktora modeli. Bardzo prosty model, który stworzyłem (jako „wtyczka” do innych modeli w celu przesunięcia wartości współrzędnych) wygląda następująco. W ten sposób mogę kontrolować zmianę na podstawie zestawu wybranych elementów (jak zdefiniowano w innych modelach):
Działa jak urok, dziękuję wszystkim za wkład!
źródło
Możesz także użyć tego skryptu kalkulatora pola, aby przenieść lokalizacje obiektów:
XYsetVALUE (! SHAPE !,! X_COORD !,! Y_COORD!)
Możesz włączyć dodatkową metodę obliczania pola w swoim modelu, korzystając z powyższej funkcji.
źródło
Dostosowałem rozwiązanie, aby przesunąć / przesunąć punkty w określonym kierunku (kącie) i na określoną odległość.
Wygląda jak:
i nazywamy się jak shiftXYCoordinates (! SHAPE !,! Angle!, 5000), jeśli masz „kąt” pola dla cech punktów (lub ze stałą oczywiście). Kąt należy podawać w stopniach dziesiętnych. 0 przesunie „w górę”, 90 „w prawo” itd. Mam je po utworzeniu funkcji indeksu map paskowych i przekonwertowaniu ich na punkty.
Upewnij się także, aby przed uruchomieniem wybrać nazwę pola „Kształt” :)
(Rozwiązanie przetestowane w ArcMap 10.0 SP5)
źródło
Jak widać, w 10.1 jest o wiele łatwiej, gdy masz dostęp do tokenów kursora.
źródło
Działa to dla 10.0:
źródło