IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[SIG] Données Geometry de Mysql


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 42
    Par défaut [SIG] Données Geometry de Mysql
    Bonjour,
    Je developpe un logiciel de cartographie avec pour base de données une base MySQL 5.
    Pour afficher mes données sur la carte je recupère donc les données de type Geometry et doit les convertir pour avoir 2 beaux int me servant de coordonnées pour un pixel.
    C'est là qu'est mon probleme, j'aimerais d'abord savoir si quelqu'un connaitrait une librairie genre PostGis (qui est que pour postgres) mais pour MySQL (j'ai trouvé MyGIS en cherchant un peu mais ça a l'air d'etre en version préalpha et à peine 2 pages de reponses sur google)?
    En attendant je procede de la sorte:
    je recupere les données Geometry au format Text, ce qui me donne un truc du genre:
    MULTILINESTRING((2324321.32434 34542.34354,34345.23123 23123123.334))
    je fais ensuite un matches() pour trouver de quel type le resultat est (MULTILINESTRING,POLYGONE, etc...)
    Ensuite je parse en decoupant tout ce qui est entre parenthèses à l'aide de split("(\\()").
    Ce qui me retourne un tableau de String avec le type, un null, la premiere LINE, la deuxieme LINE, etc...
    Je parse ensuite ces lignes toujours avec split("(,)").
    J'ai maintenant des points que je met dans un vecteur, lui meme que je met dans un autre vecteur qui contient des lignes.
    Je suis toujours ensuite obligé de split() pour séparer les x des y et tout ça sans parler du cast en float puis en int.

    Vous l'aurez compris, tout cela est extremement lent, 20 secondes pour afficher 20 000 lignes, ce qui est inacceptable pour mon programme.
    Donc si vous pouvez me dire ou je me trompe? ou je fais des trucs inutile? etc...

    Merci beaucoup de m'avoir lu

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    Je sais que PostGIS fournit une librairie pour la manipulation des données.
    Peut etre peut tu récupérer les sources et les adapter à myGIS.
    Le format text resemble beaucoup. (sans doute le même, s'il est basé sur l'OGC)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 42
    Par défaut
    En fait j'ai essayé et les class de postgis reutilisent la methode getObject de ResultSet, ce qui est bon pour moi puisque depuis ma base de données je ressort un resultset. Mais seulement il faut caster cet objet en PGgeometry et pour faire cela il faut d'abord faire un addDataType("geometry","org.postgis.PGgeometry"); sur l'objet de connection de postgres , ce qui n'est pas mon cas.
    Quelqu'un connaitrait-il une methode addDataType pour MySQL?

  4. #4
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    Comme tu l'as dit :
    version préalpha et à peine 2 pages de reponses sur google
    n'espere pas trop de mySQL, il est utile certes, mais ne va pas la ou il n'a pas sa place.
    Ne peut tu pas utiliser une autre base?

    Si tu y tient toujours, tu peux faire des champs a ta sauce.
    Ou meme sérializer les objets dans les champs.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 42
    Par défaut
    Je dois malheureusement m'adapter a une base de données MySQL existantes avec un shema bien precis.
    J'avance un petit peu et j'ai decouvert qu'on pouvait appeller la methode getObject() de resultset en lui fournissant le numéro du champ et aussi un objet de type Map.
    Malheureusement Map est abstraite et quand je lui donne un objet de type HashMap (qui implemente Map) il ne veut pas compiler et me dis que getObject(int,HashMap) n'existe pas :s

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 42
    Par défaut
    Voila, j'ai finalement reussi a utiliser PostGis, la class PGgeometry possede un constructeur qui prend en parametre le resultat en Text de la requete.
    Il suffit ensuite d'importer dans le projet les class de la librairie postgres : PGObject et PGtokenizer. Et normallement on peut faire fonctionner postgis avec MySQL
    Au final je gagne quelques secondes à l'affichage, la carte s'affiche en 7 secondes avec maximum de details, ce qui devrait baisser avec la discretisation.

    Merci de m'avoir aidé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération de données ? php/flash/mysql
    Par Angelik dans le forum Flash
    Réponses: 6
    Dernier message: 01/09/2006, 19h06
  2. Réponses: 5
    Dernier message: 07/06/2006, 14h24
  3. Récupération de donnés en base MySQL
    Par netah25 dans le forum C++Builder
    Réponses: 11
    Dernier message: 23/01/2006, 16h56
  4. Extraire une Base de donnée Excel vers Mysql ??
    Par Arvulis dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/01/2006, 22h58
  5. [Excel] Exportation de donnée excel vers MySQL
    Par yoda7666 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/11/2005, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo