ArcGIS for Server


Hoe kan ik zien welke extensies er geautoriseerd zijn op mijn server?

Oorzaak

Bij ArcGIS for Server is er geen License Administrator of Desktop Administrator waarin je kunt zien welke autorisaties er zijn uitgevoerd.

Antwoord

In het geval van ArcGIS for Server worden deze autorisaties opgeslagen in een ‘keycodes’ bestand.

Vanaf ArcGIS for Server 10.1 wordt het ‘keycodes’ bestand hier opgeslagen: C:\Program Files\ESRI\License10.x\sysgen

Bij ArcGIS for Server 10.0 en eerder wordt het ‘keycodes’ bestand hier opgeslagen: C:\Program Files (x86)\ESRI\License10.0\sysgen

In dit bestand staan alle autorisaties achter elkaar genoemd. Zie hieronder een stukje als voorbeeld:

arcgisserver,101,ecp068336578,27-jul- 2012,2K0RHK8HRD09NBXEJ130,636D9B28A036C946CA405E9E0D9663B320BD525682B007B14D62C53590E178C3DD57571610D0914B0E06BC9E0A4ED6E862B4550EB34F157F5420CABFB35A7967A4F1C34DE46478922A021B57AA379D4B16A6D6BBDB93ABC70026FD744664FB693030F055BDA9053D42 4968A11C0EC06F18095CEA9B81B6C4428BBE1709BC2D92,FID__5cbadccf_135c6431b07__340d

interopserver,101,ecp565050579,27-jul- 2012,ZZYJ0LX0JKBPH38JC187,07FBEFCE07836A90793CFA87205FF56DBFEF38F0AA2D767E7EC82114D0A7F5F5139E646788DCCD973E3F4C94D7CC06B0865A2D8D222E18C3B795C4A630F816AFCE736B0CE71D5A39D808650883F122E2939A5D18A616E23806E43D30747D64DD39C1DBED95ED8897B1 275BDA76C3CB04532B63990292F6913B75E1ECA5281FFA,FID_58a29565_135d4d45537__5f03

imageextserver,101,ecp873626039,27-jul- 2012,TRAX04S3EZ0H8LG02147,3E030EBF97763D90F4AB264BCC4352E266C9C76FD9879F05E0AE4FE538994E21589DE6804A19CB000AA1CFCE7547FA40FA192E30B3766BDA9A2D3223A5A169102138BC1574A36E96AEC0E4796F25934321B55A5F437C6ACF035DCEDAC2E82DFACE0C0F885E2B795ED3 27C278BF3D0F56DDB08F9DC6C0B0BA05B3FEBBBCC77910,FID_58a29565_135d4d45537__5f02

Zoals aan de eerste woorden van de regels is te zien, zijn op deze server onder andere Data Interop en Image Server geautoriseerd. Het gaat om versie 10.1. De ECP code die gebruikt is staat achter de versie en de autorisaties zijn geldig tot 27 juli 2012. Hierna volgen een aantal controlereeksen (checksums).

De regels zijn dus opgebouwd als volgt: extensie, versie, ECP-code, einddatum, controlereeksen.


Hoe kan ik een verbinding maken met een Oracle database via Oracle Easy Connect?

Er zijn verschillende manieren om in ArcCatalog een verbinding te maken met een database. Sinds versie ArcGIS for Desktop 10.1 is het mogelijk om gebruik te maken van Oracle Easy Connect. In dit artikel wordt omschreven hoe dit in zijn werk gaat.

Sinds versie 10.1 is het mogelijk via Oracle Easy Connect verbinding te maken met een Oracle Database. Hiervoor is het wel belangrijk dat Oracle zodanig is geconfigureerd dat dit mogelijk is. Wanneer er gekozen is voor een full install van de Oracle client moet het sqlnet.ora bestand zodanig geconfigureerd worden dat Easy Connect mogelijk is. De Oracle server moet geconfigureerd zijn om Easy Connect syntax te accepteren.

Om te controleren of Oracle op de juiste manier is geconfigureerd kan je het volgende doen:

  1. Start Oracle Net Manager op
  2. Ga aan de linkerkant naar ‘Local > Profile’
  3. Aan de rechterkant: Selecteer ‘Naming’ en ga naar het tabblad ‘Methods’. Kijk of ‘EZCONNECT’ onder ‘Selected Methods’ staat (zie screenshot hieronder).

    Indien EZCONNECT nog aan de linkerkant staat selecteer deze dan en klik op het pijltje naar rechts. Eventueel kan je deze dan vervolgens aan de rechterkant selecteren en op ‘Promote’ klikken om hem bovenaan in het lijstje te zetten. Ga vervolgens naar ‘File’ (links bovenin) en kies voor ‘Save Network Configuration’. Het sqlnet.ora bestand zal nu geüpdate worden.

    Om een verbinding te maken met de Database doe je het volgende: Ga in ArcCatalog naar ‘Database Connection’ en dubbelklik hierop om het Database Connection scherm op te starten. Kies bij ‘Database Platform’ voor ‘Oracle’. Bij ‘Instance’ zijn er de volgende mogelijkheden voor het samenstellen van de ‘Instance’ string:

    • De naam van de Oracle server/Oracle service name of ID. Stel dat Oracle is geïnstalleerd op ‘myserver’ en de Oracle service naam is ‘myosvc’, dan wordt de string:

      myserver/myosvc

    • De naam van de Oracle server:Oracle port number/Oracle service naam of ID. Stel dat Oracle is geïnstalleerd op’ myserver’, gebruikt maakt van port 60000 en de Oracle service name is ‘myoservice’, dan wordt de string:

       myserver:60000/myoservice

    • De URL van de Oracle server. De URL voor dezelfde instance als in het voorbeeld hierboven wordt:

      //myserver:60000/myoservice

    • De naam van de Oracle server (dit kan worden toegepast wanneer de Oracle listener op de server zodanig is geconfigureerd dat het naar een default instance wijst).
    • Het IP adres van de Oracle server/Oracle service naam of ID. Stel het adres van de server is 10:10:10:10 en de Oracle service naam is ‘oravc’, dan wordt de string:

      10:10:10:10/orasvc

      Bij IPV6 adressen moeten er vierkante haken om het adres gezet worden. Voorbeeld:

      [4000:vu5:0:0:f666:h191:77f5:i2rs]/orasvc

    • Het IP adres van de Oracle server:Oracle port nummer/Oracle service naam of ID. Stel dat het IP adres 10.20.30.40 is, de port 59999 en de Oracle service ‘myomy1’ heet, dan wordt de string:

      10.20.30.40:5999/myomy1

      Bij een IPV6 adres ziet de structuur er als volgt uit:

      [6543:eo4:0:1:f587:l249:12f9:w3ud]:59999/myomy1

    Hieronder een voorbeeld van hoe het scherm ingevuld kan worden. Hier is gebruik gemaakt van de combinatie naam van de Oracle server/Oracle service name.


Hoe maak je een materialized view in Oracle Spatial aan voor het gebruik in ArcGIS?

