Giter Site home page Giter Site logo

gregoiredavid / france-geojson Goto Github PK

View Code? Open in Web Editor NEW
701.0 37.0 402.0 213.1 MB

Contours des régions, départements, arrondissements, cantons et communes de France (métropole et départements d'outre-mer) au format GeoJSON

Home Page: https://france-geojson.gregoiredavid.fr

geojson france

france-geojson's People

Contributors

gregoiredavid avatar jmleroux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

france-geojson's Issues

Format geojson jusqu'au niveau communal ?

Bonjour,

Très bonne initiative ce repo, je travaille également sur le sujet, notamment sur la génération d'un fichier geojson regroupant métropole et DOM TOM à un niveau de découpe communal.

Problèmes :

  • Les fichiers de l'IGN ne contiennent pas les TOM > http://professionnels.ign.fr/geofla#tab-3
  • Comment fusionner les différents shapefiles en un seul ?
  • Avez vous un procédé particulier supplémentaire outre le passage à mapshaper ?

Pour ma part je m'inspire de :
https://medium.com/@mbostock/command-line-cartography-part-1-897aa8f8ca2c#.tq5zbgb1x
https://medium.com/@aendrew/creating-topojson-using-d3-v4-10838d1a9538#.jg6yh5vux

Actuellement j'arrive à obtenir une France métropolitaine projetée dans un topojson de 13Mo. Dans la mesure où les élections vont faire naître le besoin d'un fichier léger et bien formaté peut-on envisager un consensus pour un fichier unique ?

Communes - Plotly - Bug

Bonjour,

Je cherche a tracer les communes-version-simplifiee via Python, geopandas et Plotly.
Je ne comprend pas pouquoi communes ne s'affiche pas.
Je peux afficher des groupes de communes mais l'ensemble ne fonctionne pas.

Auriez vous une idée ?
`
communesgeo_path = os.path.join("resources", "france-geojson-master", "communes-version-simplifiee.geojson")

import json
with open(communesgeo_path, "r") as f:
communesgeo_data = json.load(f)

import geopandas as gpd
geo_df = gpd.GeoDataFrame.from_features(
communesgeo_data["features"]
)

fig = px.choropleth_mapbox(geo_df ,
geojson=geo_df .geometry,
locations=geo_df .index,
color="code",
center={"lat": 46.227638, "lon": 2.213749},
mapbox_style="open-street-map",
zoom=8.5)
fig.show()
`

Départements d'outre-mer

Les sources cartographiques pour les DOM (Guadeloupe, Martinique, Guyane, La Réunion, Mayotte) étant disponibles sur GEOFLA, j'aurais voulu savoir si vous aviez prévu de les ajouter ? Merci !

Metadonné "nom" au lieu de "name"

Dans la description du format GeoJson, dans properties ce trouve l'attribue "name" et non "nom".
Ce petit écart rend tous les fichier geojson inutilisable par certaines applications sans devoir éditer les fichiers pour changer le nom de cette propriété.
{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [125.6, 10.1] }, "properties": { -->"name": "Dinagat Islands" } }

Round coordinates to 6 digits

Hello!

Thanks for this repository. It would be an improvement to round all coordinates to 6 digits to have smaller files and to avoid unnecessary digits:

Accuracy of latitude / longitude:

The sixth decimal place is worth up to 0.11 m: you can use this for laying out structures in detail, for designing landscapes, building roads. It should be more than good enough for tracking movements of glaciers and rivers. This can be achieved by taking painstaking measures with GPS, such as differentially corrected GPS.

From https://gis.stackexchange.com/questions/8650/measuring-accuracy-of-latitude-and-longitude

Communes pour Corse

Bonjour Grégoire,

Je ne peux pas trouver les données de communes pour Corse.

Peux-tu s'il te plait les mettre.

Merci :)

La base de données ADMIN EXPRESS COG remplace GEOFLA®

Merci pour ce beau travail regroupant ces fichiers très utiles !

Je voulais remonter l'information que GEOFLA ne sera plus mis à jour et il faut désormais se référer à Admin Express - toujours sur le site de l'IGN - afin d'avoir les versions plus récentes des fichiers .shp, .dbf et autre.

