Większość pozostałych odpowiedzi została opublikowana, gdy ArcGIS 10.0 był najnowszym oprogramowaniem. W ArcGIS 10.1 udostępniono wiele nowych funkcji ArcPy. Ta odpowiedź wykorzystuje tę nową funkcjonalność. Nie będzie odpowiedni dla wersji 10.0, ale oferuje zwiększoną wydajność i funkcjonalność dla wersji 10.1 i nowszych.
import arcpy
input_feature_class = 'C:\your_feature_class.shp'
wkid = 4326 # wkid code for wgs84
spatial_reference = arcpy.SpatialReference(wkid)
fields_to_work_with = ['SHAPE@']
with arcpy.da.SearchCursor(input_feature_class,
fields_to_work_with) as s_cur:
for row in s_cur:
point_in_wgs84 = row[0].projectAs(spatial_reference)
print point_in_wgs84.firstPoint.X, point_in_wgs84.firstPoint.Y
Ten fragment kodu używa wkid do utworzenia przestrzennego obiektu odniesienia zamiast wpisywania ciągów znaków, używa bardziej nowoczesnych kursorów dostępu do danych i wyświetla poszczególne obiekty geometrii za pomocą metody projectAs () .
Aby rozwinąć sugestię Jamesa, oto minimalny przykład kodu wykorzystujący Python / arcpy:
źródło
Bez względu na to, czy nazywasz to rzutowaniem, czy nie, jestem całkiem pewien, że z definicji, kiedy tłumaczysz wartości współrzędnych z jednego układu odniesienia przestrzennego na inny, ponownie / odrzucisz.
ArcPy nie znam się tak dobrze, ale w arcgisscripting w wersji 9.3 musiałbyś rzutować całą klasę funkcji.
W zależności od złożoności algorytmu projekcji / transormacji potrzebujesz zawsze rzucić własną projekcję dla współrzędnych w podstawowej matematyce python. Umożliwiłoby to koordynację projekcji wartości na poziomie obiektu.
Jeśli byłeś otwarty na używanie powiązań pytona OGR, możesz wyświetlać na poziomie funkcji w coś w rodzaju „kursora wyszukiwania”.
źródło
W ArcPy 10.0 nie ma możliwości wyświetlania indywidualnych geometrii. Możesz jednak utworzyć zestaw funkcji (lub klasę funkcji w pamięci) i wyświetlić ją zamiast w pełni funkcjonalnej klasy funkcji w obszarze roboczym na dysku lub w bazie danych.
źródło
Głównym powodem, dla którego nie widzę potrzeby tworzenia klasy elementów, jest to, że arcpy.CreateFeatureclass_management może być powolny. Możesz także użyć arcpy.da.NumPyArrayTofeatureClass, która jest mniej więcej natychmiastowa dla klas obiektów in_memory:
źródło
źródło