Especificação de Implementação OpenGIS para Informação Geográfica - Acesso a feição simples - Parte 1: Arquitetura comum<\/A>. O post focou em como a documentação incompleta dos operadores espaciais força os usuários a adivinharem, e provavelmente incorretamente às vezes, como o software funciona ao invés de saber como o software deveria funcionar. Por mais infeliz que seja para os usuários a documentação incompleta, misturar diferentes definições de relações espaciais dentro do mesmo operador espacial é muito pior, e isso parece ser o que a Esri fez.<\/P><\/P>
Tomando emprestado os exemplos do post anterior, vamos olhar três feições e o método ArcPy Geometry.within()<\/SPAN>.<\/P><\/P>>>> #Criar polígono quadrado
>>> polygon = arcpy.FromWKT('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))')
>>> #Criar linha que está completamente na borda do polígono
>>> line = arcpy.FromWKT('LINESTRING(1 0, 2 0)')
>>> #Criar linha vazia
>>> line_empty = arcpy.FromWKT('LINESTRING EMPTY')
>>>
>>> #Testar se linha está dentro do polígono
>>> line.within(polygon)
False
>>> #Testar se linha_vazia está dentro do polígono
>>> line_empty.within(polygon)
True<\/PRE><\/P>Para fins comparativos, vamos executar os mesmos dois testes das Linhas 9 e 12 usando ST_Geometry da Esri no Oracle:<\/P><\/P>SQL> --Testar se linha está dentro do polígono
SQL> SELECT sde.st_within(sde.st_geomfromtext('LINESTRING(1 0, 2 0)', 0),
sde.st_geomfromtext('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 0))
FROM dual;
SDE.ST_WITHIN(SDE.ST_GEOMFROMTEXT('LINESTRING(10,20)',0),SDE.ST_GEOMFROMTEXT('PO'
--------------------------------------------------------------------------------
0
SQL> --Testar se linha_vazia está dentro do polígono
SQL> SELECT sde.st_within(sde.st_geomfromtext('LINESTRING EMPTY', 0),
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . & nbsp ; sde.st_geomfromtext('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 0))
. . FROM dual;
SDE.ST_WITHIN(SDE.ST_GEOMFROMTEXT('LINESTRINGEMPTY',0),SDE.ST_GEOMFROMTEXT('POLY'
--------------------------------------------------------------------------------
. & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; & nbsp ; 0<\/PRE><\/P>Interessante, os resultados usando ST_Geometry diferem dos usando ArcPy.  Sabendo que as funções ST_Geometry são compatíveis com OGC simple feature access e SQL, o que significa que implementam DE-9IM, os resultados do ST_Geometry no Oracle são esperados porque uma linha somente na borda de um polígono não é considerada dentro do polígono, e uma geometria vazia não pode estar dentro de outra geometria.<\/P><\/P>Ao olhar para os resultados do ArcPy, a Linha 10 está correta apenas<\/SPAN> se as