Soms voldoet de performance van een gewone view niet aan de door de gebruiker gestelde eisen. Dit kan optreden bij grote hoeveelheden data met een complexe ‘where’ clause in de view. In dit geval adviseren wij het gebruik van een materialized view, in plaats van een gewone view. Onderstaand stappenplan kan gebruikt worden voor het aanmaken en registeren van de materialized view, zodat deze in ArcGIS for Desktop of ArcGIS for Server gebruikt kan worden.

  1. Zorg ervoor dat de onderliggende tabel waarvan je de view wilt aanmaken een primary key heeft. Als dit niet het geval is, dan kun je een primary key definieren met het ‘ALTER TABLE’ statement in SQL. In onderstaand voorbeeld maak je een primary key aan op de kolom ‘OBJECTID’ van de tabel ‘OBJECTEN’:

    ALTER TABLE OBJECTEN ADD PRIMARY KEY (OBJECTID);

  2. Vervolgens kun je de materialized view aanmaken met het ‘CREATE MATERIALIZED VIEW’ statement. Log hiervoor in met SQL in het gebruikersschema waarin je de materialized view wilt aanmaken:

    CREATE MATERIALIZED VIEW MYUSER.MYVIEW
    BUILD IMMEDIATE
    REFRESH FORCE
    NEXT (SYSDATE + 1/288)
    WITH PRIMARY KEY
    AS
    SELECT
    p.OBJECTID, p.SHAPE, p.CODE, p.SE_ANNO_CAD_DATA,...,
    i.CODE_BESCHRIJVING, i.EIGENAAR, i.STRAAT, i.HUISNUMMER,...
    FROM
    OBJECTEN p, BESCHRIJVING i
    WHERE
    p.CODE=i.CODE_BESCHRIJVING;

    In dit voorbeeld wordt een materialized view aangemaakt met de naam ‘MYVIEW’ in het userschema ‘MYUSER’. De bovendstaande materialized view wordt om de 5 minuten ge-refreshed (een dag bevat 1440 minuten, 5 minuten is dus 1440/5 = 1/288). Er wordt een join uitgevoerd tussen de ruimtelijke layer ‘OBEJECTEN’ en de tabel ‘BESCHRIJVING’. Let erop dat je de volgende kolommen toevoegd: de unieke identifier van de ruimtelijke laag (hier: ‘OBJECTID’), de kolom waarin de ruimteljike objecten zijn opgeslagen (hier: ‘SHAPE’), en –indien aanwezig- de kolom ‘SE_ANNO_CAD_DATA’ (een interne kolom beheerd door het systeem). Voor de materialized view moet Oracle Spatial metadata aangemaakt worden in de ‘USER_SDO_GEOM_METADATA’ view in het ‘MDSYS’ gebruikersschema. Gebruik hiervoor de waarden van de metadata van de onderliggende ruimtelijke laag. De Oracle Spatial metadata voor de onderliggende laag kun je achterhalen met een SQL statement. Log hiervoor in als owner van de onderliggende laag (in dit geval de layer ‘OBJECTEN’), en voer het volgende SQL statement uit:

    SELECT * FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME='OBJECTEN';

    Hier volgt een voorbeeld hoe je metadata kunt aanmaken voor de materialized view (ingelogd als de owner van de materialized view):

    INSERT INTO USER_SDO_GEOM_METADATA
    ( TABLE_NAME
    , COLUMN_NAME
    , DIMINFO
    , SRID
    )
    VALUES
    ( 'MYVIEW'
    , 'SHAPE'
    , MDSYS.SDO_DIM_ARRAY
    ( MDSYS.SDO_DIM_ELEMENT('X', 0, 300000, 0.005)
    , MDSYS.SDO_DIM_ELEMENT('Y', 300000, 600000, 0.005)
    )
    , 28992);

    Als er in de onderliggende ruimtelijke layer geen Oracle Spatial SRID gebruikt wordt, gebruik dan ook geen Oracle Spatial SRID voor de materialized view. In dit voorbeeld is wél een SRID gebruikt, het nummer 28992.

  3. Maak een ruimtelijke index aan voor de materialized view. Hiervoor kun je de ‘CREATE INDEX’ statement gebruiken:

    CREATE INDEX MYINDEX_IDX ON MYVIEW(SHAPE)INDEXTYPE IS MDSYS.SPATIAL_INDEX;

    Na deze stap kun je de materialized view in ArcGIS Desktop 10.x gebruiken als Query Layer in ArcMap. Het is dan niet nodig om de materialized view te registreren met het SDE schema. Query Layers kun je in ArcMap toevoegen via het menu: ‘File > Add Data > Add Query Layer’. Vanaf ArcGIS for Desktop 10.1 is er ook de ‘Add Query Layer’ tool in ArcToolbox beschikbaar.

  4. Wil je de materialized view beschikbaar maken als Feature Class in ArcCatalog in een ‘Database Connection’, dan moet je hem registreren met het SDE schema. Om de materialized view te registeren, kun je het beste de gegevens van de onderliggende laag gebruiken. Het is echter niet vereist dat de onderliggende ruimtelijke laag geregistreerd is met het SDE schema. De eigenschappen van de onderliggende laag (in het bovenstaande voorbeeld is dit de laag ‘OBJECTEN’) kun je achterhalen met het commando sdelayer –o describe_long. Onderstaand zie je een voorbeeld voor het registreren van de materialized view:

    sdelayer -o register -i … -u … -p …. -s …… -l MYVIEW,SHAPE -e …. -t …. -k ….. -C OBJECTID,SDE -P HIGH -x 0,300000,10000,0.001 -G 28992

    Let op (1): Met de ‘Create Database View’ tool in ArcGIS for Desktop 10.1 kun je een database view aanmaken, maar geen materialized view.

    Let op (2): Sinds versie ArcSDE 10.1 moeten de commandline tools apart gedownload worden van het Esri Customer Care Portal. Ze zijn niet meer een standaard onderdeel van de ArcSDE software installatie.


Het tekenen van Feature Classes uit een ArcSDE GDB in volledige extent, de navigatie op de kaart of het uitvoeren van queries verloopt traag. Wat is de oorzaak hiervan en hoe kan ik de performance verbeteren?

Oorzaak

Er zijn verschillende oorzaken voor onvoldoende performance van Feature Classes uit een ArcSDE GDB. Dit artikel beschrijft een aantal vaak voorkomende oorzaken van performanceproblemen en mogelijke oplossingen.

Antwoord

Hier volgen een aantal vaak voorkomende oorzaken:

  1. De statistieken en indexen zijn niet up-to-date

    Actuele indexen en database statistieken zijn cruciaal bij het werken met data in een database. Hier staan scripts voor het actualiseren van relevante database statistieken en indexen voor Oracle en SQL Server. Voor het uitvoeren van deze scripts zijn dba rechten nodig. Om zonder dba rechten voor een specifieke Feature Class database statistieken te laten berekenen, kun je, ingelogd als de eigenaar van de data, de ‘Analyze’ tool gebruiken. Vanaf versie ArcGIS for Desktop 10.1 bestaat er ook een ‘Analyze Datasets’ tool in de Geodatabase Administration toolbox, zie ArcToolbox > System Toolboxes > Data Management Tools > Geodatabase Administration. Hiermee kun je statistieken voor alle tabellen en layers in een gebruiker schema laten bereken. Als je ingelogd bent als de Geodatabase administrator, kun je ook voor de ArcSDE schema tabellen statistieken laten berekenen. Dit is van belang bij het werken met versioning.

    Indexen van een feature class kun je actualiseren met behulp van een script (zie bovenstaande link) of sinds versie ArcGIS for Desktop 10.1 met de ‘Rebuild Indexes’ tool in de Geodatabase Administration toolbox.

  2. De versioning workflow is niet optimaal

    Bij het werken met geversionde data (‘register as versioned’) en een groot aantal edits kan de performance van de database achteruit gaan. Onderstaand zijn een aantal aanbevelingen genoemd om de performance optimaal te houden:

    • De performance in een geversionde database is sterk afhankelijk van het aantal states en het aantal records in de adds en deletes tabellen. Voer daarom op regelmatige basis een compress uit. Hiermee verwijder je niet meer benodigde states, en verplaats je de records van de adds en deletes tabellen die gelijk zijn in alle versies naar de base tabellen. Voor het uitvoeren van een compress kun je de ‘Compress’ tool uit ArcToolbox gebruiken, of de ArcSDE commandline tools (sdeversion –o compress).
    • Als de workflow het toelaat kun je de database op regelmatige basis compressen naar state 0 en de adds en deletes tables helemaal leeg maken. Om een database te kunnen compressen naar state 0, moeten alle versies gereconciled en gepost worden met de DEFAULT versie, en vervolgens verwijderd worden. De hierop aansluitende compress zal alle records uit de adds en deletes tables terug brengen naar de base tables. Een handleiding staat hier. Dit artikel is ook van toepassing voor ArcSDE 10.x. Is het vanwege de workflow niet mogelijk alle versies te posten naar de DEFAULT versie? Voer dan in ieder geval een reconcile uit van alle bestaande versies met de DEFAULT versie. Hierdoor maak je de bewerkingen die gemaakt zijn in de DEFAULT versie ‘bekend’ bij alle andere versies, en kunnen in ieder geval de bewerkingen die zijn uitgevoerd in de DEFAULT versie gecompressed worden naar de base table.
    • Verwijder versies die aangemaakt zijn om te testen, of niet meer benodigde versies. Deze versies kunnen de compress van states tegen houden en de performance hierdoor negatief beïnvloeden.
    • Als het mogelijk is, houdt dan de versie boom ‘plat’. Maak dus niet ‘een child versie van de child versie van de child versie’ aan.
    • Zorg ervoor dat na het uitvoeren bulk edits deze records zo snel mogelijk naar de base tables gecompressed worden. Reconcile en post hiervoor de bewerkte versie met de DEFAULT versie. Reconcile vervolgens alle andere andere versies met de DEFAULT versie, en voer aansluitend een compress uit.
  3. Er worden statistieken berekend op de sde logfile tables

    De inhoud van de logfile tabellen (SDE_LOGFILE_DATA) verandert snel en is heel dynamisch. Het berekenen van statistieken over de inhoud van deze tabellen tijdens het uitvoeren van selecties heeft een negatieve invloed op de performance. Wij adviseren om op de SDE_LOGFILE_DATA tabellen geen statistieken te laten berekenen, en bestaande statistieken te verwijderen. De procedure hiervoor staat hier beschreven.

    Een andere optie is om de ArcSDE log file tables als global temporary tables aan te maken. Dit kan de performance nog eens verbeteren omdat er geen redo log and backup informatie gegenereerd wordt. Volg de handleiding om de log file tables als global temporary tables aan te maken.

    Als de performance nog steeds achter blijft bij het uitvoeren van selecties, dan bestaat nog de optie om selecties niet in de database, maar op de client computer op te slaan. Standaard worden tot 100 geselecteerde records op de client gecached. Selecties van meer dan honderd records worden in de SDE_LOGFILE_DATA tabellen opgeslagen. Je kunt het aantal records dat op de client gecached wordt verhogen. Dit kan met behulp van een registry setting. Voor een stappenplan voor het aanmaken van deze registry key bestaat een technisch artikel van Esri Inc.

  4. De geoprocessing history wordt over een lange tijdsduur opgeslagen

    De historie over de uitgevoerde geprocessing acties worden als metadata van een object in de database opgeslagen. Als dit over een lange periode gebeurt, kan de omvang van de opgeslagen historie heel groot worden een performanceprobleem veroorzaken. Voor versie ArcGIS for Desktop 10 en 10.1 bestaat er een addin om de history uit de metadata van objecten in ArcSDE te vewijderen. Voor latere versies kun je python gebruiken om de metadata te verwijderen, zie hier voor meer informatie.

  5. Er wordt gebruik gemaakt van views met complexe where clauses

    De performance van views met complexe where clauses blijft weleens achter. Een optie kan zijn om in ArcMap, in de properties van de layer in het tabblad ‘Definition Query’, de optie ‘Attribute First’ aan te zetten. Hierdoor wordt éérst de attribute query uitgevoerd en dan pas de ruimtelijke query zoals een pan of zoom. Als de performance van views niet voldoende is dan adviseren wij het gebruik van materialized views. Maak een materialized view aan en vergelijk de performance met je gewone view. Onderstaand vind je een kort stappenplan voor het aanmaken van een materialized view in Oracle Spatial:

    Maak de view aan met SQL:

    CREATE MATERIALIZED VIEW MYUSER.MYTABLE
    BUILD IMMEDIATE
    REFRESH FORCE
    NEXT (sysdate + 1/288)
    WITH PRIMARY KEY
    AS
    SELECT
    p.KOLOM1, p.KOLOM2, p.KOLOM3, ...
    FROM
    MYTABLE p WHERE……;

    Maak vervolgens Oracle Spatial metadata voor de materialized view aan in de user_sdo_geom_metadata view, en maak een Oracle Spatial R-Tree index aan. Nu kun je de materialized view met SDE registreren met het commando sdelayer –o register.

    Sinds versie ArcSDE 10.1 moeten de commandline tools apart gedownload worden van het Esri Customer Care Portal. Ze zijn niet meer standaard onderdeel van de ArcSDE software installatie.

 

