В чем разница между токенами SHAPE @ XY и SHAPE @ TRUECENTROID для доступа к данным?

9

Курсор поиска доступа к данным .

В чем разница между жетонами "SHAPE@XY"и токенами "SHAPE@TRUECENTROID"?

Они вернули те же координаты на тестовом полигоне:

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

введите описание изображения здесь

Он вел себя одинаково для многоугольника. Возвращает ли он когда-нибудь разные результаты?

Эмиль Брундейдж
источник

Ответы:

4

Мне тоже было любопытно, поэтому я немного расспросил и провел небольшое исследование. что я нашел

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.

В этой статье описывается, как они идентичны в 95% случаев, но оставшиеся 5% приведут к небольшой разнице

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

цитата из статьи "Итак, смысл этого поста в том, что использование токена SHAPE @ XY вводит в заблуждение. Это то же самое, что получение значения SHAPE @ TRUECENTROID для X & Y. Это также верно для SHAPE @ X или SHAPE @ Y. Это вызовет проблемы у людей, которые хотят геокодировать адреса, а затем выполнять любой вид пространственного анализа, где важен подсчет точек в участках. Будут участки нечетной формы, которые должны иметь точку внутри, но не имеют, и точки в других участках. это не должно быть там, но размещено из-за центра тяжести нечетной посылки. Я использую токен SHAPE @, чтобы избежать этой проблемы, но это означает, что больше памяти используется для хранения всего объекта многоугольника geom вместо просто Centroid, что делает для более медленного сценария. "

ed.hank
источник
Я действительно надеялся на внутреннюю точку, так что это действительно полезно. Спасибо.
Эмиль Брундейдж
Разве нет внутренней точки? Возможно, просто объявите с помощью SHAPE @, чтобы вернуть геометрию, и используйте labelPoint ( resources.arcgis.com/de/help/main/10.1/index.html#//… ), который гарантированно находится внутри или на геометрии.
Майкл Стимсон