<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mj12</id>
	<title>GIS Wiki - Szerkesztő közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="http://gis.inf.elte.hu/giswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mj12"/>
	<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Mj12"/>
	<updated>2026-05-09T12:25:20Z</updated>
	<subtitle>Szerkesztő közreműködései</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=501</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=501"/>
		<updated>2017-05-08T20:28:54Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Routino egy útvonaltervező szoftver, mely OSM adatok felhasználásával képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között. A szoftvert C nyelven írták, emellett a webes felületét CGI scriptek segítségével teszi dinamikussá.&lt;br /&gt;
&lt;br /&gt;
Az OSM adatokat fel kell dolgozni, még az első használat előtt. Támogatott formátumok: XML, PBF, O5M. Az előfeldolgozást csak egyszer kell végrehajtani az OSM adatokon. Az útvonaltervezés eredménye kimenthető HTML, illetve GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező figyelembe veszi az utakra való korlátozásokat is (például.: sebesség, súly, méretkorlátozás), illetve a KRESZ korlátozásait is (például.: egyszerűbb tiltások a kanyarodásra, egy irányú az utca).&lt;br /&gt;
&lt;br /&gt;
A programot jelenleg legtöbben saját weboldalukba beépítve, útvonaltervezésre használják, általában egy régióra lekorlátozva. Emellett, amióta kiegészült egy függvénykönyvtárral, lehetővé tették az asztali alkalmazások számára is az útvonaltervezést, kibővítve a felhasználhatósági kört.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Bizonyos korlátozásokkal elérhető a Routino Windowson is, és a telepítése is egy bonyolultabb folyamat, a legegyszerűbb, ha követjük a [https://www.routino.org/documentation/installation-ms-windows.html Routino által leírt lépéseket].&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Előfeldolgozás ===&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy kellően gyors, és hatékony legyen az útvonalkeresés, az OSM adatokat feldolgozzuk, és eltároljuk egy lokális adatbázisban. A csomópontok közül a legtöbbet töröljük, és az érdekes csomópontokat hagyjuk meg. Ezután az izolált területeket töröljük.&lt;br /&gt;
&lt;br /&gt;
A csomópontok megtartásának szabályai:&lt;br /&gt;
* 3 vagy több útvonalszakaszt köt össze.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de a két útvonalszakasznak más tulajdonságai vannak.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de az útvonalszakaszok közt megváltoztak az útvonaltervezési korlátozások.&lt;br /&gt;
&lt;br /&gt;
A fentebbi szabályokat felhasználva a csomópontok törlését annyiszor ismételhetjük, amíg csak a legfontosabb csomópontok maradnak már csak meg. Ezeket a csomópontokat szuper-csomópontnak nevezzük, és a szuper-csomópontokat szuper-utak kötik össze.&lt;br /&gt;
&lt;br /&gt;
=== Útkeresés ===&lt;br /&gt;
&lt;br /&gt;
# A kezdőponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# A végponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# Az 1. és a 2. szuper-csomópont közt megkeressük a szuper-útvonalat.&lt;br /&gt;
# A 3. pontban talált szuper-útvonalak mindegyikére megkeresi a legrövidebb utat a szuper-útvonal kezdő és végpontja között.&lt;br /&gt;
&lt;br /&gt;
Az útvonal keresési algoritmust az A* algoritmussal (vagy legalábbis egy ehhez nagyon hasonlító algoritmussal) oldották meg. Ez az algoritmus a kezdő csomóponttól a legkisebb érték (legrövidebb, vagy leggyorsabb út) kiszámítására törekszik minden csomóponthoz.&lt;br /&gt;
&lt;br /&gt;
A 4. pontban lévő útvonalakat viszont a Dijkstra algoritmussal keresi meg.&lt;br /&gt;
&lt;br /&gt;
== Webes felület ==&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervező ===&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező felület alapvetően 3 fülre van bontva, melyeken csoportosítva érhetőek el a funkciók.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beállítások&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet kiválasztani az utazás kezdő és végpontjait, illetve a közbeeső állomások pontjait is itt lehet megadni, emellett van lehetőségünk az utazás fajtáját kiválasztani, illetve a preferenciákat módosítani, a sebességkorlátokat módosítani, illetve meg lehet adni súly, vagy méretbeli korlátozásokat.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Routino_options.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eredmény&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezés instrukciói, a távolsága, és az időtartama itt jelenik meg, ezenkívül van lehetőségünk ezt az útvonalat megjeleníteni egy új lapon HTML, szöveges, vagy akár GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Routino_results.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen érhető el az adatvizualizációs felület, illetve megjeleníthetőek benne az adatokkal kapcsolatos statisztikák.&lt;br /&gt;
&lt;br /&gt;
=== Adat vizualizáció ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vizualizáló&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet megjeleníttetni a Routino által eltárolt információkat a térképen, mint például a szuper-utakat, korlátozásokat, csomópontokat.&lt;br /&gt;
&lt;br /&gt;
[[Fájl:Routino_visualiser.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Útvonaltervező&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen vissza lehet menni az útvonaltervező interfészre.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezőnél lévő adatok fülre hasonlít, ugyanazokat az adatokat/statisztikákat lehet itt is megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
== Fejlesztés ==&lt;br /&gt;
&lt;br /&gt;
=== Webes felületre ===&lt;br /&gt;
&lt;br /&gt;
A webes felület elérhető Leaflet, illetve OpenLayers térképmegjelenítőkben is, ezért érdemes a gyárilag kapott webes interfészt használni, azt személyre szabni (CSS), átvariálni a kezelőfelületét, és beleépíteni a honlapunkba, ahol szeretnénk használni az útvonaltervezés funkciót. Amennyiben egyáltalán nem használnánk a gyárilag kapott webes felületet, írhatunk saját megjelenítőt, a lentebbi két opció által.&lt;br /&gt;
&lt;br /&gt;
=== A programot használva ===&lt;br /&gt;
&lt;br /&gt;
A fordítás után létrejött egy &amp;#039;&amp;#039;&amp;#039;router&amp;#039;&amp;#039;&amp;#039; nevű futtatható állomány, mellyel parancssori argumentumok segítségével tervezhetünk útvonalat, és azt HTML, szöveges, vagy GPX formátumban fájlba menthetjük, vagy akár kiírhatjuk a képernyőre. Használat:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
Usage: router [--version]&lt;br /&gt;
              [--help | --help-profile | --help-profile-xml |&lt;br /&gt;
                        --help-profile-json | --help-profile-perl ]&lt;br /&gt;
              [--dir=&amp;lt;dirname&amp;gt;] [--prefix=&amp;lt;name&amp;gt;]&lt;br /&gt;
              [--profiles=&amp;lt;filename&amp;gt;] [--translations=&amp;lt;filename&amp;gt;]&lt;br /&gt;
              [--exact-nodes-only]&lt;br /&gt;
              [--quiet | [--loggable] [--logtime] [--logmemory]]&lt;br /&gt;
              [--output-html]&lt;br /&gt;
              [--output-gpx-track] [--output-gpx-route]&lt;br /&gt;
              [--output-text] [--output-text-all]&lt;br /&gt;
              [--output-none] [--output-stdout]&lt;br /&gt;
              [--profile=&amp;lt;name&amp;gt;]&lt;br /&gt;
              [--transport=&amp;lt;transport&amp;gt;]&lt;br /&gt;
              [--shortest | --quickest]&lt;br /&gt;
              --lon1=&amp;lt;longitude&amp;gt; --lat1=&amp;lt;latitude&amp;gt;&lt;br /&gt;
              --lon2=&amp;lt;longitude&amp;gt; --lon2=&amp;lt;latitude&amp;gt;&lt;br /&gt;
              [ ... --lon99=&amp;lt;longitude&amp;gt; --lon99=&amp;lt;latitude&amp;gt;]&lt;br /&gt;
              [--reverse] [--loop]&lt;br /&gt;
              [--heading=&amp;lt;bearing&amp;gt;]&lt;br /&gt;
              [--highway-&amp;lt;highway&amp;gt;=&amp;lt;preference&amp;gt; ...]&lt;br /&gt;
              [--speed-&amp;lt;highway&amp;gt;=&amp;lt;speed&amp;gt; ...]&lt;br /&gt;
              [--property-&amp;lt;property&amp;gt;=&amp;lt;preference&amp;gt; ...]&lt;br /&gt;
              [--oneway=(0|1)] [--turns=(0|1)]&lt;br /&gt;
              [--weight=&amp;lt;weight&amp;gt;]&lt;br /&gt;
              [--height=&amp;lt;height&amp;gt;] [--width=&amp;lt;width&amp;gt;] [--length=&amp;lt;length&amp;gt;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Példa a használatra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./router --shortest --lon1=19.45000 --lat1=47.17563 --lon2=19.09424 --lat2=47.33138 --dir=../data --output-stdout --output-text&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A függvénykönyvtárat használva ===&lt;br /&gt;
&lt;br /&gt;
A Routino 3.0 megjelenése óta külön függvénykönyvtárként is elérhető az útvonaltervező szolgáltatás. Kétféle library is készült hozzá, a &amp;lt;code&amp;gt;libroutino&amp;lt;/code&amp;gt; és a &amp;lt;code&amp;gt;libroutino-slim&amp;lt;/code&amp;gt;. Az interfészük teljesen megegyezik, viszont a slim változat kevesebb memóriát fogyaszt, cserébe lassabb is. A teljes leírása az API-nak elérhető [https://www.routino.org/documentation/library.html itt]. A használatát egy egyszerű példaprogrammal bemutatom itt, megtalálhatóak benne a legfontosabb függvények, hogy hogyan kell használni, és hogy az eredményen hogyan lehet végigiterálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;routino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
	Routino_Database    *t_routinoDB   = Routino_LoadDatabase(&amp;quot;/var/www/routino/data&amp;quot;, NULL);   //Betöltjük az adatbázist&lt;br /&gt;
	if(!t_routinoDB) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find database&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	Routino_ParseXMLProfiles(&amp;quot;/var/www/routino/data/profiles.xml&amp;quot;);                             //Felolvassuk a Profiles XML-t&lt;br /&gt;
	Routino_ParseXMLTranslations(&amp;quot;/var/www/routino/data/translations.xml&amp;quot;);                     //Felolvassuk a fordításokat&lt;br /&gt;
		&lt;br /&gt;
	Routino_Profile     *t_profile     = Routino_GetProfile(&amp;quot;motorcar&amp;quot;);                        //Kiválasztjuk az utazási módot: autó&lt;br /&gt;
	if(!t_profile) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find profile&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	Routino_Translation *t_translation = Routino_GetTranslation(&amp;quot;hu&amp;quot;);                          //Kiválasztjuk a nyelvet: magyar&lt;br /&gt;
	if(Routino_ValidateProfile(t_routinoDB, t_profile) != 0) { std::cout &amp;lt;&amp;lt; &amp;quot;Not valid profile&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }	//Ellenőrizzük, hogy érvényes-e a profil&lt;br /&gt;
	&lt;br /&gt;
	Routino_Waypoint   **t_waypoints = (Routino_Waypoint**)calloc(sizeof(Routino_Waypoint*), 2); //Lefoglaljuk a helyet a kezdő és a végpontnak&lt;br /&gt;
	&lt;br /&gt;
	t_waypoints[0] = Routino_FindWaypoint(t_routinoDB, t_profile, 47.17563, 19.45000);           //Beállítjuk a kezdőpontot&lt;br /&gt;
	t_waypoints[1] = Routino_FindWaypoint(t_routinoDB, t_profile, 47.33138, 19.09424);           //Beállítjuk a végpontot&lt;br /&gt;
	&lt;br /&gt;
	if(!t_waypoints[0]) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find starting point&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	if(!t_waypoints[1]) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find ending point&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	&lt;br /&gt;
	int t_routingOptions = 0;&lt;br /&gt;
	t_routingOptions |= ROUTINO_ROUTE_QUICKEST;             //A legrövidebb úton menjünk&lt;br /&gt;
	t_routingOptions |= ROUTINO_ROUTE_LIST_TEXT_ALL;        //Szövegesen írja ki az utcaneveket&lt;br /&gt;
	&lt;br /&gt;
	Routino_Output *t_output = Routino_CalculateRoute(t_routinoDB, t_profile, t_translation, t_waypoints, 2, t_routingOptions, NULL); //Kiszámítjuk az útvonalat&lt;br /&gt;
	&lt;br /&gt;
	Routino_Output *t_iter = t_output;&lt;br /&gt;
	while(t_iter) //Amíg végig nem érünk az útvonal pontjain, kiírjuk a koordinátáit, és az utca nevét&lt;br /&gt;
	{&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; ( t_iter-&amp;gt;lon * 180 ) / 3.14 &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; ( t_iter-&amp;gt;lat * 180 ) / 3.14;&lt;br /&gt;
		if(t_iter-&amp;gt;name)&lt;br /&gt;
			std::cout &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; t_iter-&amp;gt;name;&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
		t_iter = t_iter-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	Routino_DeleteRoute(t_output);                  //Felszabadítjuk a memóriából az útvonalat&lt;br /&gt;
	Routino_UnloadDatabase(t_routinoDB);            //Felszabadítjuk a memóriából az adatbázist&lt;br /&gt;
	Routino_FreeXMLProfiles();                      //Felszabadítjuk a memóriából a betöltött profilokat&lt;br /&gt;
	Routino_FreeXMLTranslations();                  //Felszabadítjuk a memóriából a betöltött nyelveket&lt;br /&gt;
	for(int waypoint=0;waypoint&amp;lt;2;waypoint++)&lt;br /&gt;
		free(t_waypoints[waypoint]);&lt;br /&gt;
	free(t_waypoints);                              //Töröljük az általunk foglalt területeket&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hivatkozások =&lt;br /&gt;
&lt;br /&gt;
* [https://www.routino.org/ A Routino hivatalos honlapja]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Routino OpenStreetMap wiki a Routino-ról]&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Routino_visualiser.png&amp;diff=500</id>
		<title>Fájl:Routino visualiser.png</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Routino_visualiser.png&amp;diff=500"/>
		<updated>2017-05-08T20:27:57Z</updated>

		<summary type="html">&lt;p&gt;Mj12: A Routino adatmegjelenítő felülete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Routino adatmegjelenítő felülete&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Routino_results.png&amp;diff=499</id>
		<title>Fájl:Routino results.png</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Routino_results.png&amp;diff=499"/>
		<updated>2017-05-08T20:27:38Z</updated>

		<summary type="html">&lt;p&gt;Mj12: A Routino útvonaltervezés eredménye&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Routino útvonaltervezés eredménye&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Routino_options.png&amp;diff=498</id>
		<title>Fájl:Routino options.png</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=F%C3%A1jl:Routino_options.png&amp;diff=498"/>
		<updated>2017-05-08T20:27:17Z</updated>

		<summary type="html">&lt;p&gt;Mj12: A Routino útvonaltervező felületének beállításai&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Routino útvonaltervező felületének beállításai&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=497</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=497"/>
		<updated>2017-05-08T20:20:10Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Routino egy útvonaltervező szoftver, mely OSM adatok felhasználásával képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között. A szoftvert C nyelven írták, emellett a webes felületét CGI scriptek segítségével teszi dinamikussá.&lt;br /&gt;
&lt;br /&gt;
Az OSM adatokat fel kell dolgozni, még az első használat előtt. Támogatott formátumok: XML, PBF, O5M. Az előfeldolgozást csak egyszer kell végrehajtani az OSM adatokon. Az útvonaltervezés eredménye kimenthető HTML, illetve GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező figyelembe veszi az utakra való korlátozásokat is (például.: sebesség, súly, méretkorlátozás), illetve a KRESZ korlátozásait is (például.: egyszerűbb tiltások a kanyarodásra, egy irányú az utca).&lt;br /&gt;
&lt;br /&gt;
A programot jelenleg legtöbben saját weboldalukba beépítve, útvonaltervezésre használják, általában egy régióra lekorlátozva. Emellett, amióta kiegészült egy függvénykönyvtárral, lehetővé tették az asztali alkalmazások számára is az útvonaltervezést, kibővítve a felhasználhatósági kört.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Konfigurálás ====&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Bizonyos korlátozásokkal elérhető a Routino Windowson is, és a telepítése is egy bonyolultabb folyamat, a legegyszerűbb, ha követjük a [https://www.routino.org/documentation/installation-ms-windows.html Routino által leírt lépéseket].&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Előfeldolgozás ===&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy kellően gyors, és hatékony legyen az útvonalkeresés, az OSM adatokat feldolgozzuk, és eltároljuk egy lokális adatbázisban. A csomópontok közül a legtöbbet töröljük, és az érdekes csomópontokat hagyjuk meg. Ezután az izolált területeket töröljük.&lt;br /&gt;
&lt;br /&gt;
A csomópontok megtartásának szabályai:&lt;br /&gt;
* 3 vagy több útvonalszakaszt köt össze.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de a két útvonalszakasznak más tulajdonságai vannak.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de az útvonalszakaszok közt megváltoztak az útvonaltervezési korlátozások.&lt;br /&gt;
&lt;br /&gt;
A fentebbi szabályokat felhasználva a csomópontok törlését annyiszor ismételhetjük, amíg csak a legfontosabb csomópontok maradnak már csak meg. Ezeket a csomópontokat szuper-csomópontnak nevezzük, és a szuper-csomópontokat szuper-utak kötik össze.&lt;br /&gt;
&lt;br /&gt;
=== Útkeresés ===&lt;br /&gt;
&lt;br /&gt;
# A kezdőponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# A végponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# Az 1. és a 2. szuper-csomópont közt megkeressük a szuper-útvonalat.&lt;br /&gt;
# A 3. pontban talált szuper-útvonalak mindegyikére megkeresi a legrövidebb utat a szuper-útvonal kezdő és végpontja között.&lt;br /&gt;
&lt;br /&gt;
Az útvonal keresési algoritmust az A* algoritmussal (vagy legalábbis egy ehhez nagyon hasonlító algoritmussal) oldották meg. Ez az algoritmus a kezdő csomóponttól a legkisebb érték (legrövidebb, vagy leggyorsabb út) kiszámítására törekszik minden csomóponthoz.&lt;br /&gt;
&lt;br /&gt;
A 4. pontban lévő útvonalakat viszont a Dijkstra algoritmussal keresi meg.&lt;br /&gt;
&lt;br /&gt;
== Webes felület ==&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervező ===&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező felület alapvetően 3 fülre van bontva, melyeken csoportosítva érhetőek el a funkciók.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beállítások&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet kiválasztani az utazás kezdő és végpontjait, illetve a közbeeső állomások pontjait is itt lehet megadni, emellett van lehetőségünk az utazás fajtáját kiválasztani, illetve a preferenciákat módosítani, a sebességkorlátokat módosítani, illetve meg lehet adni súly, vagy méretbeli korlátozásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eredmény&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezés instrukciói, a távolsága, és az időtartama itt jelenik meg, ezenkívül van lehetőségünk ezt az útvonalat megjeleníteni egy új lapon HTML, szöveges, vagy akár GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen érhető el az adatvizualizációs felület, illetve megjeleníthetőek benne az adatokkal kapcsolatos statisztikák.&lt;br /&gt;
&lt;br /&gt;
=== Adat vizualizáció ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vizualizáló&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet megjeleníttetni a Routino által eltárolt információkat a térképen, mint például a szuper-utakat, korlátozásokat, csomópontokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Útvonaltervező&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen vissza lehet menni az útvonaltervező interfészre.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezőnél lévő adatok fülre hasonlít, ugyanazokat az adatokat/statisztikákat lehet itt is megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
== Fejlesztés ==&lt;br /&gt;
&lt;br /&gt;
=== Webes felületre ===&lt;br /&gt;
&lt;br /&gt;
A webes felület elérhető Leaflet, illetve OpenLayers térképmegjelenítőkben is, ezért érdemes a gyárilag kapott webes interfészt használni, azt személyre szabni (CSS), átvariálni a kezelőfelületét, és beleépíteni a honlapunkba, ahol szeretnénk használni az útvonaltervezés funkciót. Amennyiben egyáltalán nem használnánk a gyárilag kapott webes felületet, írhatunk saját megjelenítőt, a lentebbi két opció által.&lt;br /&gt;
&lt;br /&gt;
=== A programot használva ===&lt;br /&gt;
&lt;br /&gt;
A fordítás után létrejött egy &amp;#039;&amp;#039;&amp;#039;router&amp;#039;&amp;#039;&amp;#039; nevű futtatható állomány, mellyel parancssori argumentumok segítségével tervezhetünk útvonalat, és azt HTML, szöveges, vagy GPX formátumban fájlba menthetjük, vagy akár kiírhatjuk a képernyőre. Használat:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
Usage: router [--version]&lt;br /&gt;
              [--help | --help-profile | --help-profile-xml |&lt;br /&gt;
                        --help-profile-json | --help-profile-perl ]&lt;br /&gt;
              [--dir=&amp;lt;dirname&amp;gt;] [--prefix=&amp;lt;name&amp;gt;]&lt;br /&gt;
              [--profiles=&amp;lt;filename&amp;gt;] [--translations=&amp;lt;filename&amp;gt;]&lt;br /&gt;
              [--exact-nodes-only]&lt;br /&gt;
              [--quiet | [--loggable] [--logtime] [--logmemory]]&lt;br /&gt;
              [--output-html]&lt;br /&gt;
              [--output-gpx-track] [--output-gpx-route]&lt;br /&gt;
              [--output-text] [--output-text-all]&lt;br /&gt;
              [--output-none] [--output-stdout]&lt;br /&gt;
              [--profile=&amp;lt;name&amp;gt;]&lt;br /&gt;
              [--transport=&amp;lt;transport&amp;gt;]&lt;br /&gt;
              [--shortest | --quickest]&lt;br /&gt;
              --lon1=&amp;lt;longitude&amp;gt; --lat1=&amp;lt;latitude&amp;gt;&lt;br /&gt;
              --lon2=&amp;lt;longitude&amp;gt; --lon2=&amp;lt;latitude&amp;gt;&lt;br /&gt;
              [ ... --lon99=&amp;lt;longitude&amp;gt; --lon99=&amp;lt;latitude&amp;gt;]&lt;br /&gt;
              [--reverse] [--loop]&lt;br /&gt;
              [--heading=&amp;lt;bearing&amp;gt;]&lt;br /&gt;
              [--highway-&amp;lt;highway&amp;gt;=&amp;lt;preference&amp;gt; ...]&lt;br /&gt;
              [--speed-&amp;lt;highway&amp;gt;=&amp;lt;speed&amp;gt; ...]&lt;br /&gt;
              [--property-&amp;lt;property&amp;gt;=&amp;lt;preference&amp;gt; ...]&lt;br /&gt;
              [--oneway=(0|1)] [--turns=(0|1)]&lt;br /&gt;
              [--weight=&amp;lt;weight&amp;gt;]&lt;br /&gt;
              [--height=&amp;lt;height&amp;gt;] [--width=&amp;lt;width&amp;gt;] [--length=&amp;lt;length&amp;gt;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Példa a használatra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./router --shortest --lon1=19.45000 --lat1=47.17563 --lon2=19.09424 --lat2=47.33138 --dir=../data --output-stdout --output-text&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== A függvénykönyvtárat használva ===&lt;br /&gt;
&lt;br /&gt;
A Routino 3.0 megjelenése óta külön függvénykönyvtárként is elérhető az útvonaltervező szolgáltatás. Kétféle library is készült hozzá, a &amp;lt;code&amp;gt;libroutino&amp;lt;/code&amp;gt; és a &amp;lt;code&amp;gt;libroutino-slim&amp;lt;/code&amp;gt;. Az interfészük teljesen megegyezik, viszont a slim változat kevesebb memóriát fogyaszt, cserébe lassabb is. A teljes leírása az API-nak elérhető [https://www.routino.org/documentation/library.html itt]. A használatát egy egyszerű példaprogrammal bemutatom itt, megtalálhatóak benne a legfontosabb függvények, hogy hogyan kell használni, és hogy az eredményen hogyan lehet végigiterálni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c++&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;routino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
	Routino_Database    *t_routinoDB   = Routino_LoadDatabase(&amp;quot;/var/www/routino/data&amp;quot;, NULL);   //Betöltjük az adatbázist&lt;br /&gt;
	if(!t_routinoDB) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find database&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	Routino_ParseXMLProfiles(&amp;quot;/var/www/routino/data/profiles.xml&amp;quot;);                             //Felolvassuk a Profiles XML-t&lt;br /&gt;
	Routino_ParseXMLTranslations(&amp;quot;/var/www/routino/data/translations.xml&amp;quot;);                     //Felolvassuk a fordításokat&lt;br /&gt;
		&lt;br /&gt;
	Routino_Profile     *t_profile     = Routino_GetProfile(&amp;quot;motorcar&amp;quot;);                        //Kiválasztjuk az utazási módot: autó&lt;br /&gt;
	if(!t_profile) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find profile&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	Routino_Translation *t_translation = Routino_GetTranslation(&amp;quot;hu&amp;quot;);                          //Kiválasztjuk a nyelvet: magyar&lt;br /&gt;
	if(Routino_ValidateProfile(t_routinoDB, t_profile) != 0) { std::cout &amp;lt;&amp;lt; &amp;quot;Not valid profile&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }	//Ellenőrizzük, hogy érvényes-e a profil&lt;br /&gt;
	&lt;br /&gt;
	Routino_Waypoint   **t_waypoints = (Routino_Waypoint**)calloc(sizeof(Routino_Waypoint*), 2); //Lefoglaljuk a helyet a kezdő és a végpontnak&lt;br /&gt;
	&lt;br /&gt;
	t_waypoints[0] = Routino_FindWaypoint(t_routinoDB, t_profile, 47.17563, 19.45000);           //Beállítjuk a kezdőpontot&lt;br /&gt;
	t_waypoints[1] = Routino_FindWaypoint(t_routinoDB, t_profile, 47.33138, 19.09424);           //Beállítjuk a végpontot&lt;br /&gt;
	&lt;br /&gt;
	if(!t_waypoints[0]) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find starting point&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	if(!t_waypoints[1]) { std::cout &amp;lt;&amp;lt; &amp;quot;Could not find ending point&amp;quot; &amp;lt;&amp;lt; std::endl; return 1; }&lt;br /&gt;
	&lt;br /&gt;
	int t_routingOptions = 0;&lt;br /&gt;
	t_routingOptions |= ROUTINO_ROUTE_QUICKEST;             //A legrövidebb úton menjünk&lt;br /&gt;
	t_routingOptions |= ROUTINO_ROUTE_LIST_TEXT_ALL;        //Szövegesen írja ki az utcaneveket&lt;br /&gt;
	&lt;br /&gt;
	Routino_Output *t_output = Routino_CalculateRoute(t_routinoDB, t_profile, t_translation, t_waypoints, 2, t_routingOptions, NULL); //Kiszámítjuk az útvonalat&lt;br /&gt;
	&lt;br /&gt;
	Routino_Output *t_iter = t_output;&lt;br /&gt;
	while(t_iter) //Amíg végig nem érünk az útvonal pontjain, kiírjuk a koordinátáit, és az utca nevét&lt;br /&gt;
	{&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; ( t_iter-&amp;gt;lon * 180 ) / 3.14 &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; ( t_iter-&amp;gt;lat * 180 ) / 3.14;&lt;br /&gt;
		if(t_iter-&amp;gt;name)&lt;br /&gt;
			std::cout &amp;lt;&amp;lt; &amp;quot; &amp;quot; &amp;lt;&amp;lt; t_iter-&amp;gt;name;&lt;br /&gt;
		std::cout &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
		t_iter = t_iter-&amp;gt;next;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	Routino_DeleteRoute(t_output);                  //Felszabadítjuk a memóriából az útvonalat&lt;br /&gt;
	Routino_UnloadDatabase(t_routinoDB);            //Felszabadítjuk a memóriából az adatbázist&lt;br /&gt;
	Routino_FreeXMLProfiles();                      //Felszabadítjuk a memóriából a betöltött profilokat&lt;br /&gt;
	Routino_FreeXMLTranslations();                  //Felszabadítjuk a memóriából a betöltött nyelveket&lt;br /&gt;
	for(int waypoint=0;waypoint&amp;lt;2;waypoint++)&lt;br /&gt;
		free(t_waypoints[waypoint]);&lt;br /&gt;
	free(t_waypoints);                              //Töröljük az általunk foglalt területeket&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Hivatkozások =&lt;br /&gt;
&lt;br /&gt;
* [https://www.routino.org/ A Routino hivatalos honlapja]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Routino OpenStreetMap wiki a Routino-ról]&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=466</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=466"/>
		<updated>2017-05-07T15:30:23Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Routino egy útvonaltervező szoftver, mely OSM adatok felhasználásával képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között. A szoftvert C nyelven írták, emellett a webes felületét CGI scriptek segítségével teszi dinamikussá.&lt;br /&gt;
&lt;br /&gt;
Az OSM adatokat fel kell dolgozni, még az első használat előtt. Támogatott formátumok: XML, PBF, O5M. Az előfeldolgozást csak egyszer kell végrehajtani az OSM adatokon. Az útvonaltervezés eredménye kimenthető HTML, illetve GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező figyelembe veszi az utakra való korlátozásokat is (például.: sebesség, súly, méretkorlátozás), illetve a KRESZ korlátozásait is (például.: egyszerűbb tiltások a kanyarodásra, egy irányú az utca).&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfigurálás ===&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Előfeldolgozás ===&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy kellően gyors, és hatékony legyen az útvonalkeresés, az OSM adatokat feldolgozzuk, és eltároljuk egy lokális adatbázisban. A csomópontok közül a legtöbbet töröljük, és az érdekes csomópontokat hagyjuk meg. Ezután az izolált területeket töröljük.&lt;br /&gt;
&lt;br /&gt;
A csomópontok megtartásának szabályai:&lt;br /&gt;
* 3 vagy több útvonalszakaszt köt össze.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de a két útvonalszakasznak más tulajdonságai vannak.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de az útvonalszakaszok közt megváltoztak az útvonaltervezési korlátozások.&lt;br /&gt;
&lt;br /&gt;
A fentebbi szabályokat felhasználva a csomópontok törlését annyiszor ismételhetjük, amíg csak a legfontosabb csomópontok maradnak már csak meg. Ezeket a csomópontokat szuper-csomópontnak nevezzük, és a szuper-csomópontokat szuper-utak kötik össze.&lt;br /&gt;
&lt;br /&gt;
=== Útkeresés ===&lt;br /&gt;
&lt;br /&gt;
# A kezdőponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# A végponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# Az 1. és a 2. szuper-csomópont közt megkeressük a szuper-útvonalat.&lt;br /&gt;
# A 3. pontban talált szuper-útvonalak mindegyikére megkeresi a legrövidebb utat a szuper-útvonal kezdő és végpontja között.&lt;br /&gt;
&lt;br /&gt;
Az útvonal keresési algoritmust az A* algoritmussal (vagy legalábbis egy ehhez nagyon hasonlító algoritmussal) oldották meg. Ez az algoritmus a kezdő csomóponttól a legkisebb érték (legrövidebb, vagy leggyorsabb út) kiszámítására törekszik minden csomóponthoz.&lt;br /&gt;
&lt;br /&gt;
A 4. pontban lévő útvonalakat viszont a Dijkstra algoritmussal keresi meg.&lt;br /&gt;
&lt;br /&gt;
== Webes felület ==&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervező ===&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező felület alapvetően 3 fülre van bontva, melyeken csoportosítva érhetőek el a funkciók.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beállítások&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet kiválasztani az utazás kezdő és végpontjait, illetve a közbeeső állomások pontjait is itt lehet megadni, emellett van lehetőségünk az utazás fajtáját kiválasztani, illetve a preferenciákat módosítani, a sebességkorlátokat módosítani, illetve meg lehet adni súly, vagy méretbeli korlátozásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eredmény&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezés instrukciói, a távolsága, és az időtartama itt jelenik meg, ezenkívül van lehetőségünk ezt az útvonalat megjeleníteni egy új lapon HTML, szöveges, vagy akár GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen érhető el az adatvizualizációs felület, illetve megjeleníthetőek benne az adatokkal kapcsolatos statisztikák.&lt;br /&gt;
&lt;br /&gt;
=== Adat vizualizáció ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vizualizáló&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet megjeleníttetni a Routino által eltárolt információkat a térképen, mint például a szuper-utakat, korlátozásokat, csomópontokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Útvonaltervező&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen vissza lehet menni az útvonaltervező interfészre.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezőnél lévő adatok fülre hasonlít, ugyanazokat az adatokat/statisztikákat lehet itt is megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
= Hivatkozások =&lt;br /&gt;
&lt;br /&gt;
* [https://www.routino.org/ A Routino hivatalos honlapja]&lt;br /&gt;
* [http://wiki.openstreetmap.org/wiki/Routino OpenStreetMap wiki a Routino-ról]&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=464</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=464"/>
		<updated>2017-05-06T19:42:53Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A routino egy útvonaltervező, mely OSM adatok alapján képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfigurálás ===&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Előfeldolgozás ===&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy kellően gyors, és hatékony legyen az útvonalkeresés, az OSM adatokat feldolgozzuk, és eltároljuk egy lokális adatbázisban. A csomópontok közül a legtöbbet töröljük, és az érdekes csomópontokat hagyjuk meg. Ezután az izolált területeket töröljük.&lt;br /&gt;
&lt;br /&gt;
A csomópontok megtartásának szabályai:&lt;br /&gt;
* 3 vagy több útvonalszakaszt köt össze.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de a két útvonalszakasznak más tulajdonságai vannak.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de az útvonalszakaszok közt megváltoztak az útvonaltervezési korlátozások.&lt;br /&gt;
&lt;br /&gt;
A fentebbi szabályokat felhasználva a csomópontok törlését annyiszor ismételhetjük, amíg csak a legfontosabb csomópontok maradnak már csak meg. Ezeket a csomópontokat szuper-csomópontnak nevezzük, és a szuper-csomópontokat szuper-utak kötik össze.&lt;br /&gt;
&lt;br /&gt;
=== Útkeresés ===&lt;br /&gt;
&lt;br /&gt;
# A kezdőponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# A végponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# Az 1. és a 2. szuper-csomópont közt megkeressük a szuper-útvonalat.&lt;br /&gt;
# A 3. pontban talált szuper-útvonalak mindegyikére megkeresi a legrövidebb utat a szuper-útvonal kezdő és végpontja között.&lt;br /&gt;
&lt;br /&gt;
Az útvonal keresési algoritmust az A* algoritmussal (vagy legalábbis egy ehhez nagyon hasonlító algoritmussal) oldották meg. Ez az algoritmus a kezdő csomóponttól a legkisebb érték (legrövidebb, vagy leggyorsabb út) kiszámítására törekszik minden csomóponthoz.&lt;br /&gt;
&lt;br /&gt;
A 4. pontban lévő útvonalakat viszont a Dijkstra algoritmussal keresi meg.&lt;br /&gt;
&lt;br /&gt;
== Webes felület ==&lt;br /&gt;
&lt;br /&gt;
=== Útvonaltervező ===&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervező felület alapvetően 3 fülre van bontva, melyeken csoportosítva érhetőek el a funkciók.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beállítások&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet kiválasztani az utazás kezdő és végpontjait, illetve a közbeeső állomások pontjait is itt lehet megadni, emellett van lehetőségünk az utazás fajtáját kiválasztani, illetve a preferenciákat módosítani, a sebességkorlátokat módosítani, illetve meg lehet adni súly, vagy méretbeli korlátozásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Eredmény&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezés instrukciói, a távolsága, és az időtartama itt jelenik meg, ezenkívül van lehetőségünk ezt az útvonalat megjeleníteni egy új lapon HTML, szöveges, vagy akár GPX formátumban is.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen érhető el az adatvizualizációs felület, illetve megjeleníthetőek benne az adatokkal kapcsolatos statisztikák.&lt;br /&gt;
&lt;br /&gt;
=== Adat vizualizáció ===&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Vizualizáló&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Itt lehet megjeleníttetni a Routino által eltárolt információkat a térképen, mint például a szuper-utakat, korlátozásokat, csomópontokat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Útvonaltervező&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Innen vissza lehet menni az útvonaltervező interfészre.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Adatok&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Az útvonaltervezőnél lévő adatok fülre hasonlít, ugyanazokat az adatokat/statisztikákat lehet itt is megjeleníteni.&lt;br /&gt;
&lt;br /&gt;
= Hivatkozások =&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=461</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=461"/>
		<updated>2017-05-06T09:07:04Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A routino egy útvonaltervező, mely OSM adatok alapján képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Konfigurálás ===&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
=== Előfeldolgozás ===&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy kellően gyors, és hatékony legyen az útvonalkeresés, az OSM adatokat feldolgozzuk, és eltároljuk egy lokális adatbázisban. A csomópontok közül a legtöbbet töröljük, és az érdekes csomópontokat hagyjuk meg. Ezután az izolált területeket töröljük.&lt;br /&gt;
&lt;br /&gt;
A csomópontok megtartásának szabályai:&lt;br /&gt;
* 3 vagy több útvonalszakaszt köt össze.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de a két útvonalszakasznak más tulajdonságai vannak.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de az útvonalszakaszok közt megváltoztak az útvonaltervezési korlátozások.&lt;br /&gt;
&lt;br /&gt;
A fentebbi szabályokat felhasználva a csomópontok törlését annyiszor ismételhetjük, amíg csak a legfontosabb csomópontok maradnak már csak meg. Ezeket a csomópontokat szuper-csomópontnak nevezzük, és a szuper-csomópontokat szuper-utak kötik össze.&lt;br /&gt;
&lt;br /&gt;
=== Útkeresés ===&lt;br /&gt;
&lt;br /&gt;
# A kezdőponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# A végponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# Az 1. és a 2. szuper-csomópont közt megkeressük a szuper-útvonalat.&lt;br /&gt;
# A 3. pontban talált szuper-útvonalak mindegyikére megkeresi a legrövidebb utat a szuper-útvonal kezdő és végpontja között.&lt;br /&gt;
&lt;br /&gt;
Az útvonal keresési algoritmust az A* algoritmussal (vagy legalábbis egy ehhez nagyon hasonlító algoritmussal) oldották meg. Ez az algoritmus a kezdő csomóponttól a legkisebb érték (legrövidebb, vagy leggyorsabb út) kiszámítására törekszik minden csomóponthoz.&lt;br /&gt;
&lt;br /&gt;
A 4. pontban lévő útvonalakat viszont a Dijkstra algoritmussal keresi meg.&lt;br /&gt;
&lt;br /&gt;
= Hivatkozások =&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=460</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=460"/>
		<updated>2017-05-04T23:22:09Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A routino egy útvonaltervező, mely OSM adatok alapján képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Konfigurálás&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeldolgozás&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Ahhoz, hogy kellően gyors, és hatékony legyen az útvonalkeresés, az OSM adatokat feldolgozzuk, és eltároljuk egy lokális adatbázisban. A csomópontok közül a legtöbbet töröljük, és az érdekes csomópontokat hagyjuk meg. Ezután az izolált területeket töröljük.&lt;br /&gt;
&lt;br /&gt;
A csomópontok megtartásának szabályai:&lt;br /&gt;
* 3 vagy több útvonalszakaszt köt össze.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de a két útvonalszakasznak más tulajdonságai vannak.&lt;br /&gt;
* 2 útvonalszakaszt köt össze, de az útvonalszakaszok közt megváltoztak az útvonaltervezési korlátozások.&lt;br /&gt;
&lt;br /&gt;
A fentebbi szabályokat felhasználva a csomópontok törlését annyiszor ismételhetjük, amíg csak a legfontosabb csomópontok maradnak már csak meg. Ezeket a csomópontokat szuper-csomópontnak nevezzük, és a szuper-csomópontokat szuper-utak kötik össze.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Útkeresés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
# A kezdőponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# A végponttól útvonalat keresünk a legközelebbi szuper-csomóponthoz.&lt;br /&gt;
# Az 1. és a 2. szuper-csomópont közt megkeressük a szuper-útvonalat.&lt;br /&gt;
# A 3. pontban talált szuper-útvonalak mindegyikére megkeresi a legrövidebb utat a szuper-útvonal kezdő és végpontja között.&lt;br /&gt;
&lt;br /&gt;
Az útvonal keresési algoritmust az A* algoritmussal (vagy legalábbis egy ehhez nagyon hasonlító algoritmussal) oldották meg. Ez az algoritmus a kezdő csomóponttól a legkisebb érték (legrövidebb, vagy leggyorsabb út) kiszámítására törekszik minden csomóponthoz.&lt;br /&gt;
&lt;br /&gt;
A 4. pontban lévő útvonalakat viszont a Dijkstra algoritmussal keresi meg.&lt;br /&gt;
&lt;br /&gt;
== Példaprogramok ==&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=459</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=459"/>
		<updated>2017-05-03T20:20:56Z</updated>

		<summary type="html">&lt;p&gt;Mj12: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A routino egy útvonaltervező, mely OSM adatok alapján képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Előfeltételek&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A program előfeltételeit célszerű telepíteni először&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apt-get install gcc make libc6-dev libz-dev libbz2-dev&lt;br /&gt;
apt-get install libwww-perl liburi-perl libjson-pp-perl #These are optional&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Telepítés&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
A telepítéshez ez után le kell töltenünk a [https://www.routino.org/download/ Routino weboldaláról] a forráskódot, majd azt kibontva, le kell fordítanunk, majd be kell másolni az Apache webszerver mappájába.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make&lt;br /&gt;
cp -a web /var/www/routino&lt;br /&gt;
chown -R www-data:www-data /var/www/routino&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után az OSM adatokat fel kell dolgozni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/data&lt;br /&gt;
../bin/planetsplitter --errorlog [Tetszőleges OSM fájl neve].osm.bz2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Miután megvolt, válasszuk ki, hogy OpenLayers vagy Leaflet felületen szeretnénk-e használni a Routino-t, és futtassuk ezt le:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /var/www/routino/www/[openlayers vagy leaflet]&lt;br /&gt;
sh -x install.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ezek után még egy lépés hátra van, az apache &amp;lt;code&amp;gt;/etc/apache2/sites-enabled/000-default&amp;lt;/code&amp;gt; fájljába ezeket a sorokat hozzá kell adni:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;Directory /var/www/routino&amp;gt;&lt;br /&gt;
    AllowOverride Options=MultiViews,ExecCGI FileInfo Limit&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Konfigurálás&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Szerkesszük az alábbi fájlt: /var/www/routino/www/routino/mapprops.js&lt;br /&gt;
* A &amp;lt;code&amp;gt;library&amp;lt;/code&amp;gt; változó értékével tudjuk módosítani, hogy az OpenLayers vagy a Leaflet felületet próbálja-e meg betölteni.&lt;br /&gt;
* A &amp;lt;code&amp;gt;westedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;eastedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;southedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;northedge&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomout&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;zoomin&amp;lt;/code&amp;gt; változókkal értelemszerűen a térkép mozgásterét tudjuk korlátozni, illetve a minimum és a maximum zoom értékeket.&lt;br /&gt;
* A &amp;lt;code&amp;gt;mapdata&amp;lt;/code&amp;gt; változóban tudjuk megadni, hogy melyik Tileserver-ről szedje le a térkép Tile-okat. Az alapértelmezett Tileserver jelenleg megfelelő lesz.&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
== Példaprogramok ==&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
	<entry>
		<id>http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=426</id>
		<title>Routino</title>
		<link rel="alternate" type="text/html" href="http://gis.inf.elte.hu/giswiki/index.php?title=Routino&amp;diff=426"/>
		<updated>2017-05-01T14:35:08Z</updated>

		<summary type="html">&lt;p&gt;Mj12: Új oldal, tartalma: „A routino egy útvonaltervező, mely OSM adatok alapján képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között.  == Telepítés ==  == Algorit…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A routino egy útvonaltervező, mely OSM adatok alapján képes a legrövidebb, vagy a leggyorsabb utat kiszámítani két pont között.&lt;br /&gt;
&lt;br /&gt;
== Telepítés ==&lt;br /&gt;
&lt;br /&gt;
== Algoritmusok ==&lt;br /&gt;
&lt;br /&gt;
== Példaprogramok ==&lt;/div&gt;</summary>
		<author><name>Mj12</name></author>
		
	</entry>
</feed>