Websites:


Zoeken in een ArcSDE-database met ArcGIS for Desktop

In ArcGIS 10 for Desktop is een zoekvenster geïntroduceerd. Met dit zoekvenster is het mogelijk om snel te kunnen zoeken naar tools, items op ArcGIS Online en data op je computer. Ook is het mogelijk om te zoeken in ArcSDE- databases.

Om te kunnen zoeken naar data op de computer of in een ArcSDE-database moet de data worden geïndexeerd. In de opties van het zoekvenster kunnen de locaties die moeten worden geïndexeerd worden opgegeven. Hier kan ook een SDE-connectie worden toegevoegd.

Om de ArcSDE-database te kunnen indexeren is het belangrijk dat de gebruikersnaam en het wachtwoord worden opgeslagen in de connectie-eigenschappen. Als deze niet worden opgegeven lijkt het indexeren succesvol te zijn verlopen, maar worden er bij het zoeken naar data geen resultaten getoond.

Software: ArcGIS for Desktop en ArcSDE Workgroup (SQL Server Express) of ArcSDE Enterprise (Oracle, SQL Server, etc.) Versie: 10 en hoger Platform: Windows

Stappenplan

  1. Voeg in ArcCatalog of in het ArcCatalog-venster in ArcMap de SDE-connectie toe. Belangrijk is dat de optie ‘Save username and password’ moet zijn aangevinkt.

  2. Open het Search window en klik op Search Options

  3. Op het tabblad Index klik op de knop Add. Navigeer naar de database-connectie en voeg deze toe.

  4. Stel de Indexing Options in en klik op Ok

Nadat de het indexeren is afgerond worden zoekresultaten van de ArcSDE-database ook getoond bij de zoekresultaten.

Extra informatie

Het kan zijn dat de beveiliging van de data en toegangsrestricties op de data belangrijk zijn en de gebruikersnaam en het wachtwoord niet opgenomen mogen worden in het connectiebestand. Het is dan mogelijk om een gebruiker aan te maken die alleen leesrechten heeft en met deze gebruiker een connectie maken naar de SDE-database waarbij de gebruikersnaam en het wachtwoord worden opgeslagen. Deze connectie kan dan worden verspreid over alle gebruikers die deze connectie toe kunnen voegen aan het Index/Search Options venster. Dit zorgt ervoor dat de gebruikers de zoekfunctie kunnen gebruiken op de SDE-database.

Meer informatie over de zoekfunctie in ArcGIS for Desktop is hier te vinden.

 

Website:

Using search in ArcGIS
http://desktop.arcgis.com/en/arcmap/latest/map/working-with-arcmap/using-search-in-arcgis.htm


Veelgestelde vragen rondom de PDOK-extensie

1. Bij gebruik staat ‘Overig’ en ik kan de service niet toevoegen. Wat nu?

Indien bij gebruik ‘Overig’ staat, dient in de metadata het service type gezocht te worden. TMS-services zijn de enige services (van type ‘Overig’) die toegevoegd kunnen worden. Indien een atom feed wordt aangeboden, kan de URL gekopieerd worden naar een webbrowser. Hiermee kan een zipfile met de data worden gedownload. De werking hiervan wordt weergegeven in deze demonstratievideo.

2. Bij ‘Toon op kaart’ krijg ik de foutmelding zip-shape wordt niet ondersteund. Hoe kan ik de data toch verkrijgen?

Indien de server het format ‘zip-shape’ niet ondersteunt, kunnen tevens andere formaten worden opgevraagd. Aangezien het resultaat niet gezipt is, zal het downloaden significant langer duren. De URL kan dan uit de metadata worden gekopieerd en via de ‘Interoperability connections’ kan een connectie worden gemaakt als de WFS. Wees je zeer bewust wat je opvraagt. Sommige WFS’en bevatten zoveel data dat soms een paar 100 MB gedownload moet worden, waardoor de applicatie hier zeer lang mee bezig is.

UMN Mapserver biedt soms meerdere services aan in 1 metadatabestand. De PDOK-extensie gebruikt de eerst genoemde in de metadata en past deze toe. Indien er meerdere services worden ontsloten, kunnen deze URL’s worden gevonden in de metadata. De overige servicetypen als WMS, WFS en WCS kunnen op de gangbare wijze worden toegevoegd. De WMS/WCS kan via ‘Add data’ – GIS Servers – Add WMS Server/WCS Server worden toegevoegd. De WFS kan via Interoperability Connectie in ArcCatalog worden toegevoegd.

3. Bij het toevoegen van een WMS krijg ik de foutmelding ‘one or more layers failed to draw’?

De kans is groot dat de huidige versie van WMS niet wordt ondersteund. ArcMap kiest automatisch de meest actuele versie (1.3.0). De UMN Mapserver-implementatie (bijvoorbeeld bij Rijkswaterstaat) ondersteunen momenteel nog geen 1.3.0. Verander het naar versie 1.1.1. en de kaart zal verschijnen.

4. TMS-services kunnen niet worden toegevoegd?

Controleer of ArcBrutile geïnstalleerd is. Deze is niet bij de standaard setup toegevoegd en is een component die apart toegevoegd dient te worden.

5. Mijn scherm is zwart nadat ik een service heb toegevoegd. Hoe krijg ik wel beeld?

Zie onderstaande demonstratievideo:

