Druhý díl série<\/A> se zabývá nekonzistentními výsledky, které vznikají mícháním různých implementací prostorových operátorů.<\/EM><\/P><\/P>
Devět měsíců od mého posledního blogového příspěvku nemohu říct, že to byla rychlost, kterou jsem si přál, když byl GeoNet spuštěn (alespoň nepřikládám větší váhu GeoNetovým rozhodnutím než těm novoročním<\/EM>). Nevím, jestli moje období sucha skončilo, ale Esri zasáhlo tak citlivou nervovou oblast, že alespoň na chvíli začalo pršet. Ze všech mluvčích, které mám ve svých skříních, je špatná dokumentace a její důsledky jedním z nejopotřebovanějších. Ačkoliv Honest Abe říká, že nelze věřit všemu, co čtete na internetu, myslím si, že uživatelé softwaru by měli mít možnost důvěřovat online nápovědě\/dokumentaci společnosti.<\/P><\/P>Nelze strávit příliš mnoho času ve světě prostorových vztahů, aniž byste narazili na Dimensionally Extended 9 Intersection Model (DE-9IM). DE-9IM byl vyvinut Clementinim a dalšími v polovině 90. let jako vývoj 4 Intersection Model (4IM) a 9 Intersection Model (9IM). Ačkoliv DE-9IM není jedinou definicí prostorových vztahů, stal se převládající 2D definicí po zařazení do
Select Layer By Location <\/A> s oběma definicemi Within:<\/P><\/P>
>>> arcpy.SelectLayerByLocation_management("line", "WITHIN", "polygon")
<Result 'line'>
>>> arcpy.GetCount_management("line")
<Result '1'>
>>> arcpy.SelectLayerByLocation_management("line", "WITHIN_CLEMENTINI", "polygon")
<Result 'line'>
>>> arcpy.GetCount_management("line")
<Result '0'><\/PRE><\/P>Zatím dobré. Kromě toho, že výchozí definice Contains a Within od Esri se liší od většiny ostatních knihoven geometrie a geoprostorových aplikací včetně OGC standardů jednoduchých prvků, alespoň výsledky odpovídají dostupné úsporné dokumentaci online.<\/P><\/P>V této fázi je opravdu důležité upozornit na něco snadno přehlédnutelného. Funkce ST_Geometry od Esri jsou<\/> v souladu s OGC simple feature access a SQL standardy, což znamená, že ST_Within dodržuje definici Clementiniho a nikoliv definici Esri.<\/>\n<\/>SQL> SELECT sde.st_within(sde.st_geomfromtext('LINESTRING(1 0, 2 0)', 0),\n 2 sde.st_geomfromtext('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 0))\n 3 FROM dual;\nSDE.ST_WITHIN(SDE.ST_GEOMFROMTEXT('LINESTRING(10,20)',0),SDE.ST_GEOMFROMTEXT('PO\n--------------------------------------------------------------------------------\n & nbsp;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \\n\nAž do tohoto bodu bych tvrdil, že dokumentace Esri týkající se prostorových vztahů byla slabá, protože silně spoléhá na dedukci.& nbsp ; Pozorný uživatel si může všimnout více typů překryvů Within v rozbalovacím seznamu nástroje
Select Layer By Location< \/A >. Stručně řečeno , neexistuje žádná dokumentace , která by explicitně uznávala , že existují různé definice určitých prostorových vztahů v různých částech vlastního softwaru Esri.< \/ P >\ n</ P >\ n
Zmateni? & nbsp ; Počkejte , zábava skutečně začíná , když se ponoříme do < A href=\ "http : \/ \/desktop.arcgis.com \/en \/desktop \/latest \/analyze \/arcpy-classes \/geometry.htm \ " rel=\ "nofollow noopener noreferrer \ " target=\ "_blank \">ArcPy Geometry Classes< \/ A > protože dokumentace jde ze slabé do opravdu slabé. Jediné odkazy na OGC v dokumentaci < A href=\ "http : \/ \/desktop.arcgis.com \/en \/desktop \/latest \/analyze \/arcpy-classes \/geometry.htm \ " rel=\ "nofollow noopener noreferrer \ " target=\ "_blank \">ArcPy Geometry Classes< \/ A > jsou pro vlastnosti WKB a WKT , a nejsou zde žádné odkazy na DE-9IM nebo Clementiniho. Podívejme se na dokumentaci metody within:< / P >< P style=\ "padding-left: 60px ; \">< IMG __jive_id=\ "99920 \" alt=\ "arcgis_103_geometry_class_within_documentation.PNG \" class="image-3 jive-image" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/99920_arcgis_103_geometry_class_within_documentation.PNG" \/><\/P>
Takže geometrie je uvnitř jiné geometrie, pokud je uvnitř té geometrie. Chápu. Počkej, ptají se mě, jestli je geometrie uvnitř jiné geometrie? Ačkoliv žádná z ilustrací nezachycuje situaci, která by rozlišovala definice Esri a Clementini, absence jakékoliv zmínky o OGC, DE-9IM nebo Clementini naznačuje, že se používá definice Esri. Podívejme se:<\/P>
<\/P>
>>> line.within(polygon)
False<\/PRE><\/P>Auu, to bolí. Je docela jasné, že existuje nedostatek konzistence v tom, jak jsou určité prostorové operátory implementovány v různých částech softwaru Esri, ale nejhorší na tom je, že dokumentace to ani nezmiňuje. Uživatelé jsou ponecháni, aby si domýšleli, a často pravděpodobně nesprávně, jak software funguje místo toho, aby byli informováni o tom, jak funguje. Caveat utilitor<\/EM>.<\/P><\/BODY><\/HTML>