User:Lupin/mapping
From Wikipedia, the free encyclopedia
Contents |
[edit] coords
Data from http://freepages.genealogy.rootsweb.com/~agene/locations/ converted into text files in ./locations
Also now on wikisource.
#!/bin/bash
DIR=./locations
for i in "$@"; do
#echo $i
j=$(echo "$i" | sed -e 's/^\(.\).*$/\1/')
k=$(echo $j | tr a-z A-Z)
l=$(echo $j | tr A-Z a-z)
cat $DIR/*{$k,$l}* 2>/dev/null | \
grep -i "$i" | \
sed -e 's/^ *\([^0-9]*\)\([0-9NWSE.]* [0-9NWSE.]*\).*/\2 \1/' \
-e 's/\([0-9]\)[NE]/\1/g' \
-e 's/\(^[0-9.]*\)S/-\1/' \
-e 's/ \([0-9.]*\)W/ -\1/' \
-e 's/^\([-0-9.]*\) \([-0-9.]*\)/\2 \1/' | \
grep -i '[0-9] '"$i"
done
[edit] params
china-params3 SCALE=5/.7/20/400 VIEWPORT=72/136.2/17/54 finland2 VIEWPORT=18/35/59/82 SCALE=4.75/1/62/200 france-corsica-params VIEWPORT=-5.3/10/41/51.2 SCALE=.5/2/10/100 france-params-2 SCALE=.85/2/48/200 VIEWPORT=-5.3/9/42/51.2 italy-params2 SCALE=.5/1.7/10/100 VIEWPORT=6.4/19/35.5/47.25 japan SCALE=4.8/1/26/400 VIEWPORT=122/151.4/22/46.6 liechtenstein SCALE=4.5/9/47.15/5 VIEWPORT=9.44/9.66/47.04/47.28 switzerland SCALE=5/.8/45.5/100 VIEWPORT=5.8/10.6/45.3/48
[edit] makemap
#!/bin/bash
# GB map with red dot
x=$1
y=$2
if [ -n "$VIEWPORT" ]; then
VIEWPORT=-R$VIEWPORT
else
VIEWPORT=-R-9/2/49.7/58.9
fi
PROJECTION=-JM6i
BDY_ANNOTATION=$BDY_ANNOTATION
PORTRAIT=-P
COMMON_OPTIONS="$VIEWPORT $PROJECTION $BDY_ANNOTATION $PORTRAIT"
LAND_COLOUR=32/141/43
SEA_COLOUR=100/164/217
# high res data (not full)
: ${COAST_DATA:=h}
RIVERS=a/.01p/100/164/217
POLITICAL=a/1.5p/0/60/0
if [ -n "$SCALE" ]; then
SCALE=-Lx$SCALE
else
SCALE=-Lx1/1.3/51.47/200
fi
DOT=c.35c
DOT_COLOUR=255/255/0
# standard GB map
# -K means no PS trailer (more to come)
pscoast $COMMON_OPTIONS\
-D$COAST_DATA\
-G$LAND_COLOUR\
-S$SEA_COLOUR\
-K\
-I$RIVERS\
-N$POLITICAL\
$SCALE | sed \
-e "s/^\([0-9]*\) \([0-9]*\) M\(.* km[)]\)/\1 \2 58 sub M\3/" \
-e 's/58 F0/145 F0/' \
-e 's/S 2 W/S 10 W/'
# the sed expressions: (1) move "200 km" down by 58
# (2) make it a larger font
# (3) make the scale line thicker
# -O means no PS header (overlay)
echo $1 $2 | \
psxy $COMMON_OPTIONS\
-S$DOT -G$DOT_COLOUR -O
[edit] mappng
#!/bin/bash
RES=300
FIFO=$(tempfile -p $(basename $0) -s .ps)
rm $FIFO
mkfifo $FIFO
while read lat long place; do
echo $lat $long $place
safeplace=$(echo "$place" | sed -e 's/ /_/g')
file="$safeplace"_dot.png
(./makemap $lat $long > $FIFO ) &
convert -density $RES -trim $FIFO $file
optipng -zc 9 -zm 8 -zs 0 -f 0 $file
done
rm -v $FIFO

