gregoiredavid / france-geojson

Contours des régions, départements, arrondissements, cantons et communes de France (métropole et départements d'outre-mer) au format GeoJSON
https://france-geojson.gregoiredavid.fr
733 stars 410 forks source link

[Question] Commande Mapshaper #22

Closed tibs245 closed 6 years ago

tibs245 commented 6 years ago

Salut @gregoiredavid ,

J'ai effectivement télécharger les données, sur admin express comme tu me l'as conseillé sur l'ancienne issue. Pourrais-tu me donner aussi la commande qui permet d'exporter les communes de mapshaper par régions ?

Je pense que ce serait intéréssant de marquer les commandes de mapshaper utiliser pour la générations des fichiers. Pourquoi pas dans un tableau dans un fichier markdown a part.

Merci beaucoup d'avance si tu les as !

Bonne journée et bon week-end

gregoiredavid commented 6 years ago

Bonjour !

Pour ce qui est de la commande mapshaper que j'utilise, la voici, mais elle permet uniquement de convertir un fichier shp quelconque (input.shp) au format geojson dans un nouveau fichier (output.json).

mapshaper -i input.shp snap -proj wgs84 -simplify 25% weighted keep-shapes -o format=geojson precision=0.000001 output.json

J'applique au passage quelques optimisations, je te laisse voir la doc officielle de mapshaper pour le détail.

Je sais qu'il existe également des options dans mapshaper qui permettent de "trier" les features en fonction de leurs attributs pour générer plusieurs fichiers au lieu d'un seul (notamment l'option "-split" il me semble), mais je ne les utilise pas en général, elles sont trop limitées par rapport à mes besoins. Une fois que j'ai les données en geojson, je les croise avec celles de l'insee, je les injecte dans une base de donnée qui contient d'autres informations dont j'ai souvent besoin et je requête ensuite cette base pour générer un ou plusieurs fichiers geojson en fonction de mes besoins pour un projet donné.

tibs245 commented 6 years ago

Merci beaucoup @gregoiredavid ! Ta réponse m'a beaucoup aider.

Pour les prochains qui voie cette issue je vous donne mon choix de procédure que j'ai suivis si vous avez besoin de régénérer les cartes d'une manière différente ou plus à jours.

Cela m'a rendu un fichier json exploitable avec les donnée suivante :

{"ID":"BDCSURCO0000000009586213",
"NOM_COM":"Lachapelle-Saint-Pierre",
"NOM_COM_M":"LACHAPELLE-SAINT-PIERRE",
"INSEE_COM":"60334","STATUT":"Commune simple",
"POPULATION":902,
"INSEE_ARR":"1",
"NOM_DEP":"OISE",
"INSEE_DEP":"60",
"NOM_REG":"HAUTS-DE-FRANCE",
"INSEE_REG":"32",
"CODE_EPCI":"200067973"}

Etant avec du matériel limité et un système Windows malgré moi, ( d'où mon besoin de baisser encore la qualité ), j'ai dût séparé les fichiers par département. Pour cela :

Get-Content '.\output0118.json' | %{
    if ($_ -match '"INSEE_DEP":"(?<DEP>\d{1,3}[A-B]?)"') { 
        $file = 'communes-' + $Matches.DEP + '.json'; 
        if (!(Test-Path $file))  { 
            '{"type":"FeatureCollection", "features": ['> $file }; 
        $commune = $_ -replace '"properties":\{.+"INSEE_COM":(".+"),"STATUT.+[^\}\]]\}','"properties":{"code":$1}'; 
        $commune >> $file }}

Get-ChildItem communes*.json | foreach { $content = Get-Content $_ -raw; if ($content[$content.length-3] -eq "," ) { $content = $content.Substring(0,$content.length-3) }; $content += ']}'; $content > $_}

Puis si vous souhaitez changer l'encodage en UTF-8 sans BOM utiliser :


Get-ChildItem communes* | foreach { $content=Get-Content $_.Name; $content | Out-FileUtf8NoBom $_.Name }

Avec le script suivant a importer avant : https://gist.github.com/mklement0/8689b9b5123a9ba11df7214f82a673be Dsl pour la lisibilité du code. Je ne compté pas le maintenir

Merci encore @gregoiredavid notament pour ta réactivité lorsqu'on a une question :)