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
Last revision Both sides next revision
tecnica:gps_cartografia_gis:gdal_oracle [2009/05/18 16:33]
niccolo
tecnica:gps_cartografia_gis:gdal_oracle [2010/06/01 10:58]
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 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**. 
 +  - Installazione di Oracle Instantclient e relativo SDK. 
 +  - Compilazione di **gdal** con supporto **oci** dai sorgenti Debian. 
 +  - Intallazione dei pacchetti compilati.
  
 ===== Installazione di Oracle Instantclient ===== ===== Installazione di Oracle Instantclient =====
Line 57: Line 68:
 </​file>​ </​file>​
  
-Le Debian rules (gdal 1.5.2-3) ​cercano la libreria Oracle **nnz10**, mentre attualmente esiste la libreria **nnz11**; sistemare con un link simbolico:+Le Debian rules cercano la libreria Oracle **nnz10** ​(almeno per gdal 1.5.2-3), mentre attualmente esiste la libreria **nnz11**; sistemare con un link simbolico:
  
 <​code>​ <​code>​
Line 66: Line 77:
  
 <​code>​ <​code>​
-dpkg-buildpackage -rfakeroor+dpkg-buildpackage -rfakeroot
 </​code>​ </​code>​
  
Line 84: 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>​
 +echo "​libgdal1-1.5.0 hold" | dpkg --set-selections  
 +echo "​gdal-bin hold" ​      | dpkg --set-selections ​
 </​code>​ </​code>​
  
Line 95: 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,​ 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.txt · Last modified: 2010/10/25 14:41 by niccolo