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/09 20:53]
inoculator grobe Formatierung
navit [2012/03/16 15:17] (aktuell)
inoculator Script aktualisiert und Erklärung erweitert.
Zeile 1: Zeile 1:
-Diese Seite bschreibt eine CityEL Konfiguration für das freie Navigationsprogramm "NavIT". Weiterführende Links am Ende der Seite.+====== NavIT, freie Navigation mit dem CityEL ====== 
 + 
 +Diese Seite beschreibt eine CityEL Konfiguration für das freie Navigationsprogramm "NavIT".\\ 
 +Weiterführende Links am Ende der Seite.
  
 ====== XML Code für die Aktivierung des Profils ====== ====== XML Code für die Aktivierung des Profils ======
Zeile 17: Zeile 20:
 <vehicleprofile name="CityEL45" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001"_ <vehicleprofile name="CityEL45" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001"_
  maxspeed_handling="0" route_mode="1" static_speed="5" static_distance="25">  maxspeed_handling="0" route_mode="1" static_speed="5" static_distance="25">
- <roadprofile item_types="street_0,street_service,track_gravelled,track_unpaved,track_paved,street_parking_lane"_+ <roadprofile item_types="street_0,street_service,street_parking_lane"_
  speed="5" route_weight="1">  speed="5" route_weight="1">
  <announcement level="0" distance_metric="25"/>  <announcement level="0" distance_metric="25"/>
Zeile 23: Zeile 26:
  <announcement level="2" distance_metric="200"/>  <announcement level="2" distance_metric="200"/>
  </roadprofile>  </roadprofile>
- <roadprofile item_types="street_1_city.living_street" speed="45" route_weight="20">+ <roadprofile item_types="street_1_city,living_street" speed="45" route_weight="20">
  <announcement level="0" distance_metric="50"/>  <announcement level="0" distance_metric="50"/>
  <announcement level="1" distance_metric="200"/>  <announcement level="1" distance_metric="200"/>
Zeile 89: Zeile 92:
  
 </code> </code>
 +
 +====== Kartenmaterial ======
 +**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>
 +#!/usr/bin/perl
 +
 +($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;
 +
 +#NRW
 +$ausschnitt="NRW";
 +$links=5.86533;
 +$rechts=8.08456;
 +$oben=51.70831;
 +$unten=50.66861;
 +
 +print "Eingabe des Koordinatensystem [Format: ddd.ddddd (Dezimalnotation)]\n";
 +print "West [".$links."]:\t";
 +$a=<STDIN>;
 +if ($a!="") {$links=$a;}
 +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
 +#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";
 +
 +#engine
 +#XAPI
 +#$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]
 +
 +$myeng="/cgi/xapi?map?bbox=";
 +
 +$tiles=0;
 +open (MYFILE, '>'.$curtime.'-'.$ausschnitt.'.txt');
 +
 +for ($tilelinks=$links ; $tilelinks <= $rechts ; $tilelinks+=0.1)
 + {
 + 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ö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:\\
 +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 ======
Zeile 94: Zeile 204:
   * http://wiki.navit-project.org/index.php/Main_Page   * http://wiki.navit-project.org/index.php/Main_Page
   * http://www.openstreetmap.org/   * http://www.openstreetmap.org/
 +
 +====== ToDo ======
 +OverpassApi testen und integrieren\\
 +Beispiel: www.overpass-api.de/api/xapi?*[bbox=5.86533,50.66861,8.08456,51.70831]\\
 +Die Overpass Server sind wohl etwas schneller, aber die API ist etwas komplexer.
  
navit.1331322815.txt.gz · Zuletzt geändert: 2012/03/09 20:53 von inoculator