GOV/Statistik
< GOV
Zur Navigation springen
Zur Suche springen
Animierte Karte
Koordinaten und Bearbeitungszeitpunkte in einer Tabelle zusammenstellen:
create temporary table visual ( date date, latitude double, longitude double);
insert into visual select distinct date(valid_from), latitude, longitude from gov_item, revision where gov_item.id=revision.item and latitude is not null;
insert into visual select distinct '2000-01-01', latitude, longitude from gov_item where id <= 149288 and latitude is not null;
Mit diesem Skript werden die Einzelbilder erzeugt:
#!/bin/bash
currentdate=$1
loopenddate=$(/bin/date --date "$2 1 day" +%Y-%m-%d)
until [ "$currentdate" = "$loopenddate" ]
do
echo $currentdate
echo "SELECT longitude, latitude from visual where date <= '$currentdate';"| mysql gov |grep -v longi > alt.txt
echo "SELECT longitude, latitude from visual where date = '$currentdate';"| mysql gov |grep -v longi > neu.txt
/usr/lib/gmt/bin/pscoast -R-7/32/44/58 -JM12.8i --PAPER_MEDIA=A2 -Di -A500 -W0.5p,white -P -K > temp.ps
/usr/lib/gmt/bin/psxy alt.txt -R -JM -Sc0.01 -Gdarkblue -O -P -K >> temp.ps
/usr/lib/gmt/bin/psxy neu.txt -R -JM -Sc0.05 -Gyellow -O -P >> temp.ps
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pngalpha -q -r100 -sOutputFile=temp.png temp.ps
convert temp.png -background black -flatten -trim -resize 1280x720! $currentdate.png
currentdate=$(/bin/date --date "$currentdate 1 day" +%Y-%m-%d)
done
Die Jahreszahlen im Film werden jeweils in die Bilder zum Januar kopiert. Dazu habe ich ein schwarzes Bild (1280x720 Pixel groß) mit der Jahreszahl unten links erstellt. Mit folgenden Befehl wird es in die Einzelbilder gerechnet:
for p in 2012-01*; do pngtopnm $p > temp.ppm; rm $p; pnmarith -add temp.ppm text2012.pgm | pnmtopng > $p; done
Die Einzelbilder werden dann zu einem Film verrechnet:
mencoder mf://20*.png -mf w=1280:h=720:fps=15:type=png -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o gov.avi
Karte mit Regionen starker Bearbeitung
Tabelle gov_all_edits.txt mit allen Bearbeitungen erstellen:
select longitude, latitude,1 from revision, gov_item where item=gov_item.id and latitude is not null;
und mit folgenden Befehlen in eine Karte umwandeln.
/usr/lib/gmt/bin/blockmean gov_all_edits.txt -R-7/32/44/58 -I5m -Sz -C > gov_all_edits_5x5.xyg
/usr/lib/gmt/bin/xyz2grd gov_all_edits_5x5.xyg -R-7/32/44/58 -I5m -Ggov_all_edits_5x5.grd
# /usr/lib/gmt/bin/grd2cpt gov_all_edits_5x5.grd > data.cpt
/usr/lib/gmt/bin/grdimage gov_all_edits_5x5.grd -JM12.8i --PAPER_MEDIA=A2 -Cdata.cpt -B2 -K > map.ps
/usr/lib/gmt/bin/pscoast -R -J -Di -A500 -W0.5p,white -N1/0.25p,gray -O >> map.ps
Mit -I5m wird ein Raster von 5' festgelegt. Die Farbtabelle data.cpt kann man sich generieren lassen oder diese hier verwenden:
0 0 0 0 1 0 0 0 1 285 1 0.1 10 285 1 1 10 255 1 1 25 255 1 1 25 225 1 1 50 225 1 1 50 195 1 1 100 195 1 1 100 165 1 1 250 165 1 1 250 135 1 1 500 135 1 1 500 105 1 1 750 105 1 1 750 75 1 1 1000 75 1 1 1000 45 1 1 2000 45 1 1 2000 15 1 1 3500 15 1 1 B 0 0 0 F 0 0 1 N 0 0 0