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 Mon 09 May 2011 16:08

Ferraton
Participant actif
Date d'inscription: 13 Sep 2005
Messages: 104

QGIS 1.6 et Spatialite

Bonjour,

Travailler avec des SHP impose la limite des noms de colonnes à 10 caractères. Hors je souhaite pouvoir récupérer un patrimoine Map Info pour travailler avec QGIS. L'idée serait alors d'utiliser un autre format que SHP qui soit disponible en écriture sous QGIS. Spatialite semble une piste intéressante... quelques questions cependant:

1) Si je charge un fichier MapInfo sous QGIS et que je fais 'sauvegarder sous' format SQLIte' j'obtiens bien un fichier que l'on peut réouvrir sous QGIS avec 'ajouter une couche vecteur' et ce fichier est modifiable, Mais ce fichier n'est pas reconnu par QGIS comme une base spatialite (menu -> Ajouter une couche spatialite). De fait la structure n'est pas la même que si l'on crée une base spatialite par spatialite GUI par exemple.
--> Pourquoi y-a-t-il deux structures non compatibles ? est-ce que celà va évoluer dans les futures versions de QGIS ?

2) je souhaiterais convertir tout un repertoire de fichiers MapInfo, soit en autant de fichiers Spatialite, soit en une seule base spatialite contenant l'ensemble des fichiers. Quelqu'un a-t-il dejà fait cette manip... syntaxe avec ogr2ogr par exemple ? obtient-on réellement un base spatialite reconnue par QGIS (soit par ouvrir des couches vecteurs, soit par ouvrir une base spatialite).

Alain

Hors ligne

 

#2 Mon 09 May 2011 17:02

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: QGIS 1.6 et Spatialite

Salut,

Effectivement pour le moment save as SQLite ne permet pas de créer une base Spatialite correcte, je n'en connais pas la raison mais j'imagine que le driver sera amélioré par la suite. En attendant je te propose d'utiliser le plugin QSpatialite qui te facilitera grandement l'apprentissage et l'utilisation de Spatialite.

Ce plugin permet notamment de charger proprement un layer QGIS dans une base. Par contre je ne suis pas sûr que les noms de colonne à + de 10 caractères ne poseront pas de problème car pour les formats autre que shp, un export en shp est réalisé automatiquement avant l'import dans la base. A tester donc.

En parallèle je te conseille de télécharger aussi Spatialite GUI outil plus complet que QSpatialite mais moins user friendly et sans lien direct avec QGIS.

Pour l'import par lot, j'ai bien peur qu'il faille mettre les mains dans le cambouis. Soit passer par un script SQL, soit un script un Python en s'appuyant sur le code de QSpatialite. En tout cas je n'ai pas souvenir d'un outil permettant cela et visiblement OGR2OGR te donnera des bases différentes pour chaque couche, qui ne seront pas correctement reconnues. Quoi qu'il en soit, il peut être utile de convertir dans un premier temps tout tes *.tab en shp. A-tu essayé l'outil Alter SIG?, il permet de faire des conversions par lot.

Bon courage.

Hors ligne

 

#3 Mon 09 May 2011 18:37

JRM
Participant assidu
Lieu: Arras
Date d'inscription: 15 Apr 2009
Messages: 521

Re: QGIS 1.6 et Spatialite

1. il faut bien distinguer sqlite de spatialite pour ce qui est de la manière de gérer les objets spatiaux. Lors de l'utilisation de ogr2ogr il faut spécifier SPATIALITE=yes ou no.

2. vous êtes sous quel OS ?

Hors ligne

 

#4 Tue 10 May 2011 22:05

gene
Participant actif
Lieu: Louvain-la-Neuve
Date d'inscription: 14 Dec 2006
Messages: 104
Site web

Re: QGIS 1.6 et Spatialite

Il est aussi possible de transformer une base SQLite normale en Spatialite

voir http://www.portailsig.org/content/sqlit … du-comment

Hors ligne

 

#5 Tue 17 May 2011 16:45

Ferraton
Participant actif
Date d'inscription: 13 Sep 2005
Messages: 104

Re: QGIS 1.6 et Spatialite

Bonjour,

alors voilà les derniers résultats de mes tests...(pm : je souhaite convertir un patrimoine de données MapInfo vers Spatialite). Dans mon jeux de données sous MapInfo j'ai des noms de colonnes de plus de 10 caractères avec des accents (j'y peux rien... c'est la livraison de nos référentiels !).
Ceci interdit de passer par du SHP qui tronque les noms de colonnes à 10 caractères.

