Obtenga la distancia más corta entre dos geometrías en ArcPy

8

Estoy usando ArcPy y estoy usando un cursor para recorrer una clase de entidad poligonal. Para cada uno de estos polígonos 'fuente', estoy creando un SearchCursor para encontrar todos los polígonos en una segunda clase de entidad que comparten un atributo común. Para cada uno de estos polígonos coincidentes, quiero medir la distancia entre este y el polígono de búsqueda. También planeo medir otras diferencias de geometría (para determinar si se acaba de cambiar, rotar, escalar, etc.).

El propósito de este trabajo es construir un historial de cambios entre los conjuntos de datos de polígonos que representan características en diferentes momentos.

He visto el método ReturnDistance mencionado en ArcObjects, pero no puedo entender cómo ejecutar esto usando ArcPy. ¿Es posible, y si es así, alguien puede ayudar con un código de muestra aproximado? Si no, probablemente recurriré a medir el cambio en la posición del centroide entre los polígonos.

Gracias Steve

Steve
fuente

Respuestas:

1

Es posible que esta respuesta no se considere correcta ya que excluye el uso de ArcPy. No estoy seguro, si puede acceder a ReturnDistance en ArcPy. Sin embargo, puede acceder a ArcObjects desde Python directamente. Esta guía de Mark Cederholm lo ayudará a comenzar http://www.pierssen.com/arcgis/upload/misc/python_arcobjects.pdf . Requerirá de usted algunas habilidades de programación orientadas a objetos, si sabe lo básico, debería ser suficiente. De lo contrario, lea la guía. En las referencias encontrará algunos enlaces a fragmentos de código; si tiene la paciencia suficiente, lo descubrirá.

Aquí tendrá algunos enfoques diferentes para ArcObjects en Python: ¿Cómo acceder a ArcObjects desde Python?

Y aquí hay un ejemplo de ArcObjects en Python (mi lucha con este problema): Arcobjects en Python: asignar interfaz a objetos con geometría de entidad (forma)

Me llevó aproximadamente 3 días escribir mi propio programa y no tenía ni idea de la programación orientada a objetos, buena suerte.

Tomek
fuente
Sospeché que esto podría ser lo que necesitaba hacer. Gracias por todos los enlaces y la información sobre su experiencia con esto. Lo intentaré yo mismo.
Steve
11

Esta respuesta lleva 3 años de retraso, por lo que probablemente ya tenga una solución alternativa. Pero para completar, aquí hay un método arcpy para medir la distancia entre 2 objetos.

La geometría tiene un método distanceToque:

Devuelve la distancia mínima entre dos geometrías. Si las geometrías se cruzan, la distancia mínima es 0.

Ambas geometrías deben tener la misma proyección.

Stephen Lead
fuente