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:33]
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 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:​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.1242657185.txt.gz · Last modified: 2009/05/18 16:33 by niccolo