pour convertir un ensemble de fichiers MapInfo on peut penser utiliser une commande shell DOS (pour répondre à Jean-Roc je suis sous windows XP) :
for /R %F in (*.TAB) DO ogr2ogr -f SQLite -dsco SPATIALITE=YES "%~nF.sqlite" "%F" (pour créer autant de base sqlite que de fichiers MapInfo)
ou
for /R %F in (*.TAB) DO ogr2ogr -append -f SQLite -dsco SPATIALITE=YES mabase.sqlite "%F" (pour ajouter tous les fichiers dans une seule base).

Comme mes fichiers MapInfo sont dans une projection 'Lambert93 - bornes Europe', QGIS ne reconnait pas la projection en ouverture. D'où la nécessité d'utiliser -a_srs pour affecter le code EPSG du Lambert 93.

De plus avec les commandes ogr2ogr ci-dessus les objets 'régions' de MapInfo (polygones) sont affectés sous spatialite du type GEOMETRY qui n'est pas reconnu par QGIS (menu couche -> ouverture table spatialite).
Question : quelqu'un à-t-il déjà eu ce problème ?

Pour pallier à ces deux problèmes j'utilise donc la commande (uniquement pour les tables contenant des objets régions)
for /R %F in (*.TAB) DO ogr2ogr -f SQLite -a_srs EPSG:2154 -nlt MULTIPOLYGON -dsco SPATIALITE=YES "%~nF.sqlite" "%F"

çà marche presque... sauf le problème d'encodage (nom de colonne avec accent en Latin1 (ISO8859-1))
question : peut-on indiquer lors de la conversion en spatialite que les données sont encodés en ISO8859-1 et non en UTF8 ?
(je n'ai pas trouvé de commande pour le driver spatialite de ogr2ogr contrairement au driver PostGIS).

De plus lorsque j'ouvre la base spatialite convertie sous QGIS tous les lignes des colonnes qui ont un accent contienne le nom de la colonne au lieu de la valeur de l'attribut initial (ex: insee_r�gion dans toutes les lignes). bug de QGIS ?

Ces problèmes n'apparaissent pas si on ouvre les bases spatialite avec 'ajouter une couche vecteur' format OGR SQLite et codage ISO8859-1, sauf que du coup c'est du SQLite et pas spatialite...

J'espère que ce mel contribue au sujet de l'utilisation de Spatialite avec QGIS...
Merci de vos éclairages sur le sujet et éléments de réponse aux deux questions ci-dessus...

Cordialement,

Hors ligne

 

#6 Thu 26 May 2011 00:47

romain974
Participant occasionnel
Date d'inscription: 8 Feb 2011
Messages: 28

Re: QGIS 1.6 et Spatialite

Bonjour,

une solution envisageable, avec un petit script python:
- convertir mapinfo -> TXT (geometrie en WKT)
- importer TXT dans SpatiaLite
- recovergeometrycolumn


Romain,
Auteur de QspatiaLite,
(A utiliser avec QGIS>=1.7 pour ne pas avoir de soucis)

Hors ligne

 

#7 Wed 01 June 2011 23:57

romain974
Participant occasionnel
Date d'inscription: 8 Feb 2011
Messages: 28

Re: QGIS 1.6 et Spatialite

un petit up pour signaler que maintenant QSpatiaLite 3.6 (QGIS plugin repository)  importe directement toute couche SIG supportee par QGIS dans votre base SpatiaLite, sans passer par un ShapeFile. Ainsi, tout probleme de troncature est contourne. Normalement, les charsets devraient etre bien geres (si ce n'est pas le cas, merci de m'en faire part).

Cordialement,
(desole pour les accents: clavier anglais)

Hors ligne

 

#8 Mon 06 June 2011 20:50

Ferraton
Participant actif
Date d'inscription: 13 Sep 2005
Messages: 104

Re: QGIS 1.6 et Spatialite

Bonjour,

je viens de mettre à jour Qspatialite et à l'exécution (QGIS 1.6 ou 1.7) j'ai le message d'erreur suivant :

Une erreur est apparue lors de l'exécution du code python :

Traceback (most recent call last):
  File "C:/Documents and Settings/ferraton-a/.qgis/python/plugins\QspatiaLite\qspatialite.py", line 66, in run
    dlg = QspatiaLiteDialog(self.load_to_canvas,self.get_layer_names,self.save_layer,self.delete_tmpshp, self.import_gis_files, self.iface.mainWindow())
  File "C:/Documents and Settings/ferraton-a/.qgis/python/plugins\QspatiaLite\qspatialitedialog.py", line 85, in __init__
    self.prepare_tree()
  File "C:/Documents and Settings/ferraton-a/.qgis/python/plugins\QspatiaLite\qspatialitedialog.py", line 608, in prepare_tree
    tableList = self.get_tables() # for each table: tablename, reltype, geom_col, geom_type, geom_dim, geom_srid, index_spatial_enable, spatialViewname
  File "C:/Documents and Settings/ferraton-a/.qgis/python/plugins\QspatiaLite\qspatialitedialog.py", line 1048, in get_tables
    self.connection = self.connect_db(connectionSettings)
  File "C:/Documents and Settings/ferraton-a/.qgis/python/plugins\QspatiaLite\qspatialitedialog.py", line 1105, in connect_db
    connectionObj = self.connect_to_spatialite(connectionSettings)
  File "C:/Documents and Settings/ferraton-a/.qgis/python/plugins\QspatiaLite\qspatialitedialog.py", line 1116, in connect_to_spatialite
    return sqlite.connect(connectionSettings[u"sqlitepath"])
OperationalError: unable to open database file

Version de Python :
2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)]


