A maioria das outras respostas foi publicada quando o ArcGIS 10.0 foi o software mais recente. No ArcGIS 10.1, muitas novas funcionalidades do ArcPy se tornaram disponíveis. Esta resposta tira proveito dessa nova funcionalidade. Não será adequado para 10.0, mas oferece desempenho e funcionalidade aprimorados para 10.1 e posterior.
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
Esse trecho de código usa o wkid para criar um objeto de referência espacial em vez de digitar uma representação de seqüência de caracteres, usa os cursores de acesso a dados mais modernos e projeta os objetos de geometria individuais usando o método projectAs () .
Para elaborar a sugestão de James, aqui está um exemplo de código mínimo usando Python / arcpy:
fonte
Quer você chame de projeção ou não, tenho certeza de que, por definição, quando você está traduzindo os valores de coordenadas de um sistema de referência espacial para outro, você está / não está projetando.
Eu não estou tão familiarizado com o ArcPy, mas no arcgisscripting na 9.3, você teria que projetar toda a classe de recursos.
Dependendo da complexidade de um algoritmo de projeção / transormação que você precisa, você sempre pode rolar sua própria projeção para as coordenadas na matemática básica de python. Isso permitiria coordenar a projeção de valor no nível do recurso.
Se você estava aberto para usar as ligações python OGR, é possível projetar no nível do recurso em algo como um 'cursor de pesquisa'.
fonte
No ArcPy 10.0, não há capacidade de projetar geometrias individuais. No entanto, você pode criar um conjunto de recursos (ou uma classe de recurso na memória) e projetá-lo em vez de uma classe de recurso completa em uma área de trabalho em disco ou em um banco de dados em algum lugar.
fonte
O principal motivo pelo qual vejo não querer criar uma classe de recurso é porque arcpy.CreateFeatureclass_management pode ser lento. Você também pode usar arcpy.da.NumPyArrayTofeatureClass, que é mais ou menos instantâneo para as classes de recurso in_memory:
fonte
fonte