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:47]
inoculator codeblock eingefügt (xml)
navit [2012/03/16 15:17] (aktuell)
inoculator Script aktualisiert und Erklärung erweitert.
Zeile 1: Zeile 1:
 +====== 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 ======
 +
 <code xml> <code xml>
 <vehicle name="City EL 45km/h" profilename="CityEL45" enabled="yes" active="1" source="android:" follow="1"> <vehicle name="City EL 45km/h" profilename="CityEL45" enabled="yes" active="1" source="android:" follow="1">
-<log enabled="yes" type="gpx" attr_types="position_time_iso8601,position_direction,position_speed,profilename,position_radius" data="track_%Y%m%d-%%i.gpx" flush_size="1000" flush_time="30"/>+<log enabled="yes" type="gpx" attr_types="position_time_iso8601,position_direction,position_speed,profilename,position_radius"
 + data="track_%Y%m%d-%%i.gpx" flush_size="1000" flush_time="30"/>
 </vehicle> </vehicle>
 </code> </code>
  
-----+====== XML Code für die Fahrzeugparameter ======
  
 <code xml> <code xml>
 <!-- START: Beta Testing for a 45km/h City EL --> <!-- START: Beta Testing for a 45km/h City EL -->
  
-<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"> +<vehicleprofile name="CityEL45" flags="0x4000000" flags_forward_mask="0x4000002" flags_reverse_mask="0x4000001"
- <roadprofile item_types="street_0,street_service,track_gravelled,track_unpaved,track_paved,street_parking_lane" speed="5" route_weight="1">+ maxspeed_handling="0" route_mode="1" static_speed="5" static_distance="25"> 
 + <roadprofile item_types="street_0,street_service,street_parking_lane"
 + speed="5" route_weight="1">
  <announcement level="0" distance_metric="25"/>  <announcement level="0" distance_metric="25"/>
  <announcement level="1" distance_metric="100"/>  <announcement level="1" distance_metric="100"/>
  <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 82: 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 ======
 +  * http://maps9.navit-project.org/
 +  * http://wiki.navit-project.org/index.php/Main_Page
 +  * 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.1331322472.txt.gz · Zuletzt geändert: 2012/03/09 20:47 (Externe Bearbeitung)