Je ferai un PR avec plaisir mais je ne connais pas votre méthode préférée de générer les fichiers geojson à partir des fichiers d'origine ?

[Question] Commande Mapshaper

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

Polygons and MultiPolygons should follow the right-hand rule

Bonjour,
Le fichier geojson des départements téléchargé à l'adresse https://france-geojson.gregoiredavid.fr/repo/departements.geojson ne passe pas sur Leaflet avec la méthode L.geoJSON()
Testé sur le site http://geojsonlint.com/ , on obtient le message d'erreur :
Line 1: Polygons and MultiPolygons should follow the right-hand rule
Solution : copier son contenu dans le formulaire sur ce site https://mapster.me/right-hand-rule-geojson-fixer/
Encore merci de mettre ces fichiers à notre disposition.

Marconne est invalide

Lors de l'import des geometry des geojson dans ElasticSearch, j'ai reçu une erreur sur la ville de Marconne.

elastic: Error 400 (Bad Request): failed to parse [geometry] [type=mapper_parsing_exception]

Je suis donc allé copy/paste la feature dans http://geojsonlint.com/ et une erreur de validation survient : Polygons and MultiPolygons should follow the right-hand rule. 🤔

Il s'avère que Marconne a une particularité, d'après Wikipedia

Le village a la particularité d'avoir en son sein une enclave, la ville de Hesdin (...)

Google maps semble contourner (c'est le cas de le dire) le problème, car la partie de gauche est non-jointive (voir ici)

Pour fixer le problème d'invalidation du GeoJson, j'ai utilisé https://github.com/mapbox/geojson-rewind qui me permet de refaire passer la validation sur geojsonlint.com...

Tout cela pour dire :

  • Ne devrait-on pas, sur ce repo, utiliser un service comme travis pour curl sur geojsonlint.com afin de valider les PR ?
  • Je relance mes imports dans ES et vois si la France entière passe. Si tel est le cas, je proposerais une PR pour fixer cette commune et les autres que j'aurais éventuellement eu à fixer.

ajouter communes limitrophes

J'utilise ces cartes sur Magritt.

Je me retrouve dans une situation où j'aurais besoin d'ajouter au fond de carte des communes des départements alentours. Est-ce faisable? Comment?
Merci pour votre retour.

Modray

Angular + ngx-openlayers + database + NodeJs

Salut,

Pour ceux comme moi qui souhaite intégrer les coordonnées en base de données (ici Mysql) et/ou utiliser le composant ngx-openlayers (OpenStreetMap) je vous laisse mon script, ça pourrait peut-être servir à quelqu'un.

Raisons:
J'ai écris ce script car les coordonnées de certains départements/communes sont sur plus de deux dimensions et ne sont pas comprise par le composant ngx-openlayers. De ce fait il a fallu splitter les départements/communes.

Info:
Script en es6, utiliser une version NodeJs adapté.
Le script fonctionne avec le dossier departements au même niveau que le script.
Pour les départements/communes qui sont sur plus de deux dimensions, ceux-ci seront splitté avec la nomenclature suivante: "nom département/commune " + i

Prérequis:
NodeJs >= 8.9.3
npm i mysql2 fs-jetpack

Exécuter le script:
node < filename >(.js)

const mysql = require('mysql2/promise');
const fs = require('fs');
const path = require('path');
const jetpack = require('fs-jetpack');

const depPath = jetpack.inspectTree(path.join(__dirname, 'departements'));

(async () => {

  const connection = await mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'geo_fr'
  });

  for (let dir of depPath.children) {
    const depFile = dir.children.find(el => /^departement/g.test(el.name));
    const comFile = dir.children.find(el => /^communes/g.test(el.name));
    // On lit le fichier département
    // .geometry.coordinates
    // .properties.code
    // .properties.nom
    const contentDep = JSON.parse(fs.readFileSync(path.join(__dirname, 'departements', dir.name, depFile.name)).toString());
    // On lit le fichier communes
    // .features[].geometry.coordinates
    // .features[].properties.code
    // .features[].properties.nom
    const contentCom = JSON.parse(fs.readFileSync(path.join(__dirname, 'departements', dir.name, comFile.name)).toString());

    try {

      const finalDepCoordinates = [];
      const rootCoordinates = contentDep.geometry.coordinates;

      if (rootCoordinates.length > 1) {
        for (let part0 of rootCoordinates) {
          if (part0.length === 1) {
            // Je dois descendre
            for (let part1 of part0) {
              if (part1.length === 1) {
                // Je dois descendre
                for (let part2 of part1) {
                  // Je stocke
                  finalDepCoordinates.push(part2);
                }
              } else {
                // Je stocke
                finalDepCoordinates.push(part1);
              }
            }
          } else {
            // Je stocke
            finalDepCoordinates.push(part0);
          }
        }
      } else {
        finalDepCoordinates.push(rootCoordinates[0]);
      }

      let resDep;
      // On ajoute chaque partie du département
      for (let i = 0; i < finalDepCoordinates.length; i++) {
        resDep = await connection.execute(`insert into geo_fr_dep (code, name, coordinates) values (?, ?, ?)`, [
          contentDep.properties.code,
          contentDep.properties.nom + (i ? ` ${i}` : ''),
          JSON.stringify(finalDepCoordinates[i])
        ]);
      }

      console.log('Insert dep', contentDep.properties.nom);

      for (let dep of contentCom.features) {
        const finalComCoordinates = [];
        if (dep.geometry.coordinates.length > 1) {
          for (let part0 of dep.geometry.coordinates) {
            if (part0.length === 1) {
              // Je dois descendre
              for (let part1 of part0) {
                if (part1.length === 1) {
                  // Je dois descendre
                  for (let part2 of part1) {
                    // Je stocke
                    finalComCoordinates.push(part2);
                  }
                } else {
                  // Je stocke
                  finalComCoordinates.push(part1);
                }
              }
            } else {
              // Je stocke
              finalComCoordinates.push(part0);
            }
          }
        } else {
          finalComCoordinates.push(dep.geometry.coordinates[0]);
        }

        for (let i = 0; i < finalComCoordinates.length; i++) {
          console.log(dep.properties);
          const resCom = await connection.execute(`insert into geo_fr_com (code, name, coordinates) values (?, ?, ?)`, [
            dep.properties.code,
            dep.properties.nom + (i ? ` ${i}` : ''),
            JSON.stringify(finalComCoordinates[i])
          ]);
          console.log('Insert com', dep.properties.nom);

          await connection.execute(`insert into geo_fr_dep__geo_fr_com (geo_fr_dep_code, geo_fr_com_code) values (?, ?)`, [
            contentDep.properties.code,
            dep.properties.code
          ]);
          console.log('Insert link', contentDep.properties.code, ' | ', dep.properties.code);
        }
      }
    } catch (e) {
      console.log(e);
    }
  }

  process.exit(0);
})();

