banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 11 December 2009 16:05

j-ben
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 10 Sep 2008
Messages: 16

[Oracle] intégration shp

Bonjour,

Je cherche à intégrer des shp à Oracle 10g Enterprise Edition (donc avec l'extension Locator).

Je suis tombé sur cette page.

1ère solution : "Oracle Shapefile Converter" (fournie trois exécutables "shp2sdo.exe" pour intégrer les données sous NT, Solaris et Linux. Comment utiliser shp2sdo.exe sous Debian?? L'exé pour Windows me retourne : Programme trop grand pour tenir en mémoire).
            doc : http://www.oracle.com/technology/softwa … hp2sdo.txt
            download : http://www.oracle.com/technology/softwa … msoft.html

2ème solution : "Oracle Java Shapefile Converter" (utilisation d'une class Java, qui n'est pas trouvée lors de l'exécution)
            doc : http://www.oracle.com/technology/softwa … readme.pdf

j'ai bien ce qui suit dans .bashrc :

Code:

ORACLE_HOME=/oracle
export ORACLE_SID=SIG
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export clpath=$ORACLE_HOME/md/jlib/sdoapi.jar:$ORACLE_HOME/md/jlib/sdoutl.jar:$ORACLE_HOME/jdbc/lib/ojdbc14.jar:$ORACLE_HOME/lib/xmlparserv2.jar

Cela donne :

Code:

oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature -h http://localhost -p 1521 -s SIG -u my_user -d my_pass_word -t ma_couche -f /home/oracle/perso/topo/ma_couche -r 4326 -g geom
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/spatial/util/SampleShapefileToJGeomFeature
Caused by: java.lang.ClassNotFoundException: oracle.spatial.util.SampleShapefileToJGeomFeature
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: oracle.spatial.util.SampleShapefileToJGeomFeature.
Program will exit.

ci joint un post sur le forum d'oracle avec la même erreur.

Merci de me renseigner si vous connaissez une solution ou si vous utilisez une autre méthode.

Cordialement.

Dernière modification par j-ben (Fri 11 December 2009 16:12)


Le savoir est la seul chose qui augmente quand on le partage.
J'aimerai bien changer le monde, mais pas moyen de mettre la main sur le code source ...

Hors ligne

 

#2 Fri 11 December 2009 17:19

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: [Oracle] intégration shp

j-ben a écrit:

Bonjour,

Je cherche à intégrer des shp à Oracle 10g Enterprise Edition (donc avec l'extension Locator).

Je suis tombé sur cette page.

1ère solution : "Oracle Shapefile Converter" (fournie trois exécutables "shp2sdo.exe" pour intégrer les données sous NT, Solaris et Linux. Comment utiliser shp2sdo.exe sous Debian?? L'exé pour Windows me retourne : Programme trop grand pour tenir en mémoire).
            doc : http://www.oracle.com/technology/softwa … hp2sdo.txt
            download : http://www.oracle.com/technology/softwa … msoft.html

2ème solution : "Oracle Java Shapefile Converter" (utilisation d'une class Java, qui n'est pas trouvée lors de l'exécution)
            doc : http://www.oracle.com/technology/softwa … readme.pdf

j'ai bien ce qui suit dans .bashrc :

Code:

ORACLE_HOME=/oracle
export ORACLE_SID=SIG
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export clpath=$ORACLE_HOME/md/jlib/sdoapi.jar:$ORACLE_HOME/md/jlib/sdoutl.jar:$ORACLE_HOME/jdbc/lib/ojdbc14.jar:$ORACLE_HOME/lib/xmlparserv2.jar

Cela donne :

Code:

oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature -h http://localhost -p 1521 -s SIG -u my_user -d my_pass_word -t ma_couche -f /home/oracle/perso/topo/ma_couche -r 4326 -g geom
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/spatial/util/SampleShapefileToJGeomFeature
Caused by: java.lang.ClassNotFoundException: oracle.spatial.util.SampleShapefileToJGeomFeature
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: oracle.spatial.util.SampleShapefileToJGeomFeature.
Program will exit.

ci joint un post sur le forum d'oracle avec la même erreur.

Merci de me renseigner si vous connaissez une solution ou si vous utilisez une autre méthode.

Cordialement.


Bonjour,

Perso, je me sers parfois du programme java d'oracle, apres avoir appliqué le patch pour remplacer un des jars necessaires au programme (http://www.oracle.com/technology/softwa … readme.txt)

Sinon, ogr2ogr fera ca tres bien, avec un controle important sur ce qui est fait lors de l'import oracle (colonnes, filtres, etc).

Le message d'erreur me fait penser a un mauvais classpath. Pouvez-vous verifier que les 3 ou 4 jars necessaires au programme (de memoire, sdoutl.jar, sdoapi.jar et ... zut plus de memoire smile ) sont bien presents dans le classpath ?

Nicolas

Hors ligne

 

#3 Mon 14 December 2009 18:29

j-ben
Participant occasionnel
Lieu: Toulouse
Date d'inscription: 10 Sep 2008
Messages: 16

Re: [Oracle] intégration shp

Nicolas Ribot a écrit:

Le message d'erreur me fait penser a un mauvais classpath. Pouvez-vous verifier que les 3 ou 4 jars necessaires au programme (de memoire, sdoutl.jar, sdoapi.jar et ... zut plus de memoire smile ) sont bien presents dans le classpath ?


Exactement. Une erreur c'était glissée dans mon classpath.

Une fois cette erreur corrigée, je n'arrive toujours pas à intégrer des shp.

Code:

oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature -h http://localhost -p 1521 -s SIG -u my_user -d my_pass_word -t ma_couche -f /home/oracle/perso/topo/ma_couche -r 4326 -g geom

Parameters:
<Filename>: File name of an input Shapefile (without extension)
<Table name>: Table name for the result
[SRID]: Valid Oracle SRID for coordinate system; use 0 if unknown
<ID Column name>: Column name for unique numeric ID; if required

oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature /home/oracle/perso/topo/ma_couche ma_couche 2154 id_com

Connecting to DB...
java.sql.SQLException: Exception d'E/S: The Network Adapter could not establish the connection
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at oracle.spatial.util.SampleShapefileToJGeomFeature.main(SampleShapefileToJGeomFeature.java:110)
Dropping old table...
Exception in thread "main" java.lang.NullPointerException
        at oracle.spatial.util.SampleShapefileToJGeomFeature.prepareTableForData(SampleShapefileToJGeomFeature.java:252)
        at oracle.spatial.util.SampleShapefileToJGeomFeature.main(SampleShapefileToJGeomFeature.java:129)

Au vu de des réponses de la console ci-dessus, je ne suis plus sur de la syntaxe à adopter pour intégrer les shp.

La 1ère : celle du tutoriel (http://www.oracle.com/.../shape2sdojava_readme.txt) qui me revoie les paramètre à renseigner
La 2éme : où je rentre les paramètres demandés ci-dessus, et qui essaie (au moins) de ce connecter à la base, mais en vain.

Il doit y avoir un moyen de renseigner les paramètres de la base directement à java. Cela devrait permettre au driver jdbc de se connecter à la base sans problème.

Une petite idée? Merci.
La suite au prochain numéro.


Le savoir est la seul chose qui augmente quand on le partage.
J'aimerai bien changer le monde, mais pas moyen de mettre la main sur le code source ...

Hors ligne

 

#4 Mon 14 December 2009 23:11

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: [Oracle] intégration shp

j-ben a écrit:
Nicolas Ribot a écrit:

Le message d'erreur me fait penser a un mauvais classpath. Pouvez-vous verifier que les 3 ou 4 jars necessaires au programme (de memoire, sdoutl.jar, sdoapi.jar et ... zut plus de memoire smile ) sont bien presents dans le classpath ?


Exactement. Une erreur c'était glissée dans mon classpath.

Une fois cette erreur corrigée, je n'arrive toujours pas à intégrer des shp.

Code:

oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature -h http://localhost -p 1521 -s SIG -u my_user -d my_pass_word -t ma_couche -f /home/oracle/perso/topo/ma_couche -r 4326 -g geom

Parameters:
<Filename>: File name of an input Shapefile (without extension)
<Table name>: Table name for the result
[SRID]: Valid Oracle SRID for coordinate system; use 0 if unknown
<ID Column name>: Column name for unique numeric ID; if required

oracle@oraclesig:/$ java -cp $clpath oracle.spatial.util.SampleShapefileToJGeomFeature /home/oracle/perso/topo/ma_couche ma_couche 2154 id_com

Connecting to DB...
java.sql.SQLException: Exception d'E/S: The Network Adapter could not establish the connection
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
        at java.sql.DriverManager.getConnection(DriverManager.java:582)
        at java.sql.DriverManager.getConnection(DriverManager.java:185)
        at oracle.spatial.util.SampleShapefileToJGeomFeature.main(SampleShapefileToJGeomFeature.java:110)
Dropping old table...
Exception in thread "main" java.lang.NullPointerException
        at oracle.spatial.util.SampleShapefileToJGeomFeature.prepareTableForData(SampleShapefileToJGeomFeature.java:252)
        at oracle.spatial.util.SampleShapefileToJGeomFeature.main(SampleShapefileToJGeomFeature.java:129)

Au vu de des réponses de la console ci-dessus, je ne suis plus sur de la syntaxe à adopter pour intégrer les shp.

La 1ère : celle du tutoriel (http://www.oracle.com/.../shape2sdojava_readme.txt) qui me revoie les paramètre à renseigner
La 2éme : où je rentre les paramètres demandés ci-dessus, et qui essaie (au moins) de ce connecter à la base, mais en vain.

Il doit y avoir un moyen de renseigner les paramètres de la base directement à java. Cela devrait permettre au driver jdbc de se connecter à la base sans problème.

Une petite idée? Merci.
La suite au prochain numéro.


Bonsoir,

Je ne vois pas les parametres attendus pour se connecter a Oracle dans votre ligne de commande ?

Voici, si ca peut aider,  un script shell qui definit les parametres attendus par le programme Oracle pour charger un shapefile dans une base Oracle.

Je m'en servais pour charger des fichiers de tests pour Spatial.
Un outil comme SQL developer, d'Oracle, est bien utile egalement, ne serait-ce que pour tester une connexion java vers sa base Oracle, parametres qui devront etre les memes dans la ligne de commande.

Nicolas

Code:

#!/bin/sh

echo "loading countries shapefile..."

SHPFILE="/Users/nicolas/geodata/GEOFLA-dep-L2-SF/lim_adm_france_dom"
DBUSER="g"
DBPWD="g"
HOST="192.168.0.11"
DBSID="XE"
DBTABLE="LIM_DEP_FRANCE"
DBPORT="1521"
GEOCOL="the_geom"
IDXCOL="gid"
SRID="0"
XBOX="'-180,180'"
YBOX="'-90,90'"
ORADRIVER=./ojdbc14.jar
ORACP=./sdoutl.jar:./sdoapi.jar

echo java -cp .:${ORADRIVER}:${ORACP} shp2sdo -h $HOST -p $DBPORT -s $DBSID -u $DBUSER -d $DBPWD -t $DBTABLE -f $SHPFILE -g $GEOCOL  -i $IDXCOL -r $SRID -x $XBOX -y $YBOX 

java -cp .:${ORADRIVER}:${ORACP} shp2sdo -h $HOST -p $DBPORT -s $DBSID -u $DBUSER -d $DBPWD -t $DBTABLE -f $SHPFILE -g $GEOCOL  -i $IDXCOL -r $SRID -x $XBOX -y $YBOX 

echo "$SHPFILE loaded into table $DBTABLE..."

Ce code doit pouvoir s'adapter facilement en batch smile

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB