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/15 09:36]
inoculator [Kartenmaterial]
navit [2012/03/16 15:17] (aktuell)
inoculator Script aktualisiert und Erklärung erweitert.
Zeile 96: Zeile 96:
 **Nachfolgender Abschnitt ist Alpha Status. Es muss noch eine Menge gemacht werden in Bezug auf Quellserver und Datenmenge.**\\ **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. Ein kleines PERL Script unter Linux/Ubuntu.
 +== download.pl ==
 <code=bash> <code=bash>
 #!/usr/bin/perl #!/usr/bin/perl
Zeile 102: Zeile 103:
 $curtime=sprintf("%4d-%02d-%02d-%02d%02d",$year+1900,$mon+1,$mday,$hour,$min); $curtime=sprintf("%4d-%02d-%02d-%02d%02d",$year+1900,$mon+1,$mday,$hour,$min);
 print "\$curtime=".$curtime."\n"; print "\$curtime=".$curtime."\n";
 +##$curtime="2012-03-13-1312";
 +##$speedlimit=" --limit-rate=15";
 +##$starttile=85;
  
 #NRW #NRW
Zeile 110: Zeile 114:
 $unten=50.66861; $unten=50.66861;
  
-#Radevormwald +print "Eingabe des Koordinatensystem [Format: ddd.ddddd (Dezimalnotation)]\n"; 
-#ausschnitt=NRW +print "West [".$links."]:\t"; 
-#links=7.28737 +$a=<STDIN>; 
-#rechts=7.38899 +if ($a!="") {$links=$a;} 
-#oben=51.23742 +print "Ost [".$rechts."]:\t"; 
-#unten=51.18408+$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 #URL
 #XAPI #XAPI
-#myurl=http://open.mapquestapi.com/xapi +#$myurl=http://open.mapquestapi.com/xapi 
-#myurl=http://jxapi.openstreetmap.org/xapi +#$myurl=http://jxapi.openstreetmap.org/xapi 
-#myurl=http://osmxapi.hypercube.telascience.org +#$myurl=http://osmxapi.hypercube.telascience.org 
-#myurl=http://www.informationfreeway.org+#$myurl=http://www.informationfreeway.org
 #OverPass #OverPass
-#myurl=http://www.overpass-api.de+#$myurl=http://www.overpass-api.de 
 $myurl="http://overpass.osm.rambler.ru"; $myurl="http://overpass.osm.rambler.ru";
  
 #engine #engine
 #XAPI #XAPI
-#myeng=/api/0.6/map?bbox=$links,$unten,$rechts,$oben +#$myeng=/api/0.6/map?bbox=$links,$unten,$rechts,$oben 
-#myeng=/api/0.6/*[name=Radevormwald]+#$myeng=/api/0.6/*[name=Radevormwald]
 #OverPass #OverPass
-#myeng=/api/xapi?*[bbox=$links,$unten,$rechts,$oben]+#$myeng=/api/xapi?*[bbox=$links,$unten,$rechts,$oben] 
 $myeng="/cgi/xapi?map?bbox="; $myeng="/cgi/xapi?map?bbox=";
 +
 $tiles=0; $tiles=0;
-for ($tileside=$links ; $tileside <= $rechts ; $tileside+=0.1)+open (MYFILE, '>'.$curtime.'-'.$ausschnitt.'.txt'); 
 + 
 +for ($tilelinks=$links ; $tilelinks <= $rechts ; $tilelinks+=0.1)
  {  {
- for ($tiletop=$unten ; $tiletop<=$oben ; $tiletop+=0.1)+ for ($tileunten=$unten ; $tileunten<=$oben ; $tileunten+=0.1)
  {  {
  $tiles=$tiles+1;  $tiles=$tiles+1;
- $tilerechts=$tileside+0.1001; ##0.0001° Überlappung um Grenzlinienkontakte sicherzustellen + if ($tiles>=$starttile) 
- $tileoben=$tiletop+0.1001; ##0.0001° Überlappung um Grenzlinienkontakte sicherzustellen +
- $file=$curtime."-".$ausschnitt."-".sprintf("%03d",$tiles).".osm"; + $tilerechts=$tilelinks+0.1001; ##0.001° Überlappung 
- ## der sprintf erzeugt eine Zahl mit maximal 5 Stellen hintem Komma. Fließkommaarythmetic kann merkwürdige Zahlen erbringen (z.Bsp: 7.5674999999999) + $tileoben=$tileunten+0.1001; ##0.001° Überlappung 
- $url=$myurl.$myeng.sprintf("%.5f",$tileside).",".sprintf("%.5f",$tiletop).",".sprintf("%.5f",$tilerechts).",".sprintf("%.5f",$tileoben);+ $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";  print $file."\n";
- $command="wget --timeout=0 -O \"".$file."\" \"".$url."\"\n";+ $command="wget".$speedlimit." --proxy --timeout=0 -O \"".$file."\" \"".$url."\"\n"
 + print MYFILE $command;
  system $command;  system $command;
-##exit  + }
- +
  }  }
  }  }
-##exit+close (MYFILE); 
 +##exit 0;
 system "cat $curtime-$ausschnitt-*.osm | maptool --dedupe-ways $curtime-$ausschnitt.bin\n"; system "cat $curtime-$ausschnitt-*.osm | maptool --dedupe-ways $curtime-$ausschnitt.bin\n";
-exit+exit 0; 
 </code> </code>
-Funktionsweise:\\ +== Funktionsweise == 
-Nachdem ein aktueller Zeitstempel generiert wurde, werden die Koordinaten in Schritten zu 0.1 Grad abgefahren.\\+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.\\ 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.\\ Die geladenen Dateien werden dann per maptool in das NavIT BIN-Format konvertiert werden.\\
Zeile 166: Zeile 195:
 In der Zeit wurden bis zu 750MB RAM und 100% CPU Last benötigt. Das Ergebnis ist eine 110MB große BIN-Datei.\\ In der Zeit wurden bis zu 750MB RAM und 100% CPU Last benötigt. Das Ergebnis ist eine 110MB große BIN-Datei.\\
 Ein kleiner Hinweis, für jene, welche mit WGET hinter einem Proxy arbeiten wollen und scheitern:\\ Ein kleiner Hinweis, fü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 drin, das muss weg.+Es gibt eine Umgebungsvariable "no_proxy". Unter Debian/Ubuntu ist dort ein falsches Komma drin, das muss weg.\\ 
 +== Scriptoutput == 
 +Es wird zum einen eine Textdatei angelegt, in welcher alle WGET Befehle aufgelistet sind. Mir ist aufgefallen, daß mittendrin schonmal kleine Dateien (~800Byte) kommen, welche eine Fehlermeldung beinhalten. Mit 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 erkennen. Somit können gezielt einzelne Quadrate aktualisiert werden.\\ 
 ====== LINKS ====== ====== LINKS ======
   * http://maps9.navit-project.org/   * http://maps9.navit-project.org/
navit.1331800597.txt.gz · Zuletzt geändert: 2012/03/15 09:36 von inoculator