Nouvelles régions administratives

Si d'aventure le owner de ce repo avait sous le code la màj de la carto pour les nouvelles régions administratives, ce serait formidable ;)

Position des communes

Bonjour,

Je cherche à avoir un point représentatif de type geometry.type == "Point" pour les communes, qui soit à l'intérieur des polygones disponibles ici.

J'ai besoin pour mon application de ces deux informations simultanément (contour + point intérieur), je pense stocker le point intérieur pourra être stocké dans l'objet properties.

Pourriez-vous me suggérer une source d'information me permettant de recouper facilement les champs properties.code et properties.nom des fichiers que vous proposez ?

"properties": {
  "code": "03252",
  "nom": "Saint-Pont"
}

Une autre solution que j'envisage éventuellement est de calculer une approximation avec cet algorithme.
https://blog.mapbox.com/a-new-algorithm-for-finding-a-visual-center-of-a-polygon-7c77e6492fbc

Voir également cette question que j'ai posé sur stackoverflow https://stackoverflow.com/questions/52467305/computing-the-center-of-gravity-of-a-geojson-polygon-using-jq

Je vais aussi vouloir faire la même chose pour les départements.

Merci.

Problème d'affichage de la région provence

Bonjour
Je viens d'ajouter le fichier regions.geojson dans une page via openlayers

var regions = new ol.layer.Vector({
source: new ol.source.Vector({
url: './regions.geojson',
format: new ol.format.GeoJSON(),
})
});

