#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
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.jarCela 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 ) 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
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 ) 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
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 ) 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
Nicolas
Hors ligne