Suite

Comment télécharger GeoJSON sur CartoDB dans un CRS qui n'est pas lat/lon ?

Comment télécharger GeoJSON sur CartoDB dans un CRS qui n'est pas lat/lon ?


Je suis presque sûr que je dois convertir les coordonnées de mon fichier GeoJson en EPSG:3857 pour qu'ils puissent bien jouer avec CartoDB, mais je ne sais pas dans quel système de coordonnées ils se trouvent actuellement. Les données d'origine proviennent de Ordnance Survey. Voici comment j'ai obtenu ces données et comment je les ai transformées :

  • J'ai téléchargé le fichier de formes UK OS pour les limites de la "super zone de sortie de la couche inférieure".
  • J'ai utilisé l'outil de ligne de commande mapshaper pour simplifier considérablement les polygones et exporter le résultat en tant que GeoJson.
  • (J'ai ensuite utilisé un script Ruby pour supprimer toutes les fonctionnalités qui n'étaient pas dans le Grand Manchester, mais j'espère que ce n'est pas pertinent.)
  • Enfin, j'ai importé le résultat en tant que jeu de données CartoDB mais n'a vu aucun polygone sur la vue de la carte.

Voici un exemple de fonctionnalité de mon fichier GeoJson :

{ "type": "Feature", "properties": { "LSOA11CD": "E01004766", "LSOA11NM": "Bolton 005A", "LSOA11NMW": "Bolton 005A" }, "geometry": { "type": "Polygone", "coordonnées" : [ [ [ 370664.009, 411365.069 ], [ 370452.531, 411428.156 ], [ 370344.061, 411733.869 ], [ 370510.978, 411885.617 ], [ 370774.826, 411942.479 ], [ 370795.626, 41152716.363 ] ].

Si je peux découvrir quel est le système de coordonnées actuel, je suis convaincu que je peux convertir à l'aide de QGIS.


Il existe une autre option que la conversion dans QGIS, qui consiste à ajouter la propriété CRS à GeoJSON avant de télécharger sur CartoDB, voir la spécification GeoJSON. Cela signifie que vous devez convertir votre GeoJSON en une collection d'entités, ce qui peut être utile de toute façon, si vous souhaitez télécharger plus d'une géométrie. Ainsi, au début de votre GeoJSON, vous mettez le CRS de EPSG:27700 (la projection britannique), et CartoDB le lira et le convertira sous le capot en 4326 (lat/lon). Pour être clair, alors que les tuiles sont dans Web Mercator (3857), les données vectorielles téléchargées devraient être en 4326, et cela sera supposé, sauf indication contraire. Une colonne masquée, the_geom_webmercator est également créée, mais ce sera faux et vos données n'apparaîtront pas au bon endroit, à moins que les données vectorielles téléchargées ne soient en 4326 ou que le CRS soit spécifié, comme dans l'exemple ci-dessous.

Vous pouvez vérifier que c'est le cas en exécutant

SELECT ST_Srid(the_geom) FROM bolton

dans le panneau SQL de CartoDB sur votre GeoJSON d'origine sans l'ensemble CRS, et il reviendra 4326. CartoDB permettant des valeurs telles que (370664.009, 411365.069) dans une colonne qui est implicitement 4326 sans demander à l'utilisateur un CRS, pourrait être considéré comme un bogue.

Évidemment, vous pouvez également emprunter la route QGIS, mais cette approche est probablement plus rapide. Enregistrez ce qui suit sous le nom bolton.json, et CartoDB se fera un plaisir de l'ingérer.

{ "type": "FeatureCollection", "crs": { "type": "EPSG", "properties": { "code": 27700 } }, "features": [ { "type": "Feature", " properties": { "LSOA11CD": "E01004766", "LSOA11NM": "Bolton 005A", "LSOA11NMW": "Bolton 005A" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 370664.009, 411365.069 ], [ 370452.531, 411428.156 ], [ 370344.061, 411733.869 ], [ 370510.978, 411885.617 ], [ 370774.826, 411942.479 ], [ 370795.626, 411526.363 ], [ 371171.853, [ 4116771453 ], [ 37117151.854, 411677,753] , 411866.915 ], [ 371452.615, 411272.858 ], [ 371336.156, 411156.394 ], [ 371161.151, 411170.972 ], [ 371052, 411185.906 ], [ 370664.009, 411365.069 ] ] ] } } ] }

Voir la vidéo: Arrivée des CRS