Lors de l'exécution, les régions s'affichent mais il y a un bug pour PACA (voir image jointe)
Capture d’écran 2021-10-15 080943

An exemple of use with python Folium

Dear author, can you provide an example of use with python folium to show the French regions similarly as you show on you webmap page (just background color, dark borders) but no data into choropleth data field ?
Merci beaucoup,

Script pour carte départements avec code couleur ?

Bonjour,
Pour un projet perso (voir ci-dessous), je cherche un script python (notebook idéalement) pour afficher la carte des départements français avec un code de couleur, étant donné un vecteur avec une valeur numérique par département. Ca a l'air basique mais je n'ai rien trouvé pour l'instant. Il me semble que cette repo contient tous les éléments pour le faire.
Le projet perso, est d'analyser le fichier FANTOIR avec la liste de toutes les rues/voies de toutes les communes de france (mais sans info géographique) et d'extraire de la toponymie des infos sur la diffusion de pratique en agricultures. Extraire les infos du FANTOIR ne me pose pas de problème, j'aurai le nombre d'occurence de certains mots par départements. Il ne me manquera que la dernière étape, visualiser.
Merci d'avance pour toute indication utile.
David

Trop de décimales pour rien

Bonjour,
Dans les geojson que vous proposez, les coordonnées lat/lon ont jusqu'à 13 décimales !

Je suppose que cela vient de l'import des données de l'IGN mais cela n'a aucun intérêt.

Pour info, une 6ème décimale en latitude donne une précision de l'ordre de 78mm à 45° de latitude; cela veut dire que 13 décimales c'est obtenir une précision de l'ordre du nanomètre voire plus.

En passant à 6 décimales au lieu de 12 ou 13, j'ai fait passer un de vos fichiers de 3.7Mo à 2.4Mo !
J'ai utilisé un simple script python

import geojson

f = open('communes-bretagne.geojson')
g = geojson.loads(f.read())
f.close()

for f in g['features']:
    for u in f['geometry']['coordinates']:
        for v in u:
            try:
                v[0] = float('{:.6f}'.format(v[0]))
                v[1] = float('{:.6f}'.format(v[1]))
            except ValueError:
                for w in v:
                    w[0] = float('{:.6f}'.format(w[0]))
                    w[1] = float('{:.6f}'.format(w[1]))

f = open('communes-bretagne.min.geojson','w')
f.write(geojson.dumps(g).replace(', ',',').replace(': ',':'))
f.close()

cf: https://en.wikipedia.org/wiki/Decimal_degrees désolé c'est en anglais

Countour France métropolitaine seule (sans Corse)

Bonjour,
Merci pour cette belle collection,
Avez vous un contour fermé de l'exagone seul ?

J'ai besoin d'un seul contour fermé de la France du coup je sacrifie en dehors de l'exagone.
Merci encore !

🐛Données non uniformes

J'ai téléchargé les departements et je pense que les données ne sont pas uniformes.

Par exemple, pour les départements Charente-Maritime, Côte-d'Or, Finistère, Ille-et-Vilaine, Morbihan, Nord, Hautes-Pyrénées, Var, Vaucluse, Vendée nous avons typeof geometry.coordinates[0][0][0] === object et pour les autres typeof geometry.coordinates[0][0][0] === number

Plus d'arrondissements pour Paris, Lyon & Marseille ?

Hello,

Dans la dernière version (tag 2.1.0) la ville de Paris n’est plus proposée avec un découpage en arrondissements ce qui est dommage alors que c'était bien le cas pour le tag précédent (2.0.2) :

v2.1.0 : https://github.com/gregoiredavid/france-geojson/blob/master/departements/75-paris/communes-75-paris.geojson

v2.0.2 : https://github.com/gregoiredavid/france-geojson/blob/v2.0.2/departements/75-paris/communes-75-paris.geojson

Est-ce volontaire ? Je ne vois pas de mention spéciale à ce sujet dans le README et les commits.

Je pensais que ce type de découpage avait plus sa place dans le fichier arrondissements-75-paris.geojson mais ce n’est pas le cas dans ces 2 versions (toujours sans arrondissements).