PDOK serveert (TMS-)services met een specifieke schaalrange. Indien de schaal van het kaartbeeld zich buiten deze range bevindt, is het beeld zwart. Zoek vervolgens op welk schaalniveau de TMS wel zichtbaar is. Voer dit uit via de rechtermuisknop en kies ‘zoom to layer’. Indien dit niet ondersteund wordt door de server dient de gebruiker dit zelf uit te testen. Per laag kan de gebruiker vervolgens de schaal range handmatig opgeven en opslaan, zodat deze informatie in de MXD opgeslagen wordt. De volgende keer zal het beeld daarom niet zwart worden.

Esri Nederland biedt geen verdere ondersteuning op de PDOK-extensie.


Na het inloggen in ArcGIS for Server Manager ontbreken er delen van de pagina en werken de knoppen niet. Hoe komt dat?

Oorzaak

Dit probleem wordt veroorzaakt door ‘Internet Explorer Enhanced Security Configuration’ (IE ESC) op Windows Server 2003, Windows Server 2008 of Windows Vista.

Antwoord

Op de volgende manier kun je dit probleem oplossen: voeg de ArcGIS for Server Manager URL in Internet Explorer toe aan de lijst van trusted sites. Als ArcGIS for Server op het lokale intranet ingericht is, voeg dan de ArcGIS for Server Manager URL toe aan de local intranet sites lijst. Hiervoor kun je de volgende stappen opvolgen:

Stap 1
Start Internet Explorer en ga naar het menu Tools > Internet Options > Tabblad Security. Kies voor ‘Local Intranet’ of ‘Trusted Sites’:

Klik op ‘Sites’ om de lijst van trusted sites te openen.

Stap 2
De URL: http⁄⁄<servernaam> wordt automatisch ingevuld onder ‘Add this website to the zone’. Klik op ‘Add’ om de URL toe te voegen aan de lijst van trusted sites. Als de URL niet automatisch wordt ingevuld, kun je de URL ook handmatig invullen. Klik na het invullen van de URL op ‘Add’ en sluit alle venster van Internet Explorer:
 

Soms wordt het probleem ook verholpen door het instellen van de Compatibilty View in Internet Explorer. Om Compatibility View in te stellen voor ArcGIS for Server Manager, ga naar ‘Tools’ en klik op ‘Compatibility View’. Dit voegt de ArcGIS for Server Manager pagina toe aan de lijst van sites die in Compatibility View getoond worden.


Waarom zijn de kolommen SHAPE.AREA en SHAPE.LEN leeg bij een Oracle Spatial Feature Class?

Oorzaak

Het on the fly berekenen van deze eigenschappen voor objecten in het formaat SDO_GEOMETRY tijdens het bewerken in ArcMap zou een invloed op de performance kunnen hebben. Daarom heeft ESRI ervoor gekozen de standaardkolommen SHAPE.AREA en SHAPE.LEN niet te vullen.

Antwoord

Het Oracle Spatial (SDO_GEOMETRY) opslagformaat houdt de oppervlakte- en omtrekeigenschappen niet bij voor ruimtelijke objecten, waardoor de kolommen SHAPE.AREA en SHAPE.LEN niet berekend worden. Andere opslagformaten zoals SDEBINARY, ST_GEOMETRY of SDELOB houden deze eigenschappen wél bij. De kolommen SHAPE.AREA en SHAPE.LEN worden dan wel gevuld.

Gebruik de functie “Calculate Geometry” in ArcMap om de eigenschappen oppervlakte en omtrek te berekenen. De kolommen SHAPE.AREA en SHAPE.LEN zijn gereserveerd en kunnen niet gebruikt worden om de oppervlakte en omtrek hierin te laten berekenen. Maak hiervoor twee nieuwe kolommen aan, bv. een kolom met de naam “OPPERVLAKTE” en een kolom “OMTREK”. Kies hiervoor bij “Data Type” voor DOUBLE. Met dit datatype worden alle waarden opgeslagen. Laad de Feature Class vervolgens in ArcMap. Start een edit sessie (indien de layer “registered as versioned” is). Open de attribuuttabel. Rechtermuisklik op de kolom OPPERVLAKTE en kies voor “Calculate Geometry”. Kies voor “Area” om de oppervlakte te laten berekenen; “Perimeter” berekent de omtrek. Let op: deze waarden zijn statisch en worden dus niet automatisch bijgewerkt wanneer de geometrie van het ruimtelijk object gewijzigd wordt.

Er zijn alternatieven om met ArcObjects of op SQL niveau de oppervlakte en omtrek van SDO_GEOMETRY objecten te laten berekenen. Bekijk hiervoor onderstaand Esri technical article, deze is geschreven voor versie 9.3.1 maar nog steeds relevant voor versie 10.x:

FAQ: How can I get the area and length of features stored in Oracle Spatial?
http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=27329


Bij een layer in het formaat SDO_GEOMETRY (Oracle Spatial) tekenen geen objecten, objecten verdwijnen bij het inzoomen, of objecten ontbreken. Hoe kan dat?

Het is mogelijk om tabellen met een kolom van type SDO_GEOMETRY met ArcSDE te registeren met het commando sdelayer –o register. De laag kan vervolgens in ArcGIS for Desktop gebruikt worden als layer in kaarten of voor analyses.

Soms komt het voor dat de layer na het registeren niet of maar gedeeltelijk tekent in ArcGIS for Desktop, of dat objecten bij het inzoomen verdwijnen. Dit artikel beschrijft de oorzaken en mogelijke oplossingen. De gebruikte statements voor SQLPLUS of de ArcSDE commandline tools zijn alleen voorbeelden. De tabelnamen en connectie parameters moeten aangepast worden. In de voorbeelden wordt een tabel met de naam “NLP1_R97” gebruikt met een kolom “SHAPE” van type SDO_GEOMETRY.

1. De layer heeft geen ruimtelijke index

Hoe kun je dit controleren? De ruimtelijke index is een domain index van type mdsys.spatial_index op een kolom van type SDO_GEOMETRY. Je kan met SQLPLUS of met ArcSDE commandline tools controleren of er een index aanwezig is. Een voorbeeld:

select index_name,index_type from user_indexes where table_name='NLP1_R97';

of

select index_name, column_name from user_ind_columns where table_name='NLP1_R97';

Je kan ook met het commando sdelayer –o describe_long controleren of er een spatial index is. Een voorbeeld:

sdelayer -o describe_long -i 5152 -u test -p test -s oraclesupport -l NLP1_R97,shape

In de output van dit commando vind je het volgende, als er geen spatial index aanwezig is:

Spatial Index ........:
parameter: SPIDX_RTREE
exist: No
array form: -2,0,0


I/O Mode .............: LOAD

Je kan de spatial index aanmaken met bij voorbeeld het volgende commando:

sdelayer -o normal_io -i 5152 -u test -p test -s oraclesupport -l NLP1_R97,shape

Of met SQLPLUS:

create index A110_IX1 on NLP1_R97(SHAPE) indextype is mdsys.spatial_index;

2. De layer bevat objecten die niet geldig zijn binnen de Oracle Spatial validation rules

Hiervoor bestaat een Oracle Spatial validatie functie: SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT

Hier vind je een uitgebreide handleiding hoe deze functie toegepast kan worden.

3. De layer bevat objecten die niet geldig zijn binnen de ArcSDE validation rules

De validatie regels voor ruimtelijke objecten van ArcSDE zijn iets verschillend van de validatie regels van Oracle Spatial. Een object dat geldig is binnen Oracle Spatial kan ongeldig zijn in ArcSDE (niet andersom, alle objecten die in ArcSDE geldig zijn, zijn ook geldig binnen Oracle Spatial). Je kan met het commando sdelayer –o feature_info controleren welke objecten binnen de ArcSDE validatie rules ongeldig zijn:

sdelayer -o feature_info -l NLP1_R97,shape -i 5152 -u test -p test -s oraclesupport -r invalid

Hiermee worden de invalide objecten opgesomd. Om meer informatie over een invalid object met bv. de FID 672 te verkrijgen, kan het commando

sdelayer -o list -l NLP1_R97,shape -i 5152 -u test -p test -s oraclesupport -v 672

uitgevoerd worden.

Als er foutieve objecten binnen de ArcSDE validatie gevonden worden, ligt dit er meestal aan dat bij het registreren van de data geen of een te grote precision is opgegeven. Hierdoor snappen vertices onbedoeld aan elkaar en ontstaan self-intersections of null geometries. De oplossing is om de data opnieuw te registreren: Verwijder de registratie van de laag eerst met sdelayer –o delete. Registreer vervolgens de laag opnieuw met sdelayer –o register, en geef hierbij de –x optie mee, bij voorbeeld:

