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]
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.txt · Last modified: 2010/10/25 14:41 by niccolo