[DEV] Le format .topojson

Ce billet vise à expliquer comment convertir un fond de carte au format shapfile (.shp) en topojson, format carotgraphique utilisé par la librarie javasript d3.js. Toutes les opération sont réalisées sous linux. (Opération réalisée sous ubuntu 13.04).

 

Deux outils sont nécessaires 

ogr2ogr qui est un partie du package GDL/OGR qui permet la conversion de géométries en de nombreux formats. Cet outil, qui est le couteau suisse du geomaticien permet également d’effectuer des changements de projection.

Topojson qui est un outil permetant de compresser une geométrie au format json (ou geojson). Le format de sortie est le .topojson qui a l’avantage d’être 80% plus léger.

Le processus de transformation sera donc le suivant : shapfile -> [ogr2ogr] -> shapfile_proj-> [topojson] ->  topojson

Installations

Installer GDAL/OGR

$ sudo add-apt-repository ppa:ubuntugis/ppa && sudo apt-get update
$ sudo apt-get install gdal-bin

Installer Topojson

$ sudo apt-get install npm -g$ sudo npl install -g topojson

Testez que l’installation s’est bien passée en tapant :

$ which ogr2ogr
$ which topojson

Convertir shp->topojson

AVERTISSMENT : la geométrie topojson doit impérativement être en WGS84 (EPSG:4326), il est donc indispensable de changer la projection de votre shpafile à l’aide du programme ogr2ogr. Pour cela, votre shp doit être accompagné d’un ficher prj.

$ ogr2ogr -f ‘ESRI Shapefile’ -t_srs EPSG:4326 output_tmp.shp input.shp

le fond de cartes est désormais propjeté en WGS84, nous allons maintenant le convertir en topojson.

$ topojson -o output_final.topojson –id-property ID -p ID=id,name=name output_tmp.shp

Il est possible comme le montre cet exemple, de passer lors de la conversion des parametres comme l’identifiant ou des champs contenus dans le shapfile. Pour plus de detail, reportez-vous à la doc ci-dessous.

http://www.gdal.org/ogr2ogr.html
https://github.com/mbostock/topojson/wiki/Command-Line-Reference


Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *