tweede deel van de serie<\/A> bekijkt de inconsistente resultaten die ontstaan door het mengen van verschillende implementaties van spatial operators.<\/EM><\/P><\/P>
Negen maanden sinds mijn laatste blogpost, kan ik niet zeggen dat dat het tempo was waar ik op mikte toen GeoNet werd opgezet (tenminste ik hecht niet meer waarde aan GeoNet-resoluties dan aan die van Nieuwjaar<\/EM>). Ik weet niet of mijn droogte voorbij is, maar een rauwe zenuw is hard genoeg geraakt door Esri om het te laten regenen, althans voor het moment. Van alle spreekgestoelten die mijn kasten vullen, is slechte documentatie en de gevolgen daarvan een van de meest versleten. Hoezeer Honest Abe ook zegt dat je niet alles op internet kunt vertrouwen, denk ik wel dat softwaregebruikers op de online help\/documentatie van een bedrijf moeten kunnen vertrouwen.<\/P><\/P>Men kan niet te veel tijd doorbrengen in de wereld van ruimtelijke relaties zonder het Dimensionally Extended 9 Intersection Model (DE-9IM) tegen te komen. Het DE-9IM werd ontwikkeld door Clementini en anderen halverwege de jaren '90 als een evolutie van het 4 Intersection Model (4IM) en 9 Intersection Model (9IM). Hoewel het DE-9IM niet de enige definitie is van ruimtelijke relaties, werd het de overheersende 2D-definitie na opname in de
Select Layer By Location <\/A>gereedschap met beide definities van 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>Tot nu toe gaat alles goed. Afgezien van het feit dat Esri's standaarddefinities van Contains en Within verschillen van die in de meeste andere geometriebibliotheken en geospatiale toepassingen, inclusief de OGC simple feature standaarden, komen de resultaten tenminste overeen met de schaarse documentatie die online beschikbaar is.<\/P><\/P>Op dit punt is het echt belangrijk iets aan te wijzen dat gemakkelijk over het hoofd wordt gezien. De ST_Geometry-functies van Esri zijn<\/> compliant met de OGC simple feature access en SQL-standaarden, wat betekent dat ST_Within zich houdt aan de definitie van Clementini en niet aan die van Esri.<\/>/P><\/>\<\/>PRE class=\"lia-code-sample line-numbers language-none\">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;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a mp;a m p;a m p;a m p;a m p;a m p;a m p;a m p;a m p;a m p;a m p;a m p;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a m p ;a \<\/>Up tot dit punt zou ik beweren dat de Esri-documentatie met betrekking tot ruimtelijke relaties zwak is omdat deze sterk leunt op inferentie.& nbsp ; De oplettende gebruiker zou kunnen opmerken dat er meerdere Within-overlaytypes zijn in het keuzemenu voor het < A href=\"http:\/ \/desktop.arcgis.com \/en \/desktop \/latest \/tools \/data-management-toolbox \/select-layer-by-location.htm \" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Select Layer By Location < \/ A > gereedschap , en de nieuwsgierige gebruiker zou nog een stap verder kunnen gaan om over overlaytypes te lezen om de verschillen ertussen te begrijpen . & nbsp ; De echt oplettende en deskundige gebruiker zou kunnen begrijpen dat een enkele regel in de < A href=\"http : \/ \/desktop.arcgis.com \/en \/desktop \/latest \/manage-data \/using-sql-with-gdbs \/what-is-the-st-geometry-storage-type.htm \" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Wat is het ST_Geometry opslagtype? < \/ A > documentatie waarin staat dat ST_Geometry voldoet aan specificatie SQL 3 betekent dat de functie ST_Within zich houdt aan Clementini's definitie in plaats van die van Esri uit het < A href=\"http : \/ \/desktop.arcgis.com \/en \/desktop \/latest \/tools \/data-management-toolbox \/select-layer-by-location.htm \" rel=\"nofollow noopener noreferrer\" target=\"_blank\">Select Layer By Location < \/ A > gereedschap . & nbsp ; Kortom , er is geen documentatie die expliciet erkent dat er verschillende definities zijn voor bepaalde ruimtelijke relaties binnen verschillende delen van Esri's eigen software . < \/ P >< P >< \/ P >< P >In de war ? & nbsp ; Wacht maar , het echte plezier begint wanneer we duiken in de < A href=\"http : \/ \/desktop.arcgis.com \/en \/desktop \/latest \/analyze \/arcpy-classes \/geometry.htm \" rel=\"nofollow noopener noreferrer\" target=\"_blank\">ArcPy Geometry Classes< \/ A > want daar gaat de documentatie van zwak naar echt zwak . & nbsp ; De enige verwijzingen naar OGC in de < A href=\"http : \/ \/desktop.arcgis.com \/en \/desktop \/latest \/analyze \/arcpy-classes \/geometry.htm \" rel=\"nofollow noopener noreferrer\" target=\"_blank\">ArcPy Geometry Classes< \/ A > documentatie zijn voor de WKB- en WKT-eigenschappen , en er zijn geen verwijzingen naar DE-9IM of Clementini . & nbsp ; Laten we eens kijken naar de documentatie voor de within-methode : < / P >< P style=\"padding-left: 60px;\">
<\/P>
Dus, de geometrie bevindt zich binnen een andere geometrie als het zich binnen die geometrie bevindt. Begrepen. Oh wacht, vragen ze me of een geometrie zich binnen een andere geometrie bevindt? Hoewel geen van de illustraties een situatie weergeeft die het verschil tussen de Esri- en Clementini-definities laat zien, doet het ontbreken van enige verwijzing naar OGC, DE-9IM of Clementini vermoeden dat de definitie van Esri wordt gebruikt. Laten we het controleren:<\/P>
<\/P>
>>> line.within(polygon)
False<\/PRE><\/P>Auw, dat doet pijn. Het is vrij duidelijk dat er een gebrek aan consistentie is in hoe bepaalde ruimtelijke operatoren worden geïmplementeerd in verschillende delen van Esri's software, maar het ergste is dat de documentatie dit niet eens aangeeft. Gebruikers blijven achter met het moeten afleiden, en waarschijnlijk soms onjuist, hoe de software werkt in plaats van geïnformeerd te worden over hoe het werkt. Caveat utilitor<\/EM>.<\/P><\/BODY><\/HTML>