Je fusionne des fichiers de formes et j'ai eu des problèmes à le faire dans QGIS, donc j'utilise directement ogr2ogr. Je fais ça (en lot):
ogr2ogr -overwrite %destination% %n1%
ogr2ogr -update -append %destination% %n2% -nln all_new
ogr2ogr -update -append %destination% %n3% -nln all_new
ogr2ogr -update -append %destination% %n4% -nln all_new
Cela fonctionne bien, mais maintenant je dois avoir dans le fichier de formes résultant, un champ avec les noms des fichiers de formes d'origine que j'ai fusionné. Cela ne semble pas très difficile, mais je n'arrive pas à le faire.
Quelqu'un peut-il aider? Je vous remercie!
J'utiliserais l'option -sql et j'importerais le fichier de formes de la manière suivante:
la source
il existe des moyens de fusionner les fichiers de formes.
et l'ajout d'attribut au shapefile @dango directon est bon. vous pouvez utiliser layer.CreateField (field_name) pour créer une nouvelle colonne qui est remplie à partir de
J'espère que ça t'aide...
la source
vascobnunes, voici comment j'ai résolu ce problème en utilisant un script Python pour chaîner plusieurs instructions ogr2ogr ensemble. Vous pouvez facilement le convertir en script batch, en gros je concatène ensemble les instructions ogr2ogr (
cmd
), puis je les exécute en appelantos.system(cmd)
, en transmettant la commande ogr2ogr que j'ai concaténée ensemble.L'arme secrète consiste ( comme Capooti l'a démontré ) à appliquer OGR_SQL pour imposer le nom de fichier en tant que valeur constante de l'ensemble de données source que vous ajoutez à votre résultat de fusion.
Dans mon exemple, le
-sql
drapeau gère cela, dans le code, c'est comme ceci:Mais c'est déroutant à lire car j'ai besoin d'appliquer des guillemets simples et des guillemets doubles dans la concaténation résultante. Pour ce faire, je dois échapper aux guillemets simples (c'est-à-dire \ ') pour les utiliser "pour de vrai". Donc, pour la lisibilité, cela aide à le voir sans variables et séquences d'échappement. Si vous prétendez que le nom de fichier était "routes1" pour une itération particulière, la concaténation résultante ressemblerait à ceci dans la phrase ogr2ogr:
Ce script .py est une fusion de trois astuces que j'ai volées à matt wilkie (un vide, clone d'un fichier de formes), j03lar50n (ajout d'une colonne à un fichier de formes à l'aide d'ogrinfo et ogr_sql) et capooti (à l'aide d'ogr_sql pour imposer une valeur de colonne fixe sur tous les enregistrements d'un fichier de formes). Voici donc le script complet:
la source
Ajoutez une colonne avec le nom de fichier source du dossier des fichiers de formes. Nécessite GDAL 1.10dev, ma tentative de suppression de l'extension .shp ne fonctionne pas - mais dans l'ensemble, fonctionne. - J'imagine que cela pourrait être ajouté aux lignes qui fusionnent avec OGR.
la source
Salut, peut-être que ce lien vous aidera. Il montre comment ajouter un feild à un fichier de formes à l'aide des liaisons gdal en python.
la source
Dans QGIS, vous pouvez ajouter le plugin Merge Shapefile. Il y a une option pour "Ajouter une colonne avec un nom de fichier"
la source
Une version légèrement modifiée de la réponse de JaaKL. Notez que -append foo.shp et -nln foo doivent correspondre. Notez également l'utilisation du dialecte SQLite (GDAL n'accepte apparemment pas le mot clé 'Update', donc le dialecte SQLite doit être utilisé instaed), et l'absence du mot clé 'TABLE' après le mot 'UPDATE' (pas nécessaire ou accepté par SQLite).
la source
Un peu tard pour la discussion, mais maintenant il y a aussi ogrmerge
la source