–x 0,300000,10000,0.001

Dit betekent dat de laag een min x waarde heeft van 0, en min y waarde van 300000, een Precision (nauwkeurigheid opslag) van 0,0001 meter en een Tolerance (gebruikt voor ruimtelijke analyses) van 0,001 meter. Deze waarden zijn in het algemeen geschikt voor data opgeslagen in het Rijksdriehoekstelsel.

Meer informatie hierover is hier te vinden.

4. De laag bevat niet ondersteunde Oracle entity types

De volgende entity types kan ArcSDE niet lezen:

  • Application-specific geographic elements (SDO_ETYPE 0)
  • Optimized circles (SDO_ETYPE 3, interpretation 4)
  • Heterogeneous collections (SDO_GTYPE 4)

Je kan de entity types controleren met bijvoorbeeld het volgende commando:

select distinct a.SHAPE.sdo_gtype from NLP1_R97 a;

Kijk hier voor meer informatie over dit onderwerp. Dit artikel is geschreven voor ArcSDE 9.3.1, maar nog steeds van toepassing op actuele versies.

5. De laag is niet met de juiste ArcSDE entity types geregistreerd

Bij het registeren van een Oracle Spatial layer wordt met de optie –e de entity type van de layer opgegeven (bv. lines, points, multipart, null geometries, z-waarden, measure waarden….). De entity types zijn uitgelegd in de ArcSDE command reference (Start, Programs, ArcGIS, ArcSDE, Command Reference). Als een layer bijvoorbeeld multipart objecten bevat en dit entity type niet geregistreerd is met de optie –e, zullen de multipart objecten niet tekenen. De geregistreerde entity types van een layer kunnen worden opgevraagd met het commando sdelayer –o describe_long. De entity types kunnen worden aangepast door uitvoeren van het commando sdelayer –o alter met de optie –e.

6. De laag is geregistreerd zonder of met een onjuiste registration ID

Het is mogelijk om layers zonder registration ID te registeren met ArcSDE (optie “-C NONE” bij het uitvoeren van sdelayer –o register). Voor een goede performance en om alle functies binnen ArcGIS te kunnen gebruiken is het echter raadzaam om wel een registration id op te geven bij de registratie van de layer. Deze kolom moet van type NUMBER(38) NOT NULL UNIQUE of NUMBER(38) PRIMARY KEY zijn. Je kan met het commando sdetable –o describe_reg controleren of de tabel met een registration ID geregistreerd is. De registratie kan aangepast worden door het uitvoeren van het commando sdetable –o alter_reg.

Voorbeeld voor het correct registreren van een Oracle Spatial layer met SDE:

Afsluitend volgt nog een voorbeeld voor het registeren van een Oracle Spatial layer met ArcSDE.

Door aanpassen van de connection parameters –u, -p, -i, en –s, de layernaam en naam van de spatial column en de entity type is deze syntax geschikt voor de meeste layers die in het Rijksdriehoekstelsel opgeslagen zijn:

sdelayer -o register -i 5152 -u test -p test -s oraclesupport -l NLP1_R97,shape -e a -t SDO_GEOMETRY -k SDO_GEOMETRY -C OBJECTID,SDE -P HIGH -x 0,300000,10000,0.001 -G 28992

Aansluitend is het soms nog nodig om de envelope van een layer te laten berekenen, zodat de objecten gecentreerd op het scherm verschijnen:

sdelayer -o alter -E calc -i 5152 -u test -p test -s oraclesupport -l NLP1_R97,shape

De Esri Knowledgebase biedt ook uitgebreide informatie over het registeren van Oracle Spatial layers:

Problem: SDO_Geometry layer does not completely draw due to invalid geometry data in Oracle Spatial layer

FAQ: Why do third-party Oracle Spatial feature classes draw at full extent but sometimes fail when zoomed or panned?

FAQ: Which Oracle SDO_GEOMETRY geometry types are supported by ArcSDE?

FAQ: How do I manually register Oracle Spatial tables containing third-party data?

Het laatste artikel beschrijft alle voorwaarden waaraan een tabel moet voldoen om hem met ArcSDE te kunnen registreren.

 

Websites:


Waar kan het aan liggen als de ST_GEOMETRY functions in SQL niet werken of foutmeldingen geven?

Oorzaak

Een benodigde library file kan niet gevonden worden door het Oracle extproc proces, of een nodige library is niet voor de juiste ArcSDE Software versie of voor het juiste besturingssysteem.

Antwoord

Het gebruik van de ST_GEOMETRY functies kan foutmeldingen over ongeldige dll paden of libraries geven zoals:

ORA-28595: Extproc agent : Invalid DLL Path
ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 170
ORA-06512: at "SDE.ST_RELATION_OPERATORS", line 303"

of

ORA-06520: PL/SQL: Error loading external library
ORA-06522: libsg.so: cannot open shared object file: No such file or directory
ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 12
ORA-06512: at "SDE.ST_GEOMETRY", line 56"

(In plaats van “libsg.so” kan de foutmelding ook verwijzen naar “libpe.so”, “pe.dll” of “sg.dll”)

of

ORA-04061: existing state of has been invalidated
ORA-04061: existing state of package body "SDE.ST_GEOMETRY_SHAPELIB_PKG" has been invalidated
ORA-06508: PL/SQL: could not find program unit being called

De SQL functies voor de spatial type for Oracle maken gebruik van 3 shared libraries door de Oracle external procedure agent (extproc):

  • ST_SHAPELIB
  • Projection Engine
  • Geometry

De Oracle listener moet geconfigureerd worden om met behulp van de extproc de functies uit de ST_SHAPELIB library te kunnen gebruiken. Hiervoor moet de pad naar het bestand dat de library bevat in de omgevingsvariabele EXTPROC_DLL gedefinieerd worden. Voor de projection engine en geometry library moet de locatie van de bestanden niet door de EXTPROC_DLLS gedefinieerd worden maar door standaard besturingsysteem variabelen zoals de PATH of de LD_LIBRARY_PATH variabele. In detail moeten voor het correcte werken van de ST_GEOMETRY functies de volgende instellingen gemaakt/gecontroleerd worden:

  • De locatie van het bestand dat de ST_SHAPELIB bevat, moet aan de database bekend gemaakt worden zodat de informatie verder aan het listener proces en aan het extproc proces kunnen worden doorgegeven. Hiervoor moet de library defintion in de user_libraries tabel wijzen naar de correcte locatie van het bestand dat de ST_SHAPELIB functie bevat. Controleer de locatie door bij voorbeeld de query: select file_spec from user_libraries where library_name = 'ST_SHAPELIB'; Pas de locatie voor het bestand zo nodig aan (lees hier meer over dit onderwerp).
  • De database moet de service kennen die requests naar de extproc services afhandelt. Hiervoor moet de “EXTPROC_CONNECTION_DATA” entry in het bestand tnsnames.ora geconfigureerd worden. De entry wordt door de database gebruikt om function calls naar het extproc proces te sturen. Een voorbeeld hiervoor:
     
    EXTPROC_CONNECTION_DATA =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))
    )
    (CONNECT_DATA =
    (SID = PLSExtProc)
    (PRESENTATION = RO)
    )
    )

     
    De waarden voor “SID” en “KEY” moeten overeenkomen met de instellingen die hiervoor in het listener.ora bestand gemaakt zijn.
  • Het extproc proces moet het bestand dat de ST_SHAPELIB bevat kunnen laden. Hiervoor moet de omgevingsvariabele EXTPROC_DLLS in het bestand listener.ora gedefinieerd worden (bij voorbeeld ENVS="EXTPROC_DLLS=C:\ArcSDE\sdeexe93\bin\st_shapelib.dll)
  • Ook het pad naar de Geometry en Projection Engine libraries moet in de listener.ora worden opgenomen. Het extproc proces laadt niet direct functies uit deze libraries, daarom hoeft de locatie niet in de variabele EXTPROC_DLLS gedefinieerd worden. Wel moet de pad naar deze 2 bestanden in de variabele LD_LIBRARY_PATH (of SHLIB_PATH, LIBPATH of PATH, afhankelijk van het besturingssysteem) worden opgenomen in het bestand listener.ora, bij voorbeeld: ENVS="EXTPROC_DLLS=/disc1/sde/sdeexe93/lib/libst_shapelib.so,LD_LIBRARY_PATH=/disc1/sde/sdeexe93/lib")
  • Het proces extproc moet lesrechten hebben op de locatie waar de library files staan, en execute permissions hebben voor de bestanden.
  • Bij het gebruik van de ST_GEOMETRY functies kunnen meldingen over ongeldige package body’s optreden zoals:
     
    ORA-04061: existing state of has been invalidated
    ORA-04061: existing state of package body "SDE.ST_GEOMETRY_....." has been invalidated
    ORA-06508: PL/SQL: could not find program unit being called
     
    De oplossing hiervoor is om de ongeldige objecten te recompileren. Lees hier meer over voor dit onderwerp.

