Usando arcpy, ¿cómo verifica si dos clases de entidad tienen la misma referencia espacial?
Solo verificar si los dos son iguales no 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
no funciona porque las proyecciones personalizadas no las tienen.
>>> fc2 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\customproj"
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr2.factoryCode
0
Hay name
, pero los nombres pueden ser iguales, pero tienen 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
Entonces se pone un poco complicado. Lo mejor que se me ocurrió es:
>>> 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
Y todavía no estoy seguro de que el código anterior sea hermético. ¿Hay una mejor manera?
arcpy
arcgis-10.1
coordinate-system
Emil Brundage
fuente
fuente
exportToString ()
que devuelve una cadena de WKT de la referencia espacial, podría ser el boleto.Respuestas:
A juzgar por los comentarios, es posible que ya lo tengas :)
Puede comparar las descripciones de texto conocido (WKT) de las referencias espaciales.
fuente
Versión de arco: 10.3
En caso de que alguien todavía encuentre esto en 2019 , tuve problemas similares y quería estar lo más seguro posible en cuanto a si las proyecciones coincidían. Como en las preguntas / respuestas anteriores, puede obtener la referencia espacial utilizando
arcpy.Describe(dataset).spatialReference
. En una biblioteca de funciones mías, integro esto en un flujo de trabajo, configurado para manejar la comparación de 2 conjuntos de datos.Los atributos individuales de un objeto de referencia espacial de geoprocesamiento están disponibles aquí .
Las siguientes funciones deberían ayudar: siéntase libre de usar / modificar, por supuesto. Vale la pena verificar lo que se omite: algunos atributos de los sistemas de referencia espacial serán inofensivos si no coinciden, pero eso depende de usted :)
Dado lo anterior, puede usarlos como:
Dado su caso de uso, esperamos que las afirmaciones no fallen.
Integro estas funciones ahora en muchos procesos, como donde tengo una variedad de conjuntos de datos espaciales a los que me estoy uniendo y quiero eliminar cualquier duda de que las cosas se desalinearon.
fuente