ArcGIS Enterprise
Hoe komt het dat objecten in een layer in het Oracle Spatial formaat niet tekenen, of verdwijnen bij inzoomen?
Bij een layer in het formaat SDO_GEOMETRY (Oracle Spatial) tekenen geen objecten, objecten verdwijnen bij het inzoomen, of objecten ontbreken. Hoe kan dat en welke opties zijn er om dit probleem te verhelpen?
Er zijn verschillende mogelijke oorzaken die onderstaand genoemd zijn:
1) De Layer heeft geen ruimtelijke index
Hoe kan dit gecontroleerd worden? De ruimtelijke index is een domain index van type mdsys.spatial_index op een kolom van type SDO_GEOMETRY. Het is mogelijk om met SQLPLUS te controleren of er een index aanwezig is. Een voorbeeld:
select index_name, index_type from user_indexes where table_name='MYTABLE';
of
select index_name, column_name from user_ind_columns where table_name='MYTABLE';
Ook in ArcGIS Desktop of ArcGIS Pro kan in de eigenschappen van de layer gecontroleerd worden of een tabel een spatial index heeft. Als er geen spatial index is dan kan deze aangemaakt worden met de ‘Create’ button:

Verder bestaat er zowel in ArcGIS Desktop als ArcGIS Pro de mogelijkheid om een spatial index aan te maken met de toolbox tool ‘Add Spatial Index’.
Ook met SQL tools kan een spatial index aangemaakt worden:
create index MYINDEX_IX1 on MYTABLE(SHAPE) indextype is mdsys.spatial_index;
2) De layer bevat objecten die niet geldig zijn binnen de Oracle Spatial validetieregels
Dit probleem treedt soms op als externe databronnen met ArcGIS Desktop of ArcGIS Pro benaderd worden. Bij het intekenen van objecten in een edit sessie in ArcMap of ArcGIS Pro worden alleen maar objecten aangemaakt die volstaan aan de voorwaarden van ArcGIS en Oracle. Als je externe databronnen benadert dan kunnen deze datasets geometriefouten bevatten.
Hiervoor bestaat een Oracle Spatial validatie functie: SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT. Onderstaand een syntaxvoorbeeld:
SQL> SELECT A.ObjectID, SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(A.SHAPE, M.diminfo) AS PROBLEM
2 FROM mytable A,USER_SDO_GEOM_METADATA M
3 WHERE M.table_name = 'MYTABLE'
4 AND M.column_name = 'SHAPE'
5 AND SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(A.SHAPE, M.diminfo) <> 'TRUE';
Als deze procedure geometriefouten oplevert dan kan de ‘sdo_util.rectify_geometry’ procedure binnen Oracle gebruikt worden om deze te verhelpen. Onderstaand een voorbeeld voor het toepassen van deze procedure:
update MYTABLE a set a.SHAPE = sdo_util.rectify_geometry(a.SHAPE,0.005);
In recentere ArcGIS Pro versies kunnen alternatief ook de toolbox tools ‘Check Geometry’ en ‘Repair Geometry’ gebruikt worden om geometriefouten zoals dubbele vertices of self-intersections te verhelpen, zie ook https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/checking-and-repairing-geometries.htm.
3) De laag bevat niet ondersteunde Oracle Spatial feature types
De volgende entity types kan ArcGIS niet lezen:
Application-specific geographic elements (SDO_ETYPE 0)
- Optimized circles (SDO_ETYPE 3, interpretation 4)
- Heterogeneous collections (SDO_GTYPE 4)
Het is mogelijk om de entity types te controleren met bijvoorbeeld het volgende commando:
select distinct a.SHAPE.sdo_gtype from MYTABLE a;
Zie ook https://support.esri.com/en/Technical-Article/000002675 voor meer informatie over dit onderwerp. Dit artikel is geschreven voor oudere versies van ArcGIS, maar nog steeds van toepassing op actuele versies.
4) De laag bevat een kolom met datumwaarden van voor het jaar 100
Dit is niet ondersteund in ArcGIS Desktop en ArcGIS Pro en is een voorwaarde voor alle tabellen, niet alleen tabellen in het Oracle Spatial formaat. Ook een NULL waarde in een kolom van type ‘Date’ veroorzaakt problemen in ArcGIS. De kolom dient gevuld te worden met een geldige datumwaarde, of de ongeldige datumwaarden moeten gefilterd worden, bijvoorbeeld door het aanmaken van een database view.
5) De ID die als unieke ID wordt gebruikt, volstaat niet aan de voorwaarden van ArcGIS
Als een tabel met de Geodatabase geregistreerd is (‘Register with Geodatabase’) of met ArcGIS tools aangemaakt is, dan heeft hij automatisch een door ArcGIS beheerde kolom van type ‘Objectid’. Deze kolom bevat unieke waarden die door de software als unieke identifier voor objecten gebruikt kunnen worden.
Als de tabel niet met ArcGIS tools aangemaakt is of niet met de Geodatabase geregistreerd is, dan is het alsnog nodig dat er een kolom met unieke waarden aanwezig is die geen NULL values bevat, die door ArcGIS als unieke identifier gebruikt kan worden. De volgende data types zijn mogelijk voor deze kolom:
- Integer (alleen positieve waarden)
- String
- GUID
- Date
ArcGIS controleert niet of de waarden in een kolom uniek zijn. Als er niet unieke waarden voorkomen, dan ontstaan er problemen met het tekenen van objecten op de kaart, het tonen van attributen of het uitvoeren van selecties.
Voor meer informatie zie https://pro.arcgis.com/en/pro-app/help/data/databases/unique-identifier-fields-in-database-tables.htm en https://desktop.arcgis.com/en/arcmap/latest/manage-data/databases/unique-identifier-fields-in-database-tables.htm.