Usando o arcpy, como você verifica se duas classes de recursos têm a mesma referência espacial?
Apenas verificar se os dois são iguais não funciona:
>>> import arcpy
>>> fc1 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\test"
>>> sr1 = arcpy.Describe (fc1).spatialReference
>>> sr2 = arcpy.Describe (fc1).spatialReference
>>> sr1 == sr2
False
factoryCode
não funciona, porque as projeções personalizadas não as possuem.
>>> fc2 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\customproj"
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr2.factoryCode
0
Há name
, mas os nomes podem ser os mesmos, mas têm unidades diferentes:
>>> sr1 = arcpy.Describe (fc1).spatialReference
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr1.name
u'NAD_1983_UTM_Zone_10N'
>>> sr2.name
u'NAD_1983_UTM_Zone_10N'
>>> sr1.linearUnitCode
9003
>>> sr2.linearUnitCode
9001
Então fica um pouco complicado. O melhor que eu criei é:
>>> def CompareSRs (inFc1, inFc2):
sr1 = arcpy.Describe (inFc1).spatialReference
sr2 = arcpy.Describe (inFc2).spatialReference
if not sr1.name != sr2.name:
return False
srType = sr1.type
if srType != sr2.type:
return False
if srType == "Geographic":
return sr1.angularUnitCode == sr2.angularUnitCode
return sr1.linearUnitCode == sr2.linearUnitCode
E ainda não tenho certeza de que o código acima é hermético. Existe uma maneira melhor?
arcpy
arcgis-10.1
coordinate-system
Emil Brundage
fonte
fonte
exportToString ()
que retorna uma sequência do WKT da referência espacial, pode ser o ticket.Respostas:
A julgar pelos comentários, você já deve tê-lo :)
Você pode comparar as descrições de texto conhecido (WKT) das referências espaciais.
fonte
Versão do arco: 10.3
Caso alguém ainda encontre isso em 2019 , tive problemas semelhantes e queria ter a maior certeza possível sobre se as projeções correspondiam. Como nas perguntas / respostas acima, você pode obter a referência espacial usando
arcpy.Describe(dataset).spatialReference
. Em uma biblioteca de funções minha, integro isso a um fluxo de trabalho, configurado para lidar com a comparação de 2 conjuntos de dados.Os atributos individuais de um objeto de referência espacial de geoprocessamento estão disponíveis aqui .
As seguintes funções devem ajudar - fique à vontade para usar / modificar, é claro. Vale a pena verificar o que é omitido - alguns atributos dos sistemas de referência espacial serão inofensivos se não corresponderem, mas isso depende de você :)
Dado o exposto, você pode usá-los como:
Dado o seu caso de uso, espero que as declarações não falhem.
Agora integro essas funções em muitos processos, como onde tenho uma variedade de conjuntos de dados espaciais nos quais estou ingressando e quero eliminar qualquer dúvida de que as coisas estavam desalinhadas.
fonte