Details over het configureren van de database voor het gebruik van de ST_GEOMETRY functions vindt u in de ArcSDE install guides op de installatie CD’s en in de ArcGIS Server Webhelp: Configuring Oracle Net Services to use ST_Geometry SQL functions

Configuratie van de ST_GEOMETRY functions indien er geen ArcSDE software op de database server geïnstalleerd wordt

Indien de ArcSDE software niet op de database server geïnstalleerd wordt, moeten de 3 libraries handmatig naar de Oracle server gekopieerd worden, en moet de locatie van de bestanden bekend gemaakt worden in de listener.ora. De 3 bestanden moeten wel voor het juiste besturingssysteem zijn. Als de database bij voorbeeld op LINUX draait, moeten de 3 bestanden ook voor Linux zijn. In de volgende tabel vindt u een overzicht over de namen van de bestanden onder verschillende besturingssystemen:

Library name OS-dependent file names
st_shapelib st_shapelib.dll (Windows), libst_shapelib.so (Solaris, Linux), libst_shapelib_64.so (IBM and HP-UX Itanium), or libst_shapelib.sl (HP-UX64)
Projection Engine pe.dll (Windows), libpe.so (Solaris, Linux), libpe_64.so (IBM and HP-UX Itanium) or libpe.sl (HP-UX64)
Geometry sg.dll (Windows), libsg.so (Solaris, Linux), libsg_64.so (IBM and HP-UX Itanium) or libsg.sl (HP-UX64)

 

Zie hiervoor ook het hoofdstuk “Installing the ArcSDE component and Oracle on separate servers” in de ArcSDE installguide op de ArcSDE installatie CD.

Bij de installatie van een ArcSDE service pack of Patch op een remote machine, wordt het SDE repository op de database server bijgewerkt met het sdesetup –o upgrade commando. Na het uitvoeren van sdesetup –o upgrade moeten de 3 library files opnieuw naar de database server gekopieerd worden. Zie hiervoor ook de installatiehandleiding voor de Patch of Service Pack.

Samenvattend is er dus een aantal mogelijke oorzaken waarom de ST_GEOMETRY functies niet of niet goed werken:

  • De user_library tabel verwijst naar een onjuiste locatie voor het bestand dat de ST_SHAPELIB library bevat;
  • Het bestand listener.ora is niet goed geconfigureerd;
  • Het bestand tnsnames.ora is niet goed geconfigureerd;
  • Het extproc proces heeft geen read en execute rechten op de locatie van het bestand dat de ST_SHAPELIB library bevat;
  • De 3 libraries op de database server zijn niet voor de juiste SDE versie of niet voor het juiste besturingssysteem;
  • Er zijn ongecompileerde Oracle Packages die gerecompileerd moeten worden.

Welke types ArcSDE Geodatabases zijn er verkrijgbaar, hoe kunnen deze geïnstalleerd worden en hoe is de licentie hiervoor geregeld?

De ArcSDE software is in 2 variaties verkrijgbaar:

  1. ArcSDE for SQL Server Express;
  2. ArcSDE for Oracle, SQL Server, PostgreSQL, IMB DB2 en Informix.

In het volgende artikel worden de verschillen qua inzetmogelijkheden, installatie en benodigde licentie uitgelegd.

1. ArcSDE for SQL Server Express

Voor ArcSDE for SQL Server Express bestaan wederom 2 variaties:

  1. ArcSDE for SQL Server Express, geïmplementeerd in ArcGIS Engine, ArcGIS for Desktop Standard en ArcGIS for Desktop Advanced (Voormalige productnaam: ArcSDE Personal)

    Sinds versie ArcGIS 9.2 worden ArcGIS for Desktop Standard en ArcGIS for Desktop Advanced uitgeleverd met een setup voor SQL Server Express. Met een ArcGIS for Desktop Standard en ArcGIS for Desktop Advanced licentie is het mogelijk om binnen SQL Server Express een ArcSDE Geodatabase aan te maken. Er kan met 3 users gelijktijdig een connect gemaakt worden naar deze database. Deze variant van ArcSDE werd in eerdere versies van de ArcGIS software ook “ArcSDE Personal” genoemd.

    Vanaf versie ArcGIS 9.3 wordt ook ArcGIS Engine geleverd met een Microsoft SQL Server Express installatie. Ook met een ArcGIS Engine licentie kan dus een ArcSDE for SQL Server Express database ingericht worden. Om met een ArcGIS Engine applicatie in een ArcSDE for SQL Server Express Geodatabase te kunnen schrijven, is er een aparte licentie nodig: de Geodatabase Update extension for ArcGIS Engine. Zonder deze licentie is de connectie vanuit een ArcGIS Engine applicatie alleen lezend.
     
  2. ArcSDE for SQL Server Express, geïmplementeerd in ArcGIS for Server Workgroup (Voormalige productnaam: ArcSDE for Workgroup)

    In een ArcGIS for Server Workgroup licentie is ook een ArcSDE for SQL Server Express licentie geïmplementeerd. Hiermee kan een ArcSDE for SQL Server Express Geodatabase ingericht worden die met maximaal 10 desktop gebruikers gelijktijdige geraadpleegd of bewerkt kan worden (ArcGIS for Desktop Basic, ArcGIS for Desktop Standard, ArcGIS for Desktop Advanced, een ArcGIS Engine applicatie, AutoCAD, MicroStation...)

Een Geodatabase binnen SQL Server Express kan wel met een onbeperkt aantal Webapplicaties benaderd worden. Hij kan volledig beheerd worden met ArcGIS for Desktop Standard of ArcGIS for Desktop Advanced, vanuit ArcCatalog. Voor het inrichten en het beheer van een SQL Server Express Geodatabase is geen database kennis of extra software nodig. Het kan allemaal vanuit ArcCatalog.

Er zijn een aantal beperkingen bij het gebruik van SQL Server Express als onderliggend opslagsysteem:

  • Microsoft limiteert het gebruik van SQL Server Express voor maximaal 1 GB RAM en één CPU (of core binnen een socket). SQL Server Express 2005 en 2008 databases kunnen maximaal 4 GB groot worden. Een SQL Server 2008 Express R2 database kan tot 10 GB groeien. De gebruiker hoeft het geheugengebruik en de database grootte niet zelf in de gaten te houden, dit gebeurt automatisch door de software;
  • Bij het gebruik van SQL Server Express als onderliggend opslagsysteem, is alleen Windows Authenticatie en direct connect mogelijk (geen database authenticatie en application server connect);
  • Het gebruik van user-defined views en het gebruik van de ST_RASTER storage type is niet mogelijk (wel kunnen rasters worden opgeslagen in de database);
  • Er geldt een maximum van 3 gelijktijdige gebruikers met een ArcGIS for Desktop Advanced of een ArcGIS for Desktop Standard licentie, en 10 gelijktijdige gebruikers met een ArcGIS for Server Workgroup licentie.

Hoe kun je ArcSDE for SQL Server Express installeren?

Voor het inrichten van een ArcSDE for SQL Server Express Geodatabase zijn 3 stappen nodig:

  1. Installatie van SQL Server Express en aanmaken van een SQL Server Express instance. Voer hiervoor de ESRI.exe uit van de ArcGIS for Server Workgroup, ArcGIS for Desktop, of ArcGIS Engine installatie media, en kies voor de optie “Install ArcSDE for Microsoft SQL Server Express”. Een uitgebreid stappenplan vind je onder http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//003n0000004t000000.htm;
  2. In de tweede stap van de ArcSDE for Microsoft SQL Server Express installation wizard wordt de zojuist aangemaakte SQL Server Express instance ingericht voor het opslaan van Geodatabases. Er wordt een server administrator user toegevoegd en de software wordt geautoriseerd (in het geval van ArcSDE for Workgroup). Voor ArcSDE for SQL Server Express met een beperking van 3 gebruikers is er geen extra licentie nodig. De licentie zit in dit geval gekoppeld aan de ArcGIS for Desktop Advanced, ArcGIS for Desktop Standard of ArcGIS Engine licentie. Een uitgebreid stappenplan vind je onder http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Enabling_SQL_Server_Express_to_store_geodatabases/003n0000004v000000/ ;
  3. Aanmaken van de Geodatabase. In ArcCatalog kan de server administrator user een ArcSDE for SQL Server Express database binnen de SQL Server instance aanmaken. Je vind de benodigde stappen onder http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Creating_a_geodatabase_on_a_database_server/003n00000028000000/