EDIT : apparemment même chose pour Lyon et Marseille 😢

Merci.

Error in ogrInfo(dsn = dsn, [...] : Cannot open data source

Bonjour,

J'avais utilisé vos cartes il y a de cela un an et depuis j'ai ce problème ... Impossible de le résoudre même en regardant les différents posts existants. Auriez-vous une idée ?
map0 <- readOGR("C:/Users/Profil1/Desktop/Outils/Algorithmes/Carte/france-geojson-master/regions.geojson","OGRGeoJSON")
La sortie :
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, : Cannot open layer

OU

map0 <- readOGR("C:/Users/Profil1/Desktop/Outils/Algorithmes/Carte/france-geojson-master","regions")
La sortie : Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, : Cannot open data source

Le fichier global communes n'est pas complet

Bonjour,

Le fichier communes ne contient pas toutes les communes comme les arrondissements de Paris alors qu'ils sont présent dans le fichier IDF communes. Ca serait bien de fusionner le tout pour éviter de le faire lors d'un import.

Merci :)

Faire un sous-découpage des départements

Bonjour @gregoiredavid,

D'abord, je tenais à vous remercier car j'utilise vos fichiers en tant que bénévole dans le cadre d'un projet pour l'AFM-Téléthon.
Dans le cas de notre association, certains départements sont découpés en plusieurs sous-ensemble (que nous appelons Coordination) ; J'aimerai donc pouvoir créer mes propres pseudo-département mais je ne sais pas comment m'y prendre.

Merci de votre aide,
Cyril

24 communes sont introuvable

Bonjour,

Suite à un traitement des fichiers geojson afin de les liés a d'autre entités, je m'aperçois qu'il manque 24 communes dans les fichiers geojson.

Voici la listes des communes manquante

Code INSEE Nom commune
97123 SAINT BARTHELEMY
97127 SAINT MARTIN
46048 CALVIAC
15177 SAINT CHRISTOPHE LES GORGES
15210 SAINT REMY DE SALERS
59154 COUDEKERQUE
68900 TROIS EPIS
85279 SALIGNY
36245 VILLERS LES ORMES
41021 LA BOSSE
41076 ECOMAN
76037 AUQUEMENSIL
86101 FRONTENAY SUR DIVE
22297 SAINT GOUENO
14265 FERVAQUES
14187 COULONCES
14388 MAISONCELLES LA JOURDAN
14545 ROULLOURS
14584 ST GERMAIN DE TALLEVENDE
14717 TRUTTEMER LE GRAND
14718 TRUTTEMER LE PETIT
14730 VAUDRY
27121 BUS ST REMY
61313 NOTRE DAME DU ROCHER

Savais-vous comment je peux trouver les découpes geojson de ces communes ? Ou quel moyen de les générer ?

Je vous remercie d'avance pour vos réponses

Et GRAND MERCI @gregoiredavid pour ton repo qui est super utile et visiblement bien maintenu !

Cantons

Bonjour,

Avez-vous envisager d'intégrer les contours des cantons ?
Merci pour ce repo bien pratique,

👍

[Question] V1 stable

Pourquoi ne pas passer la v1 en version stable ?
Au niveau de composer, rester en alpha peut bloquer l'installation d'applications qui demandent une version stable.

Versions simplifiées avec outre-mer

Salut,
pour les cartes complètes, il y a avec et sans outre-mer, qui font plusieurs mégas, mais quand on veut une carte légère simplifiée, là ça ne comprend jamais l'outre-mer.

Est-il donc possible de générer aussi dans le dépôt les versions simplifiées avec tous les territoires ?

Add Packagist integration

Question relative à la PR #10 : idéalement, vous pourriez mettre en place le webhook avec packagist qui vous permettrait de mettre le package à jour automatquement à chaque pull request.
Cet article donne un exemple de ce qui peut être fait: http://blog.jgrossi.com/2013/creating-your-first-composer-packagist-package/

Bonne soirée,
JM

PS: si ce n'est pas possible ou si vous ne le souhaitez pas, ce n'est pas grave. Le seul fait d'avoir un composer.json dans un repo public permet déjà d'utiliser le gestionnaire de paquets Composer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.