Was ist der Unterschied zwischen den Token "SHAPE @ XY" und "SHAPE @ TRUECENTROID" für den Datenzugriff?

9

Datenzugriffssuchcursor .

Was ist, wenn überhaupt, der Unterschied zwischen den Token "SHAPE@XY"und "SHAPE@TRUECENTROID"?

Sie gaben die gleichen Koordinaten auf einem Testpolygon zurück:

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

Geben Sie hier die Bildbeschreibung ein

Bei einem mehrteiligen Polygon-Feature verhielt es sich genauso. Gibt es jemals andere Ergebnisse?

Emil Brundage
quelle

Antworten:

4

Ich war auch neugierig, also fragte ich ein wenig herum und recherchierte. was ich gefunden habe war

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.

Dieser Artikel beschreibt, wie sie in 95% der Fälle identisch sind, führt jedoch zu einem geringfügigen Unterschied zu den verbleibenden 5%

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

zitiert aus dem Artikel "Der Sinn dieses Beitrags ist also, dass die Verwendung des SHAPE @ XY-Tokens irreführend ist. Dies entspricht dem Abrufen des SHAPE @ TRUECENTROID-Werts für X & Y. Dies gilt auch für SHAPE @ X oder SHAPE @ Y. Dies führt zu Problemen für Personen, die Adresspositionen geocodieren und dann jede Art von räumlicher Analyse durchführen möchten, bei der das Zählen von Punkten in Paketen wichtig ist. Es gibt ungerade geformte Pakete, die einen Punkt enthalten sollten, dies aber nicht tun, und Punkte in anderen Paketen Das sollte nicht vorhanden sein, sondern wird aufgrund des Schwerpunkts des ungeraden Pakets platziert. Ich verwende das SHAPE @ -Token, um dieses Problem zu vermeiden. Dies bedeutet jedoch, dass mehr Speicher benötigt wird, um das gesamte Polygon-Geom-Objekt zu halten, anstatt nur das Schwerpunkt, was zu einem langsameren Skript führt. "

ed.hank
quelle
Ich habe wirklich auf den inneren Punkt gehofft, also ist das wirklich hilfreich. Vielen Dank.
Emil Brundage
Gibt es keinen inneren Punkt? Vielleicht deklarieren Sie einfach mit SHAPE @, um eine Geometrie zurückzugeben, und verwenden Sie den labelPoint ( resources.arcgis.com/de/help/main/10.1/index.html#//… ), der garantiert innerhalb oder auf der Geometrie liegt.
Michael Stimson