2. ArcSDE for Oracle, SQL Server, PostgreSQL, IBM DB2 en IBM Informix

Deze variant van ArcSDE is geïmplementeerd in het ArcGIS for Server Enterprise software pakket. Alle variaties van ArcGIS for Server Enterprise (Basic, Standaard, Advanced) bevatten de software en licentie voor het inrichten van een Enterprise Geodatabase. Met ArcGIS for Server Enterprise wordt de ArcSDE software zonder beperkingen betreffende de hardware, database grootte en het aantal gebruikers uitgeleverd. Het inrichten en het beheer van de DBMS wordt vaak uitgevoerd door een database administrator. De licentie voor het DBMS systeem (Oracle, SQL Server, PostgreSQL, IBM DB2 of Informix) moet door de gebruiker zelf geregeld worden en is niet onderdeel van ArcGIS for Server Enterprise.

Hoe kun je ArcSDE op Enterprise niveau installeren?

De installatie bestaat uit 3 stappen:

  1. Inrichten van het gekozen DBMS systeem (Oracle, SQL Server, PostgreSQL, IBM DB2 of Informix)
  2. Installatie van de ArcSDE software
  3. Uitvoeren van de postinstallation wizard van de ArcSDE software. Hierbij wordt er een administratieve user met de juiste rechten aangemaakt, de ArcSDE schema tabellen ingericht, de software geautoriseerd en optioneel een ArcSDE service aangemaakt

Meer informatie over het inrichten van een ArcSDE Geodatabase op Enterprise niveau vind je onder http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Creation_of_ArcSDE_geodatabases_licensed_through_ArcGIS_Server_Enterprise/003n00000029000000/.

Het inrichten van een ArcSDE Geodatabase op Enterprise niveau is complexer dan het inrichten van ArcSDE for SQL Server Express. Meestal wordt deze installatie uitgevoerd door één van onze System Engineers.


Ik wil een Oracle (spatial) view in ArcGIS gebruiken. Hoe kan ik dit het beste doen?

Sinds ArcGIS for Desktop 10.1 is het mogelijk om bestaande Oracle spatial views (of tabellen met een kolom van type SDO_GEOMETRY) direct in ArcMap te gebruiken, zonder dat je deze eerst moet registreren met ArcSDE. Sleep hiervoor de view vanuit de Catalog window naar ArcMap, of voeg de view als query layer toe in ArcMap via het menu: File, Add Data, Add Query Layer.

Ook kun je gebruik maken van de toolbox tool ‘Create Query Layer’ om de view als layer in ArcMap toe te voegen. Meer informatie over het werken met views in ArcGIS vind je onder http://desktop.arcgis.com/en/arcmap/latest/manage-data/using-sql-with-gdbs/views-in-geodatabase.htm. Hier staan ook voorbeelden voor het aanmaken van views in verschillende DBMS systemen.

Je kunt views vanaf ArcGIS for Desktop 10.1 ook aanmaken vanuit ArcGIS for Desktop. Gebruik hiervoor de toolbox tool ‘Create Database View’. Deze views zijn niet met ArcSDE geregistreerd, maar dat is dus ook niet nodig voor het gebruik in ArcMap.

De Oracle spatial view is wel read-only in ArcGIS. Ook is het niet mogelijk om metadata ArcCatalog aan te maken voor views.

Werk je met ArcGIS for Desktop 10.0? Dan is het wel noodzakelijk om de view te registeren met ArcSDE om hem in ArcGIS for Desktop te kunnen gebruiken. Er zijn 2 opties om de view te gebruiken in ArcGIS for Desktop 10.0:

Optie 1: Registreer de bestaande view in ArcSDE

Bij de eerste methode gebruik je het ArcSDE commando sdelayer –o register (voor views met een kolom van type SDO_GEOMETRY) of sdetable –o register (voor niet-ruimtelijke views) om de view te registreren in het ArcSDE user schema.

Voor het registreren van layers met een kolom van type SDO_GEOMETRY moet voor de view geldige Oracle Spatial metadata aangemaakt worden.

Stap 1: Ga naar SQL*Plus, log in als de eigenaar van de view, en voeg Oracle Spatial metadata toe:

insert into user_sdo_geom_metadata values….

Voorbeeld:

insert into user_sdo_geom_metadata values (' NLP1_R97', 'GEOMETRIE', MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('X',0,300000,.0005), MDSYS.SDO_DIM_ELEMENT('Y',300000, 650000,.0005)), 28992) ;

Stap 2: Registreer de view me sdelayer –o register….

Voorbeeld:

sdelayer -o register -i 5152 -u test -p test -s oraclesupport -l NLP1_R97,geometrie -e a -t SDO_GEOMETRY -k SDO_GEOMETRY -C OBJECTID,USER -P HIGH -x 0,300000,10000,0.001 -G 28992

Hierna kan de layer gebruikt worden in de ArcGIS for Desktop applicaties.

Hierna kan de layer gebruikt worden in de ArcGIS for Desktop 10.0 applicaties.

Optie 2: Maak de view opnieuw aan in ArcSDE

De tweede methode komt er in feite op neer dat je de bestaande view verwijdert en daarna opnieuw aanmaakt met een ArcSDE commando. De stappen hiervoor zijn:

Stap 1: Verzamel informatie over de originele view. De definitie en syntax van de view vraag je op met een SQL*Plus commando: set long 30000 select text from user_views / dba_views / all_views

Stap 2: Verwijder de view met SQL*Plus en maak de view opnieuw aan met het sdetable -o create_view commando. Voor het aanmaken van de view met het sdetable –o create_view commando, zie ook de volgende links van Esri:

 

Aandachtspunten:

  • Alle kolommen die in de uiteindelijke view komen, moeten voorkomen in het sdetable commando (-c parameter);
  • De object-id kolom uit de ruimtelijke tabel moet aanwezig zijn in de kolom lijst;
  • Om een ruimtelijke view aan te maken, moet ook de ruimtelijke kolom in de kolom lijst opgenomen zijn;
  • De "where" clause kan weggelaten worden;
  • De ruimtelijke tabel moet als eerste staan in de -t lijst;
  • Er is een verschil tussen de -t en -T optie. Met de –T optie geef je de naam van de view op. Met de –t optie geef je aan welke tabellen in de view gebruikt moeten worden.

Stap 3: Maak de view volledig via een SQL*Plus: create or replace view. Complexe where clausules zijn niet mogelijk met het sdetable commando. De clausules kunnen later worden toegevoegd via een SQL*Plus create or replace view commando. In het geval van een eenvoudige where clausule sla je stap drie over en gebruik je de clausule in het sdetable commando.

Opmerkingen:

  1. Wanneer in de ruimtelijke view meerdere tabellen aan elkaar gekoppeld worden, mag slechts één van deze tabellen een ruimtelijke kolom bevatten. Deze beperking geldt ook wanneer de ruimtelijke kolom uit de andere tabel niet in de view gebruikt wordt. De workaround voor deze beperking is om eerst een administratieve view op de betreffende tabel aan te maken. De administratieve view kun je vervolgens gebruiken binnen de ruimtelijke view;
  2. Een ruimtelijke view werkt alleen op data die niet geversioned is: De view kijkt alleen naar de base table. Is de onderliggende tabel toch geversioned, dan zal de informatie uit de A- en D-tabellen niet getoond worden, met een inconsistent resultaat als gevolg!;
  3. De "alle kolommen dienen aanwezig te zijn" clausule is van toepassing vanaf ArcSDE 9.X. Vanaf deze versie wordt namelijk informatie over alle in ArcSDE tabellen aanwezige kolommen opgeslagen in de ArcSDE repository (sde.column_registry). Het is dus ook niet verstandig om met niet-Esri software kolommen toe te voegen of te verwijderen;
  4. Vanuit ArcGIS is niet te zien of een feature class een tabel is of een view. Via SQL*Plus kan dit natuurlijk wel. In de ArcSDE repository is een view ook te herkennen: zo is voor een view de base_layer_id in de sde.layers tabel gevuld (met het layer_id van de originele ruimtelijke tabel).
  5. ArcSDE 10.2.2 was de laatste beschikbare versie van de ArcSDE commandline tools. Er zijn geen ArcSDE commandline tools meer beschikbaar voor versie 10.3.x en 10.4. Mocht je workflow vereisen dat de view met ArcSDE geregistreerd is, dan kun je de ArcSDE 10.2.2 commandline tools ook nog gebruiken om de view in een 10.3.x of 10.4 Geodatabase te registeren met ArcSDE.

