Qual è la differenza tra i token "SHAPE @ XY" e "SHAPE @ TRUECENTROID" di accesso ai dati?


9

Cursore di ricerca dell'accesso ai dati .

Qual è la differenza tra i token "SHAPE@XY"e "SHAPE@TRUECENTROID"?

Restituirono le stesse coordinate su un poligono di prova:

>>> 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)

inserisci qui la descrizione dell'immagine

Si è comportato allo stesso modo per una funzione poligonale multipart. Restituisce mai risultati diversi?

Risposte:


4

Ero curioso anche di questo, quindi ho chiesto un po 'in giro e fatto qualche ricerca. quello che ho trovato è stato

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.

Questo articolo descrive come sono identici circa il 95% delle volte ma comporterà una leggera differenza nel restante 5%

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

citato dall'articolo "Quindi il punto di questo post è che l'uso del token SHAPE @ XY è fuorviante. È lo stesso che ottenere il valore SHAPE @ TRUECENTROID per X&Y. Questo vale anche per SHAPE @ X o SHAPE @ Y. Ciò causerà problemi per le persone che desiderano geocodificare le posizioni degli indirizzi e quindi eseguire qualsiasi tipo di analisi spaziale in cui è importante contare i punti nei pacchi. Ci saranno pacchi di forma dispari che dovrebbero avere un punto all'interno ma non lo fanno e punti in altri pacchi che non dovrebbe esserci ma che sono posizionati a causa del baricentro del pacco dispari. Uso il token SHAPE @ per evitare questo problema, ma ciò significa che viene consumata più memoria per contenere l'intero oggetto geom del poligono invece del solo centroide, che rende uno script più lento. "


Speravo davvero il punto dentro, quindi questo è davvero utile. Grazie.
Emil Brundage,

Non c'è un punto dentro? Forse basta dichiarare con SHAPE @ per restituire una geometria e usare labelPoint ( resources.arcgis.com/de/help/main/10.1/index.html#//… ) che è garantito per essere all'interno o sulla geometria.
Michael Stimson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.