User Tools

Site Tools


tecnica:gps_cartografia_gis:gdal_oracle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
tecnica:gps_cartografia_gis:gdal_oracle [2009/05/18 16:39] niccolotecnica:gps_cartografia_gis:gdal_oracle [2010/06/01 10:57] niccolo
Line 1: Line 1:
-====== GDAL/OGR su Debian GNU/Linux con supporto ad Oracle Spatial ======+====== GDAL/OGR con supporto ad Oracle su Debian GNU/Linux ======
  
-Questa ricetta serve a compilare la libreria GDAL/OGR con il supporto ad Oracle Spatial (Oracle Instantclient) su una Debian Lenny. I passaggo sono i seguenti:+Questa ricetta serve a compilare la libreria GDAL/OGR con il supporto ad Oracle su una Debian Lenny. 
 + 
 +Il supporto viene chiamato **OCI** (Oracle Call Interface) e viene fornito dal software Oracle Instantclient. Per la compilazione di GDAL è necessario anche il relativo Oracle Instantclient SDK. 
 + 
 +I passaggo sono i seguenti:
  
   - **Trasformazione** dei pacchetti **rpm** forniti da Oracle in pacchetti **deb**.   - **Trasformazione** dei pacchetti **rpm** forniti da Oracle in pacchetti **deb**.
   - Installazione di Oracle Instantclient e relativo SDK.   - Installazione di Oracle Instantclient e relativo SDK.
-  - Compilazione dei sorgenti Debian **gdal** con supporto **oci**.+  - Compilazione di **gdal** con supporto **oci** dai sorgenti Debian.
   - Intallazione dei pacchetti compilati.   - Intallazione dei pacchetti compilati.
  
Line 73: Line 77:
  
 <code> <code>
-dpkg-buildpackage -rfakeroor+dpkg-buildpackage -rfakeroot
 </code> </code>
  
Line 91: Line 95:
 ===== Installazione e verifica ===== ===== Installazione e verifica =====
  
-Si installano almeno i pacchetti **''gdal-bin''** e **''libgdal1-1.5.0''**. Conviene metterli on-hold per evitare che vengano aggiornati:+Si installano almeno i pacchetti **''gdal-bin''** e **''libgdal1-1.5.0''**. Conviene metterli //on-hold// per evitare che vengano aggiornati:
  
 <code> <code>
Line 103: Line 107:
 ldd /usr/lib/libgdal1.5.0.so | grep oracle ldd /usr/lib/libgdal1.5.0.so | grep oracle
 ogrinfo --formats ogrinfo --formats
 +</code>
 +
 +Una layer OGR/Oracle su MapServer si ottiene con un mapfile del tipo:
 +
 +<file>
 +  LAYER
 +    NAME "aree_strada"
 +    STATUS DEFAULT
 +    TYPE POLYGON
 +    CONNECTIONTYPE OGR
 +    CONNECTION "OCI:username/passwd@192.168.1.122"
 +    DATA "tablename"
 +    CLASS
 +      COLOR 212 164 96
 +    END
 +  END
 +</file>
 +
 +La stringa di connessione è composta come segue:
 +
 +<code>
 +OCI:username/passwd@host:port/service_name"
 +</code>
 +
 +Il server Oracle risponde sulla porta **1521 TCP**.
 +
 +Un esempio di **interrogazione SQL** con ''ogrinfo'':
 +
 +<code>
 +ogrinfo "OCI:username/passwd@host:port/service_name" \
 +    -sql 'SELECT TOPONIMO_STRADA FROM REPLICA_TOPONOMASTICA.TOP_CIVICI'
 +</code>
 +
 +===== Charset encoding =====
 +
 +Per determinare il charset utilizzato dalla libreria OCI si imposta la variabile d'ambiente **''NLS_LANG''**:
 +
 +<code>
 +export NLS_LANG=italian_italy.UTF8
 +</code>
 +
 +Tale configurazione è fondamentale ad esempio quando si importano dati da Oracle a PostgreSQL con **''ogr2ogr''** e il charset originale non coincide con quello desiderato.
 +
 +Per vedere il charset utilizzato da Orcale:
 +
 +<code sql>
 +SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER = 'NLS_CHARACTERSET';
 +</code>
 +<code>
 +PARAMETER            VALUE
 +-------------------- -----------------
 +NLS_CHARACTERSET     WE8ISO8859P1
 +</code>
 +
 +È probabile che sia necessario impostare anche la variabile **''NLS_NUMERIC_CHARACTERS''** che definisce il carattere separatore dei decimali e il carattere di raggruppamento delle migliaia (il punto decimale e la virgola per gli anglosassoni, virgola decimale e punto per l'Italia):
 +
 +<code>
 +export NLS_NUMERIC_CHARACTERS".,"
 +</code>
 +
 +Per sapere quale convenzione utilizza Oracle è sufficiente fare il dump della tabella con ''ogrinfo'' e visualizzare il contenuto:
 +
 +<code>
 +ogrinfo 'OCI:username/password@hostname:port/instance:tablename' geom_feature > tablename.dump
 </code> </code>
tecnica/gps_cartografia_gis/gdal_oracle.txt · Last modified: 2010/10/25 14:41 by niccolo