Benutzer-Werkzeuge

Webseiten-Werkzeuge


navit

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
navit [2012/03/11 19:00]
inoculator [LINKS]
navit [2012/03/16 15:17] (aktuell)
inoculator Script aktualisiert und Erklärung erweitert.
Zeile 94: Zeile 94:
  
 ====== Kartenmaterial ====== ====== Kartenmaterial ======
-Ein kleines BASH Script unter Linux/Ubuntu.+**Nachfolgender Abschnitt ist Alpha Status. Es muss noch eine Menge gemacht werden in Bezug auf Quellserver und Datenmenge.**\\ 
 +Ein kleines PERL Script unter Linux/Ubuntu. 
 +== download.pl ==
 <code=bash> <code=bash>
-#festlegen der aktuellen Zeit +#!/usr/bin/perl 
-curtime=$(date +%F-%H%M)+ 
 +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time); 
 +$curtime=sprintf("%4d-%02d-%02d-%02d%02d",$year+1900,$mon+1,$mday,$hour,$min)
 +print "\$curtime=".$curtime."\n"; 
 +##$curtime="2012-03-13-1312"; 
 +##$speedlimit=" --limit-rate=15"; 
 +##$starttile=85;
  
-#Je nach gewuenschtem Abschnitt auskommentieren 
 #NRW #NRW
-ausschnitt=NRW +$ausschnitt="NRW"; 
-links=5.86533 +$links=5.86533; 
-rechts=8.08456 +$rechts=8.08456; 
-oben=51.70831 +$oben=51.70831; 
-unten=50.66861+$unten=50.66861;
  
-#Radevormwald +print "Eingabe des Koordinatensystem [Format: ddd.ddddd (Dezimalnotation)]\n"; 
-#links=7.28737 +print "West [".$links."]:\t"; 
-#rechts=7.38899 +$a=<STDIN>; 
-#oben=51.23742 +if ($a!="") {$links=$a;
-#unten=51.18408+print "Ost [".$rechts."]:\t"; 
 +$a=<STDIN>; 
 +if ($a!="") {$rechts=$a;} 
 +print "Nord [".$oben."]:\t"; 
 +$a=<STDIN>; 
 +if ($a!="") {$oben=$a;} 
 +print "Süd [".$unten."]:\t"; 
 +$a=<STDIN>; 
 +if ($a!="") {$unten=$a;} 
 +print "Name des Ausschnittes [".$ausschnitt."]:\t"; 
 +$a=<STDIN>; 
 +if ($a!="") {$ausschnitt=$a} 
 +print "Hole ".$ausschnitt." aus ".$rechts.";".$links.";".$oben.";".$unten."\n"; 
 +print "Richtig [yes|NO]:\t"; 
 +$a=<STDIN>; 
 +if ($a!="yes") {exit ();}
  
-#URL -es gibt viele Server im Netz +#URL 
-#myurl=http://open.mapquestapi.com/xapi +#XAPI 
-myurl=http://jxapi.openstreetmap.org/xapi+#$myurl=http://open.mapquestapi.com/xapi 
 +#$myurl=http://jxapi.openstreetmap.org/xapi 
 +#$myurl=http://osmxapi.hypercube.telascience.org 
 +#$myurl=http://www.informationfreeway.org 
 +#OverPass 
 +#$myurl=http://www.overpass-api.de
  
 +$myurl="http://overpass.osm.rambler.ru";
  
-#holen der OSM Daten (manchmal reagieren die Server nicht, man ist nicht alleine ;-) +#engine 
-wget --timeout=0 -O $curtime-$ausschnitt.osm "$myurl/api_ +#XAPI 
-/0.6/map?bbox=$links,$unten,$rechts,$oben"+#$myeng=/api/0.6/map?bbox=$links,$unten,$rechts,$oben 
 +#$myeng=/api/0.6/*[name=Radevormwald] 
 +#OverPass 
 +#$myeng=/api/xapi?*[bbox=$links,$unten,$rechts,$oben]
  
-#Umwandeln der OSM Daten in die NavIT BIN Daten +$myeng="/cgi/xapi?map?bbox=";
-cat $curtime-$ausschnitt.osm | maptool $curtime-$ausschnitt.bin +
-</code>+
  
