Benutzer-Werkzeuge

Webseiten-Werkzeuge


navit

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
navit [2012/03/15 13:55]
inoculator Script: "dedupe" Option entfernt. Brachte Lücken in der Karte.
navit [2012/03/16 15:17]
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); 
-system "​cat ​".$curtime."-".$ausschnitt."-*.osm | maptool ​".$curtime."-".$ausschnitt.".bin\n";​ +##​exit ​0; 
-exit (0);+system "cat $curtime-$ausschnitt-*.osm | maptool ​--dedupe-ways ​$curtime-$ausschnitt.bin\n";​ 
 +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.txt · Zuletzt geändert: 2012/03/16 15:17 von inoculator