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 revision Previous revision
Next revision
Previous revision
tecnica:gps_cartografia_gis:gdal_oracle [2009/05/18 16:39]
niccolo
tecnica:gps_cartografia_gis:gdal_oracle [2010/10/25 14:41] (current)
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:​tablename"​
 +</​code>​
 +
 +Il **''​service_name''​** viene detto anche //istanza// nella terminologia Oracle. Il server Oracle risponde sulla porta **1521 TCP**.
 +
 +Un esempio di **interrogazione SQL** con ''​ogrinfo'':​
 +
 +<​code>​
 +ogrinfo "​OCI:​username/​passwd@host:​port/​service_name:​tablename"​ \
 +    -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,​ la virgola decimale e il 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.1242657595.txt.gz · Last modified: 2009/05/18 16:39 by niccolo