¿Cuál es la diferencia entre los tokens "SHAPE @ XY" y "SHAPE @ TRUECENTROID" de acceso a datos?

9

Cursor de búsqueda de acceso a datos .

¿Cuál es, en todo caso, la diferencia entre los tokens "SHAPE@XY"y "SHAPE@TRUECENTROID"?

Devolvieron las mismas coordenadas en un polígono de prueba:

>>> cursor = arcpy.da.SearchCursor("test", "SHAPE@XY")
>>> for row in cursor:
...     print row[0]
...     
(559389.3838043335, 4239093.201390337)

>>> cursor = arcpy.da.SearchCursor("test", "SHAPE@TRUECENTROID")
>>> for row in cursor:
...     print row[0]
...     
(559389.3838043335, 4239093.201390337)

ingrese la descripción de la imagen aquí

Se comportó de la misma manera para una entidad poligonal multiparte. ¿Alguna vez devuelve resultados diferentes?

Emil Brundage
fuente

Respuestas:

4

Tenía curiosidad sobre esto también, así que pregunté un poco e investigué un poco. lo que encontré fue

SHAPE@XY A tuple of the feature's centroid x,y coordinates.
SHAPE@TRUECENTROID —A tuple of the feature's true centroid x,y coordinates.

Este artículo describe cómo son idénticos alrededor del 95% del tiempo, pero dará como resultado una ligera diferencia del 5% restante

https://geonet.esri.com/thread/92121

citado del artículo "Entonces, el objetivo de esta publicación es que usar el token SHAPE @ XY es engañoso. Es lo mismo que obtener el valor SHAPE @ TRUECENTROID para X&Y. Esto también es cierto para SHAPE @ X o SHAPE @ Y. Esto causará problemas a las personas que desean geocodificar ubicaciones de direcciones y luego realizar cualquier tipo de análisis espacial donde sea importante contar puntos en parcelas. Habrá parcelas de formas extrañas que deberían tener un punto dentro pero no lo hacen, y puntos en otras parcelas eso no debería estar allí, pero se colocan debido al centro de gravedad de la parcela impar. Uso el token SHAPE @ para evitar este problema, pero eso significa que se consume más memoria para contener todo el objeto de polígono geom en lugar de solo el centroide, lo que lo convierte en un script más lento ".

ed.hank
fuente
Realmente esperaba el punto interno, así que esto es realmente útil. Gracias.
Emil Brundage
¿No hay un punto interno? Tal vez solo declare con SHAPE @ para devolver una geometría y use el labelPoint ( resources.arcgis.com/de/help/main/10.1/index.html#//… ) que está garantizado dentro o sobre la geometría.
Michael Stimson