Hoe gebruik ik ArcSDE logfile tabellen voor opslaan van selecties?

ArcSDE is een applicatie die opereert op de grens van twee werelden: GIS applicaties en database management systemen. Dit betekent dat ArcSDE voor oplossingen moet zorgen op onderdelen waar de twee werelden van elkaar verschillen. Eén van deze verschillen is de manier waarop er wordt omgegaan met selecties. Binnen ArcMap is het heel eenvoudig: "selecteer alle percelen die binnen een afstand van 1.500 meter van een spoorlijn liggen" (select > select by location). Druk op OK en het resultaat licht geel op (selection > options > selection color). De selectie wordt daarna vastgehouden voor verdere transacties, totdat de gebruiker deze verwijderd. Een DBMS kent het principe van het vasthouden van een selectie niet. In een database levert een selectie informatie op het beeldscherm op en meer niet. De database vergeet de informatie daarna onmiddellijk. Een database edit transactie bestaat dan ook altijd uit een gecombineerde selectie en mutatie actie.

Een GIS client wil een selectie vasthouden maar een DBMS kan dit niet. ArcSDE heeft hiervoor twee oplossingen:

  • Selectie opslaan in het geheugen van de client;
  • Selectie opslaan in een tabel in het DBMS.

De gekozen methode is afhankelijk van de gebruikte software. Voor ArcGIS is de drempelwaarde honderd geselecteerde objecten. Bij een selectie van meer dan honderd objecten wordt de selectie in speciale database tabellen opgeslagen. ArcView GIS en ArcIMS slaan alle selecties op in de database. De grenswaarde is in te stellen in de registry van de client machine:

HKEY_CURRENT_USER\Software\ESRI\Geodatabase\Settings\SelectionThreshold
(Kijk ook hier voor deze instelling).

Iedere Esri client conformeert zich aan deze instelling. Een waarde van vijfhonderd zorgt er dus voor dat selecties van minder dan vijfhonderd objecten, via welke client dan ook, in het geheugen van de client computer worden opgeslagen.

Beide methoden van opslag hebben voor- en nadelen:

  • Opslag in het geheugen kost veel minder tijd. Zo hoeft de informatie bijvoorbeeld niet over het netwerk naar het DBMS gestuurd te worden;
  • Het opslaan van de informatie in een DBMS levert extra transacties op zodat de algemene respons ervan omlaag gaat;
  • Daarentegen gebruikt de opslag in een tabel in het DBMS geen (extra) geheugenruimte op de client.

Als er wordt gekozen voor de opslag in een DMBS tabel, zijn er wederom verschillende opties beschikbaar:

Tot ArcGIS 9 bestond er slechts 1 logfile mechanisme voor het opslaan van selecties in een tabel in het DBMS. In het schema van de gebruiker werden twee tabellen aangemaakt (SDE_LOGFILES en SDE_LOGFILE_DATA). Alle gebruikers, die onder hetzelfde account een connectie naar ArcSDE maakten, deelden deze tabellen. Deze tabellen werden pas geleegd op het moment dat de gebruiker uitlogde. Als een gebruiker tijdens zijn sessie veel grote selecties heeft gemaakt, kan dit veel tijd kosten. Deze implementatie kon er toe leiden dat er conflicten ontstonden op het moment dat meerdere gebruikers 1 database account deelden.

Vanaf ArcGIS 9 zijn er drie methoden om het gebruik van ArcSDE logfile tabellen te implementeren:

  • Shared logfiles;
  • Session logfiles (user-owned, of sde-owned);
  • Standalone logfiles (user-owned, of sde-owned).

Shared logfiles

De shared logfile methode borduurt voort op het logfile mechanisme zoals dat ook in eerdere versies van ArcSDE aanwezig was. Alleen wordt de selectie nu al uit de tabel verwijderd op het moment dat de gebruiker de selectie in de client applicatie ongedaan maakt. Dit voorkomt extreem lange delete operaties aan het eind van een gebruikers-sessie. Een delete statement zorgt altijd voor het verwijderen van de selecties. Deze methode kent nog steeds een risico op ‘contention’ wanneer veel gebruikers het account delen. Ook heeft het account create table privileges binnen de database nodig om de vereiste tabellen aan te maken. Deze privileges kunt u overigens intrekken op het moment dat de tabellen eenmaal zijn aangemaakt.

Session logfiles (user-owned, of sde-owned)

De session logfile, user-owned methode maakt voor iedere sessie afzonderlijke logfile tabellen aan. Dus ook wanneer meerdere gebruikers hetzelfde account delen, gebruikt elke gebruiker (sessie) zijn eigen tabellen. Na afloop van de sessie worden de tabellen uit het schema verwijderd. In dit scenario heeft het account dus ook create table privileges binnen de database nodig om de tabellen aan te maken. Omdat deze tabellen voor elke sessie opnieuw aangemaakt moeten worden, kunnen deze rechten niet ingetrokken worden.

Wanneer je een selectie ongedaan maakt, wordt deze door een truncate statement verwijderd indien het de volledige selectie set betreft. Verwijder je slechts een deel van de selectie set, zal een delete statement gebruikt worden.

Een variant op deze logfile configuratie is een pool van session logfiles die binnen het sde schema aangemaakt wordt. In dit geval moet het maximaal aantal gelijktijdige sessies van te voren bekend zijn, de pool moet voorzien in voldoende logfiles voor al deze sessies. In dit scenario hebben individuele gebruikers geen create table privileges meer nodig. Maar zijn er onverhoopt toch te weinig logfiles in de pool beschikbaar dan zal ArcSDE alsnog proberen om de tabellen in het gebruikers schema aan te maken.

Zijn de create table privileges ingetrokken dan zal dit leiden tot een foutmelding dat er onvoldoende privileges aan de gebruiker zijn toegekend.

Standalone logfiles (user-owned, of sde-owned)

De standalone logfile methode slaat de selecties per layer in een aparte tabel op, deze tabel wordt per gebruiker aangemaakt. De tabellen worden weer verwijderd op het moment dat de gebruiker de connectie verbreekt. Bij deze methode heeft de gebruiker dus ook create table privileges nodig. Het gebruik van deze methode kan tot veel ddl activiteit op de database leiden.

Ook deze logfile methode kent een variant waarbij de logfiles uit een pool van tabellen in het sde schema betrokken worden.

Welke methode gebruikt wordt, wordt bepaald door de instellingen die zijn opgeslagen in de server_config tabel. Tijdens de installatie van ArcSDE wordt deze tabel gevuld met de informatie uit het bestand giomgr.defs (te vinden onder %SDEHOME%\etc). In een bestaande omgeving kun je de instellingen wijzigen met het behulp van het sdeconfig commando.

Voorbeelden van logfiles:

Shared logfiles:
ALLOWSESSIONLOGFILE FALSE
MAXSTANDALONELOGS 0
LOGFILEPOOLSIZE 0

Session logfiles, user-owned :
ALLOWSESSIONLOGFILE TRUE
MAXSTANDALONELOGS 0
LOGFILEPOOLSIZE 0

Session logfiles, sde-owned :
ALLOWSESSIONLOGFILE TRUE
MAXSTANDALONELOGS 0
LOGFILEPOOLSIZE <n>

Standalone logfiles, user-owned:
ALLOWSESSIONLOGFILE FALSE
MAXSTANDALONELOGS <m>
LOGFILEPOOLSIZE 0

Standalone logfiles, user-owned:
ALLOWSESSIONLOGFILE FALSE
MAXSTANDALONELOGS <m>
LOGFILEPOOLSIZE <n>*<m>

Met n als het totaal aantal verwachte gelijktijdige sessies, en m als het maximaal aantal standalone logfile tabellen dat per sessie toegestaan is.

De HOLDLOGPOOLTABLES variabele bepaalt, wanneer tabellen weer beschikbaar komen voor de pool. Wanneer deze variabele op true wordt ingesteld, wordt de tabel gedurende de hele sessie vastgehouden en na afloop van de sessie waar voor de pool beschikbaar gesteld. Wanneer deze variabele op false wordt ingesteld wordt de tabel al weer aan de pool beschikbaar gesteld op het moment dat de selectie set verwijderd is.