Comment dissoudre les polygones d'un fichier de formes à l'aide d'outils open source?

10

Dans mon projet actuel, je visualise des données sur une carte représentant certaines valeurs pour chaque zone administrative d'un pays. On me donne un fichier de formes de ce pays, que je convertis en GeoJSON pour une utilisation avec PolyMaps. Maintenant, j'ai besoin de regrouper plusieurs zones en zones plus grandes, car il n'y a pas de données pour certaines des petites pièces, mais des données agrégées pour les grandes peuvent être acquises. Ces clusters sont prédéfinis (par exemple A + B + C = D), donc j'ai pensé qu'il serait plus facile de produire un fichier de formes en cluster et de le convertir ensuite en GeoJSON.

Mais comment créer un tel cluster, de préférence automatisé et avec des outils open-source? Bien entendu, tout autre moyen sensé est également le bienvenu.

Nikolai Prokoschenko
la source

Réponses:

5

Vous pouvez toujours utiliser un outil open source comme QGIS pour ouvrir votre fichier de formes et fusionner des fonctionnalités à l'aide de l'outil intégré "fusionner les fonctionnalités sélectionnées" (sélectionnez simplement les fonctionnalités, cliquez sur fusionner, sélectionnez les attributs à hériter de la nouvelle fonctionnalité fusionnée, c'est fait).

Bien sûr, cela n'a pas beaucoup de sens si nous parlons de centaines ou de milliers de fusions. Je me demandais moi-même l'autre jour s'il était possible de fusionner des fonctionnalités "par attribut" dans QGIS?

EDIT: Ok, je suis stupide, si vous avez un attribut commun pour toutes les fonctionnalités que vous allez "regrouper" (comme un nom de province ou de comté), ce serait un cas pour l'outil de dissolution. Ouvrez votre fichier de formes, choisissez Dissoudre (dans QGIS, il se trouve dans Vector> Outils de géotraitement> Dissoudre), sélectionnez la colonne avec le nom commun mentionné ci-dessus et démarrez le processus. J'espère que cela (si je ne vous ai pas mal compris) devrait aboutir à ce que vous cherchiez.

SAnderka
la source
En général, de bons conseils, et si tout se résume au travail manuel, je trouverai quelqu'un qui va créer ces fichiers de formes pour moi avec QGIS comme vous l'avez décrit. Cependant, j'aimerais pouvoir définir ces clusters (par exemple via des codes NUTS: fusionner FR413 et FR411 en quelque chose appelé _FRX1) puis exécuter un script qui générerait ces fichiers de formes en cluster. Je veux être en mesure de corriger des erreurs ou d'accueillir des modifications accélérées sans la surcharge d'un outil GUI. Il est parfaitement possible que ces clusters soient définis par les utilisateurs finaux un jour, j'ai donc besoin d'un peu de flexibilité.
Nikolai Prokoschenko
Je ne l'utilise jamais, mais je pense que vous pouvez utiliser la console pour tout faire dans QGIS, donc il n'y a pas besoin de GUI. Vous devrez également toujours définir ces clusters dans une sorte de tableau, même si vous vous fiez entièrement à une solution scriptée. Ainsi, vous pouvez éviter de jouer avec votre fichier de formes en rejoignant cette table et en faisant ensuite fondre. Je suppose que ce serait également scriptable?
SAnderka
parfaitement possible, je suis complètement novice dans tout ce qui concerne les SIG. J'examinerai les scripts QGIS, merci.
Nikolai Prokoschenko
2

Pour moins de travail manuel, vous pouvez jeter un œil à SpatiaLite. Vous pouvez facilement importer des fichiers de formes en utilisant par exemple

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Ensuite pour la partie dissolvante:

J'aimerais pouvoir définir ces clusters (par exemple via des codes NUTS: fusionnez FR413 et FR411 en quelque chose appelé _FRX1)

La fonction dont vous avez besoin ici est GUnion (). Vous voudrez peut-être définir vos "clusters" dans un deuxième tableau. Ensuite, vous pouvez joindre le cluster et la table des aires et utiliser GUnion () avec GROUP BY pour créer la table union_table finale.

Vous pouvez ensuite exporter vers un fichier de formes à l'aide de .dumpshp

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

Si vous avez besoin de GeoJSON, vous pouvez convertir le fichier maintenant.

Vous pouvez écrire un court script, par exemple en Python, qui gère toutes ces charges, jointures et vidages.

obscur
la source
Ça a l'air très prometteur, je vais l'expérimenter! Merci! Pourriez-vous expliquer ce que font les lignes UPDATEet SELECT?
Nikolai Prokoschenko