-Nun die BIN-Datei ins NavIT Verzeichnis auf der SDCard schieben und NavIT starten.\\ +$tiles=0; 
-Man sollte beim Laden allerdings nicht zuviel erwartenMal ein Statusbeispiel eines Servers, der gerade meinen Request für NRW abarbeitet:\\ +open (MYFILE, '>'.$curtime.'-'.$ausschnitt.'.txt'); 
-^Timestamp ^Remote Addr ^State ^Request ^Elements ^Runtime ^ + 
-|11-Mar-2012 17:01:11|84.60.212.184|DATABASE_QUERY|map?bbox=5.86533,50.66861,8.08456,51.70831|-|25 mins 52.126 secs| +for ($tilelinks=$links ; $tilelinks <= $rechts ; $tilelinks+=0.1) 
-<sub>Quelle: http://jxapi.openstreetmap.org/xapi/admin/stats</sub>+
 + for ($tileunten=$unten ; $tileunten<=$oben ; $tileunten+=0.1) 
 +
 + $tiles=$tiles+1; 
 + if ($tiles>=$starttile) 
 +
 + $tilerechts=$tilelinks+0.1001; ##0.001° Überlappung 
 + $tileoben=$tileunten+0.1001; ##0.001° Überlappung 
 + $coordinates=$tilelinks."-".$tileunten."-".$tilerechts."-".$tileoben; 
 + $file=$curtime."-".$ausschnitt."-".$coordinates."-".sprintf("%03d",$tiles).".osm"; 
 + $url=$myurl.$myeng.sprintf("%.5f",$tilelinks).",".sprintf("%.5f",$tileunten).",".sprintf("%.5f",$tilerechts).",".sprintf("%.5f",$tileoben); 
 + print $file."\n"; 
 + $command="wget".$speedlimit." --proxy --timeout=0 -O \"".$file."\" \"".$url."\"\n"; 
 + print MYFILE $command; 
 + system $command; 
 +
 +
 +
 +close (MYFILE); 
 +##exit 0; 
 +system "cat $curtime-$ausschnitt-*.osm | maptool --dedupe-ways $curtime-$ausschnitt.bin\n"; 
 +exit 0; 
 + 
 +</code> 
 +== Funktionsweise == 
 +Es werden ein paar Wertevorgaben gesetzt für Nordrhein Westfalen. Danach kann man aber mit eigenen Werten in der Eingabeaufforderung sein eigenes Quadrat anfordern.\\ 
 +Es muss dabei auf die Syntax geachtet werden. Zwar kommt nochmal eine Abfrage nach der letzten Bestätigung, aber es gibt noch keinen Syntaxcheck.\\ 
 +Nachdem ein aktueller Zeitstempel generiert wurde, werden die Koordinaten in Schritten zu 0.1 Grad abgefahren, dabei wird eine Überlappung um 0.001° erzeugt, um Fehler in der Umrechnung auf dem Server entgegenzuwirken.\\ 
 +Jedes dieser 0.1-Qadrate kann zwischen 5MB bis 100MB groß werden.\\ 
 +Die geladenen Dateien werden dann per maptool in das NavIT BIN-Format konvertiert werden.\\ 
 +Nun manuell die BIN-Datei ins NavIT Verzeichnis auf der SDCard schieben und NavIT starten.\\ 
 +Für die Koordinaten im Besipiel -Nordrhein-Westfalen; wurden 253 Dateien geladen mit einer Gesamtgröße von 3.7GB.\\ 
 +Das Konvertieren benötigt dann auch nochmal Platz. Also immer in einer Partition mit genügend freiem Speicher laufen lassen.\\ 
 +Auf einer Virtuellen Maschine mit 1024MB Speicher und 1CPU (2.4GHz) brauchte die Konvertierung etwa 10 Minuten.\\ 
 +In der Zeit wurden bis zu 750MB RAM und 100% CPU Last benötigtDas Ergebnis ist eine 110MB große BIN-Datei.\\ 
 +Ein kleiner Hinweisfür jene, welche mit WGET hinter einem Proxy arbeiten wollen und scheitern:\\ 
 +Es gibt eine Umgebungsvariable "no_proxy"Unter Debian/Ubuntu ist dort ein falsches Komma drindas muss weg.\\ 
 +== Scriptoutput == 
 +Es wird zum einen eine Textdatei angelegtin welcher alle WGET Befehle aufgelistet sindMir ist aufgefallen, daß mittendrin schonmal kleine Dateien (~800Byte) kommen, welche eine Fehlermeldung beinhaltenMit der Textdatei kann der entsprechende Befehl einfach auskopiert und nochmal einzeln im Terminal abgesetzt werden.\\ 
 +Wenn Ihr Änderungen in OSM an Eurem Kartenausschnitt macht, dann könnt ihr im Namen der Datei auch das Koordinatenfeld erkennenSomit können gezielt einzelne Quadrate aktualisiert werden.\\
  
 ====== LINKS ====== ====== LINKS ======
navit.1331488839.txt.gz · Zuletzt geändert: 2012/03/11 19:00 von inoculator