Version de QGIS :
1.7.0-Wroclaw Wroclaw, 15786M

Chemin vers Python : ['C:\\Documents and Settings\\ferraton-a\\.qgis\\python\\plugins\\GeoCoding', 'C:\\Documents and Settings\\ferraton-a\\.qgis\\python\\plugins\\GeoCoding', 'C:/OSGeo4W/apps/qgis-dev/./python', 'C:/Documents and Settings/ferraton-a/.qgis/python', 'C:/Documents and Settings/ferraton-a/.qgis/python/plugins', 'C:/OSGeo4W/apps/qgis-dev/./python/plugins', 'C:\\Program Files\\ArcGIS\\bin', 'C:\\WINDOWS\\system32\\python25.zip', 'C:\\OSGeo4W\\apps\\Python25\\DLLs', 'C:\\OSGeo4W\\apps\\Python25\\lib', 'C:\\OSGeo4W\\apps\\Python25\\lib\\plat-win', 'C:\\OSGeo4W\\apps\\Python25\\lib\\lib-tk', 'C:\\OSGeo4W\\apps\\qgis-dev\\bin', 'C:\\OSGeo4W\\apps\\Python25', 'C:\\OSGeo4W\\apps\\Python25\\lib\\site-packages', 'C:\\OSGeo4W\\apps\\Python25\\lib\\site-packages\\wx-2.8-msw-unicode', 'C:\\OSGeo4W\\apps\\qgis-dev\\python\\plugins\\ftools\\tools']

Hors ligne

 

#9 Wed 08 June 2011 00:05

romain974
Participant occasionnel
Date d'inscription: 8 Feb 2011
Messages: 28

Re: QGIS 1.6 et Spatialite

Bonjour,
Vraiment bizard, cette partie de code n'a pas ete changee.
cela semble venir de la base de donnee elle meme:
-essayez de deconnecter la BDD via QGIS ( add spatialite layer/delete )
-puis lancez a nouveau QSpatiaLite

Si le probleme persiste quelquesoit la DB utilisee, postez le dans la partie 'issue' du projet:
http://code.google.com/p/qspatialite/

(en francais ca ira tres bien)

Hors ligne

 

#10 Tue 16 August 2011 23:47

romain974
Participant occasionnel
Date d'inscription: 8 Feb 2011
Messages: 28

Re: QGIS 1.6 et Spatialite

Une nouvelle version de QSpatiaLite est en ligne.

Cette nouvelle version, realisee avec l'aide de Ferraton, offre une compatibilite optimale entre MAPINFO et SpatiaLite:

1/ La longueur des champs TEXTES est conservee lors de l'export vers un fichier mapinfo (export tables to ogr)
2/ Lors de l'import de couches MAPINFO, les champs DATE sont automatiquement convertis dans un format compatible avec les fonctions date de SpatiaLite ( yyyy-mm-dd )
3/ Lors de l'export des couches en format MAPINFO, les champs DATE sont automatiquement transformes en format compatible avec MAPINFO ( dd/mm/yyyy

Il est maintenant plus aise de substituer MAPINFO par QGIS/QspatiaLite, en profitant d'un editeur SQL similaire, et d'une bonne conservation de la structure des couches.

Hors ligne

 

Pied de page des forums

Powered by FluxBB