Suite

Convertir les styles mapinfo en styles qgis


Jusqu'à présent, j'ai travaillé avec mapinfo. J'ai une grande couche vectorielle (points) avec une symbologie complexe.

Pendant plusieurs jours, j'ai abandonné mainfo pour qgis. Existe-t-il un moyen de convertir mes fichiers mapinfo (.tab) vers un format de fichier pris en charge par qgis. bien sûr, je voudrais enregistrer la symbologie (style) lors de la conversion du fichier.


Je voudrais convertir une grande couche de points de .Tab vers .SHP et enregistrer le style dans Qgis. La symbologie de ma couche est assez complexe (variables de couleurs, forme, symboles). Je travaille avec un windows 7 32 bits. Mapinfo 12.0 et qgis 2.6 sont installés.

J'ai téléchargé le plugin depuis ce dépôt suivant :

https://github.com/NathanW2/MapInfo-to-QGIS-style-generator

J'ai ouvert la commande d'invite du shell OsGeo4W disponible avec mon qgis 2.6.

J'ai essayé d'exécuter le plugin. J'ai reçu un message d'erreur. Ce message semble traiter d'un fied qui doit être fourni (avec l'argument -c) mais je ne comprends pas.

Quelle colonne doit être fournie ?

La structure actuelle de ma commande est : python mapinfoToQgis.py pathINPUT.Tab pathOUTPUT.qml --UseMapInfo

Je colle deux captures d'écran :

A. se concentrer sur ma couche .Tab mapinfo POINT avec une symbologie complexe

B. message d'erreur via la commande d'invite

Pourriez-vous m'éclairer ?


Si le style des éléments est thématique (et que vous savez quelles colonnes pilotent le thème), vous pouvez créer un fichier QML par programmation dans PostgreSQL.

Par exemple, j'ai un fichier avec ~ 150 styles pour les polygones des zones gouvernementales (les sous-ensembles des zones ont le même style). Les données étaient à l'origine au format MapInfo dans deux fichiers TAB - un avec les polygones de zone, un autre avec des données aspatiales comme code_zone, la description, grouper, et enfin 'rouge', 'vert"bleu' (les 3 derniers sont les valeurs RVB pour le dégradé de couleurs recommandé).

Pour créer mon fichier QML, j'ai procédé comme suit :

(1) importer les données dans PostgreSQL (en utilisant ogr2ogr);
(2) écrivez un script python qui ressemble à ceci -

import psycopg2 # Configurer la connexion à la base de données conn_string = "host='localhost' dbname="[db]" user="[me]" password="[not tell]"" # Se connecter à la base de données conn = psycopg2.connect(conn_string ) # configurer le curseur par défaut (pour exécuter des requêtes) cursor = conn.cursor() # Obtenir les détails LGA ; stockez-les dans une liste cursor.execute('select xmlelement(name qgis, xmlattributes('2.8.2-Wien' as version), xmlelement(name "renderer-v2", xmlattributes('zone_code' as attr, 0 en tant que niveaux de symboles, 'CategorizedSymbol' en tant que type), xmlelement(nom des symboles, xmlagg(xmlelement(nom du symbole, xmlattributes(1 en tant qu'alpha, 'fill' en tant que type, gid-1 en tant que nom), xmlelement(nom de la couche , xmlattributes(0 comme pass, 'SimpleFill' comme classe, 0 comme verrouillé), xmlelement(name prop, xmlattributes('color' as k, rgba as v)), xmlelement(name prop, xmlattributes(' outline_color' as k, '230,230,230,255' as v))))))), xmlelement(name categories, xmlagg(xmlelement(name category, xmlattributes('true' as render, gid-1 as symbol, zone_code as value, zone_code||' ('|| description || ')' as label)))))) from se_zones') xml_new ="pour la ligne dans le curseur : print row[0] xml_new = row[0 ] #print 'XML_New: ', xml_new # test uniquement # pré-ajout de DOCYTPE spécifique à QGIS à XML outStr= "
" + xml_new # ouvrir le fichier XML de destination et y enregistrer le XML outFile = open("Zones.qml", 'w') outFile.write(outStr)

Le script est kludgy (il n'y a pas besoin depour la ligne dans le curseurpuisquele curseurne renvoie qu'une ligne), mais le résultat est exactement ce que je voulais : un fichier QML que je pourrais distribuer à mes collègues afin qu'ils puissent styliser les données zonées en 3 clics. (Avantage bonus : lorsque les fichiers de thèmes doivent être créés pour différents ensembles de catégories, seule la requête doit changer : nous avons environ 25 ensembles de thèmes différents, et ils ont tous été construits à partir de ce script en modifiant la requête et le fichier de destination) .

La sortie ressemble à ceci -

          

Pour votre thème spécifique, vous devrez écrire la requête appropriée (ce qui signifie que vous devez connaître les colonnes qui « conduisent » les catégories de style).

MapInfo stocke bêtement les données de style ligne par ligne (les années 90 ont appelé, ils veulent récupérer leur «style et leur contenu»), mais ils peuvent être récupérés si vous ajoutez l'instruction a -SQL à votre instruction d'importation ogr2ogr en ajoutant OGR_STYLE au fichier récupéré ensemble. Vous pouvez ensuite analyser la colonne 'style' dans PostgreSQL pour obtenir les informations de style.

C'est le script que j'utilise pour importer tous les fichiers TAB dans un répertoire donné (les barres obliques ne servent qu'à montrer qu'il s'agit d'une seule ligne, décomposée pour plus de clarté) : le bit supplémentaire pertinent est la ligne -SQL.

pour %f dans (*.tab) faire ogr2ogr -nlt GEOMETRY  -lco GEOMETRY_NAME=g1  -lco SCHEMA=test  -lco FID=id1  -lco OVERWRITE=YES  -f "PostgreSQL"  --config OGR_TRUNCATE YES  -overwrite  -a_srs EPSG:4283  -SQL "select *, CAST (OGR_STYLE AS Character (255)) AS style from %~nf"  PG:"host=localhost user=[me] dbname=[db] password =[ne dit pas]"  "%~nf.tab"

Si vous regardez ensuite les données importées, vous trouverez une colonne 'style' qui a des entrées qui ressemblent à

BROSSE(fc:#dae89c,bc:#ffffff,id:"mapinfo-brush-2,ogr-brush-0");PEN(w:1px,c:#ffffff,id:"mapinfo-pen-2,ogr -stylo-0")

Pour les données ponctuelles, cela sera différent, bien sûr - il y aura probablement des types de marqueurs et ainsi de suite.

Selon toute vraisemblance, quelqu'un ayant une meilleure connaissance de la façon dont les informations de style sont stockées dans "Windows 8 of GIS" (MapInfo) serait en mesure de vous dire comment obtenir les informations spécifiques sur les couleurs et les symboles plus directement dans l'instruction -SQL (je 'avais l'intention de le découvrir, mais j'essaie de penser le moins possible à MapInfo : je trouve qu'il est assez facile d'analyser automatiquement la colonne 'style' dans PostgreSQL avec un script).


Voir la vidéo: QGIS - Export symbology to QGIS Layer File .qlr similar to ArcGIS Layer File .lyr (Octobre 2021).