Qual é a diferença entre os tokens "SHAPE @ XY" e "SHAPE @ TRUECENTROID" do acesso a dados?

9

Cursor de pesquisa de acesso a dados .

Qual é a diferença entre os tokens "SHAPE@XY"e "SHAPE@TRUECENTROID"?

Eles retornaram as mesmas coordenadas em um polígono de teste:

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

insira a descrição da imagem aqui

Ele se comportou da mesma maneira para um recurso de polígono de várias partes. Alguma vez retorna resultados diferentes?

Emil Brundage
fonte

Respostas:

4

Eu também estava curioso sobre isso, então perguntei um pouco e fiz algumas pesquisas. o que eu achei foi

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 artigo descreve como eles são idênticos cerca de 95% das vezes, mas resultará em uma pequena diferença nos 5% restantes

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

citado no artigo "Portanto, o ponto desta postagem é que o uso do token SHAPE @ XY é enganoso. É o mesmo que obter o valor SHAPE @ TRUECENTROID para X&Y. Isso também se aplica ao SHAPE @ X ou SHAPE @ Y. Isso causará problemas para as pessoas que desejam geocodificar os locais de endereço e, em seguida, fazer qualquer tipo de análise espacial em que a contagem de pontos em parcelas é importante.Existem parcelas de formato estranho que devem ter um ponto dentro, mas não, e pontos em outros lotes isso não deveria estar lá, mas é colocado devido ao centro de gravidade da parcela ímpar.Eu uso o token SHAPE @ para evitar esse problema, mas isso significa que mais memória é consumida para armazenar todo o objeto geom polígono, em vez de apenas o centróide, o que contribui para um script mais lento ".

ed.hank
fonte
Eu estava realmente esperando o ponto de vista, então isso é realmente útil. Obrigado.
Emil Brundage
Não existe um ponto interno? Talvez apenas declare com SHAPE @ para retornar uma geometria e use o labelPoint ( resources.arcgis.com/de/help/main/10.1/index.html#//… ) que é garantido estar dentro ou dentro da geometria.
Michael Stimson