From 7e6f0cd00e2a604916552a7a3f48ce37bcae95c2 Mon Sep 17 00:00:00 2001 From: typebrook Date: Fri, 25 Oct 2019 01:16:33 +0800 Subject: update --- scripts/csv2geojson | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) (limited to 'scripts/csv2geojson') diff --git a/scripts/csv2geojson b/scripts/csv2geojson index 47b481c..988ead0 100755 --- a/scripts/csv2geojson +++ b/scripts/csv2geojson @@ -1,23 +1,41 @@ #! /bin/bash -# show each field with index in csv -echo -------------- > /dev/tty -head -1 $1 | sed 's/,/ /g' | awk '{for (i=1; i<=NF; i++) printf $i "_" i " "; print ""}' > /dev/tty +# -s to skip specify columns of longitude and latitude +for i in "$@" +do +case $i in + -s) + lon_col=0 + lat_col=1 + shift + ;; + *) + csv=$i + shift + ;; +esac +done -echo -------------- > /dev/tty -echo > /dev/tty +# if no -s option, just read from input +if [ "$lon_col" != "0" ]; then + # show each field with index in csv + echo -------------- > /dev/tty + head -1 < $csv | sed 's/,/ /g' | awk '{for (i=1; i<=NF; i++) printf $i "_" i " "; print ""}' > /dev/tty + echo -------------- > /dev/tty + echo > /dev/tty -# get index of lon/lat column -read -p "Number of latitude column: " lat_col -read -p "Number of longitude column: " lon_col + # get index of lon/lat column + read -p "Number of latitude column: " lat_col + read -p "Number of longitude column: " lon_col +fi -cat $1 | -# move lon/lat column to the start +cat $csv | +# move lon and lat to the first and second column awk -F',' -v lon_th=$lon_col -v lat_th=$lat_col '\ BEGIN{OFS=","}\ {printf $lon_th "," $lat_th; for (i=1; i<= NF; i++) if (i != lat_th && i != lon_th) printf "," $i; print ""}\ ' |\ -# change csv into array format +# change csv into array format, like [lon, lat, "field1", field2...] sed 's/[^,]*/"\0"/g; s/.*/[\0]/g' |\ # wrap other fields as a json object, like [lon, lat, {...}] jq -s '.[0][2:] as $fields | .[1:][] | [.[0], .[1], ([$fields, .[2:]] | transpose | map({(.[0]): .[1]}) | add)]' |\ -- cgit v1.2.3-70-g09d2