{"word_count": 192, "character_count": 2584}
Le petit script BASH suivant permet, pour chaque fichier CSV de traces GPS passé en argument, de le convertir en un fichier SHP (Shapefile) et de le reprojeter du système WGS84 en RGF93/Lambert-93. Il nécessite une installation préalable de GDAL/ogr2ogr et, optionnellement, de l'utilitaire PARALLEL (qui permet - par le biais d'un mécanisme de parallélisation "gros grain" - d’accélérer fortement le traitement d'importants volumes de données).#! /bin/bash -e #~ ====================================================================== #~ Thomas LEDUC - le 10/01/2018 #~ ====================================================================== trap "rm --force ___*.{dbf,prj,shp,shx,vrt}" INT TERM EXIT; #~ ====================================================================== function _csv2shp() { &#160;&#160;&#160;&#160;local radic="${1%.*}"; &#160;&#160;&#160;&#160;local tmpRadic=___${$}; &#160;&#160;&#160;&#160;cat &#60;&#60;EOF &#62; ${tmpRadic}.vrt; &#60;OGRVRTDataSource&#62; &#160;&#160;&#160;&#160;&#60;OGRVRTLayer name="${radic}"&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;SrcDataSource&#62;${radic}.csv&#60;/SrcDataSource&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;GeometryType&#62;wkbPoint&#60;/GeometryType&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;LayerSRS&#62;WGS84&#60;/LayerSRS&#62; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;GeometryField encoding="PointFromColumns" x="Latitude" y="Longitude"/&#62; &#160;&#160;&#160;&#160;&#60;/OGRVRTLayer&#62; &#60;/OGRVRTDataSource&#62; EOF &#160;&#160;&#160;&#160;rm --force ${tmpRadic}.{dbf,prj,shp,shx}; &#160;&#160;&#160;&#160;#~ CONVERSION CSV -&#62; SHP (WGS84) &#160;&#160;&#160;&#160;ogr2ogr -f "ESRI Shapefile" ${tmpRadic}.shp ${tmpRadic}.vrt; &#160;&#160;&#160;&#160;rm --force ${radic}.{dbf,prj,shp,shx}; &#160;&#160;&#160;&#160;#~ REPROJECTION WGS84 -&#62; L93 &#160;&#160;&#160;&#160;#~ RGF93/Lambert-93 == EPSG:2154 &#160;&#160;&#160;&#160;#~ WGS84 == EPSG:4326 &#160;&#160;&#160;&#160;ogr2ogr -f "ESRI Shapefile" -t_srs EPSG:2154 -s_srs EPSG:4326 ${radic}.shp ${tmpRadic}.shp; } #~ indispensable pour pouvoir invoquer la commande parallel export -f _csv2shp; #~ ====================================================================== if [ -x /usr/bin/parallel ]; then &#160;&#160;&#160;&#160;parallel --verbose _csv2shp ::: ${@}; else &#160;&#160;&#160;&#160;for file in ${@}; do &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "=== Process ${file} ==="; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_csv2shp ${file}; &#160;&#160;&#160;&#160;done fi