ceturtdiena, 2010. gada 24. jūnijs

Latvijas kartes priekš TurboGPS

Skripts, kas savāc kartes ar visu Latviju un savāktās kartes pārsauc TurboGPS saprotamā veidā.


#!/bin/bash

## No cik gabaliem taisīsim lielāku karti - kartes gabaliņi tiks vilkti 1/$KarsuSkaits malu attiecībā (tā ir ātrāk)
KarsuSkaits=10

## Kāds būs mazās kartes platums - 500 labi pilsētām, citur pietiek ar 2000
XSOLIS=2000

## Kur novietosim izveidotās kartes
mkdir map$XSOLIS
MAPDIR=map$XSOLIS

## Sākums un beigas X un Y koordinātu plaknē - te ir visa Latvija un vēl biki
LV_X_START=313000
LV_Y_START=6172000
LV_X_BEIGAS=763000
LV_Y_BEIGAS=6439000


## funkcija karte, kas savāc mazos gabaliņus un izveido karti
function karte() {
## No kuras X koordinātes sāksim vilkt kartes
XSAKUMS=$1
## No kuras Y ordinātes sāksim vilkt kartes
YSAKUMS=$2
## Aprēķinam X un Y koordināšu beigas.
XBEIGAS=$(($XSAKUMS + $KarsuSkaits * $XSOLIS ))
YBEIGAS=$(($YSAKUMS + $KarsuSkaits * $XSOLIS ))


X1=$XSAKUMS
## Nobīde +10, lai kartes numurā būtu 2 cipari un montage tās saliktu pareizā secībā.
for kartite in `seq 11 $(($KarsuSkaits+10))`
do
# mazo kartīti velkam 1/$KarsuSkaits izmērā
wget -q "http://maps.kartes.lv/kijs/get_map.php?BBOX=$X1,$YSAKUMS,$(($X1+$XSOLIS)),$YBEIGAS&KIJS=BM45" -O tmp-$XSAKUMS-$kartite.gif
X1=$(($X1+$XSOLIS))
done
## Izplānojam kartes nosaukumus
KartesNosaukums="$XSAKUMS-$YSAKUMS-$XBEIGAS-$YBEIGAS"

## Izplānojam kartes nosaukumus priekš TurboGPS
## LU - Left Upper - kreisais augšējais stūris koordinātes
XLU=`echo $XSAKUMS $YBEIGAS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $1}'`
YLU=`echo $XSAKUMS $YBEIGAS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $2}'`
## RL - Right Lower - labais apakšējais stūris koordinātei
XRL=`echo $XBEIGAS $YSAKUMS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $1}'`
YRL=`echo $XBEIGAS $YSAKUMS | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.8f" | awk '{print $2}'`
TGPSKOORD=$XLU'_'$YLU'_'$XRL'_'$YRL


## No mazajām kartēm izveidojam vienu lielāku karti
echo montage tmp-$XSAKUMS-* -tile "$KarsuSkaits"x1 -geometry 200x2000 $KartesNosaukums.gif
montage tmp-$XSAKUMS-* -tile "$KarsuSkaits"x1 -geometry 200x2000 $MAPDIR/$KartesNosaukums.gif
## Un izveidojam kopiju priekš turboGPS
cp -v $MAPDIR/$KartesNosaukums.gif $MAPDIR/$TGPSKOORD'_2000_2000.gif'
}


## Nosūtam funkcijai X un Y sākuma koordinātes
#start=352000
KartesXSolis=$(($XSOLIS*$KarsuSkaits))
KartesYSolis=$(($XSOLIS*$KarsuSkaits))
for YNr in `seq $LV_Y_START $KartesYSolis $LV_Y_BEIGAS`
do
for XNr in `seq $LV_X_START $KartesXSolis $LV_X_BEIGAS`
do
karte $XNr $YNr
done
done

pirmdiena, 2010. gada 7. jūnijs

LKS92 konvertācija uz platuma un garuma grādiem

Konvertēt var ar proj komandu cs2cs, piemēram, Rīga (Rīgas 3. vidusskola):
http://www.balticmaps.eu/?lang=lv&draw_hash=jlfstt&centerx=506642&centery=6311466&zoom=-2&layer=map

echo 506642 6311466 | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.999600 +x_0=500000 +y_0=0 \
+ellps=GRS80 +towgs84=-199.87,74.79,246.62,0,0,0,0 +units=m -f "%.7f"
24.1091813 56.9467706 0.0000000

# Vai
echo 506642 6311466 | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 \
+ellps=GRS80 +units=m +to=WGS84 -f "%.6f"
24.109181 56.946771 0.000000

# Vai
echo 506642 6311466 | cs2cs +proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_0=0 \
+ellps=GRS80 +units=m +to=WGS84
24d6'33.053"E 56d56'48.374"N 0.000