2012-11-15

New page

{{Languages|YOURS}}

{{Ko:YOURS}}

{| class="wikitable" align="right" style="width:176px; margin-bottom:20px;"

|-

! Quick links

|-

| [http://www.yournavigation.org Live demonstration]

|-

| [[Gosmore|Routing engine]]

|-7

| [[Namefinder|Indexing service]]

|-

| [[Route_altitude_profiles_SRTM|Route altitude profiles]]

|-

| [[YOURS:Routing Benchmarks|Routing Benchmarks]]

|}

이것은 YOURS, 즉 '''Y'''et '''a'''nother '''O'''penStreetMap '''R'''oute '''S'''ervice의 메인 위키 프로젝트 페이지이다.

{| align="center"

|+ ! '''''소폰서를 찾습니다''''' !

|- align="center"

| '''이 프로젝트를 위하여 Gosmore routing backend를 주관하는데 필요한 스폰서가 필요하다. 만일 여러분이 도울 수 있다면 사용자인 [[User:Lambertus|Lambertus]] 와 접촉하세요. 감사합니다!'''

|- align="center"

|''최소 요구사항 : 듀얼코어(dual core), 8 GB ram, 20 GB 하드 디스크, 월 200 MB 트래픽''

|}

--[[User:James Park|James Park]] 05:02, 15 November 2012 (UTC)

= 서론=

YOURS goal is to use OpenStreetMap data to make a routing website utilizing as much other (opensource) applications as possible. Currently integrated applications are:

* [[Gosmore]], the routing engine.

* [[Namefinder]], the indexing service.

* [[Route_altitude_profiles_SRTM|Route altitude profiles SRTM]]

* [[OpenLayers]], slippy map framework.

* [http://techbase.kde.org/Projects/Marble/RoutingInstructions RouteInstructions], a generic Marble/Qt application that converts a textual representation of a route to driving instructions.

Hosting for the YOURS demo website [http://yournavigation.org yournavigation.org] is sponsored by [http://oxilion.nl/ Oxilion].

==이름==

As there are already a number of route services using OSM data it becomes more difficult to find a suitable application/project name. Each ones name contains relevant words like 'open', 'service', 'route', etc. So I thought of 'Yet Another Openstreetmap Routing Service' short YAORS which sounds like 'yours' hence: YOURS. As in 'your route service'...oh well :-)

= 특성 =

* Generate fastest or shortest routes in different modes:

** using all available roads for Car, Bicycle and Pedestrians .

** using only national, regional or local cycle routes/networks for Bicycle.

* Unlimited via points (waypoints) to make complex routes.

* Drag and drop waypoints moving.

* Drag and drop waypoint ordering.

* Geolocation: Lookup street- and placenames to determine their coordinates.

* Reverse geolocation: Lookup coordinates to determing their street- and placenames.

* Generate route altitude profiles.

* Download routes as GPX file so the route can be put onto a GPS device for trackback.

* Provides a routing calculation API that returns KML or geoJSON.

* Allow quick editing of the current mapview using a link to the online 'Potlatch' map editor.

* Single click map/route data testing.

* Show the date of the planet-latest file on which the routing database is based.

* Client-side (session based) route caching.

* Automatic zoom to location of the user based on geoIP.

[[Routing/OnlineRouters|Compare YOURS against other online OpenStreetMap navigation websites.]]

== 필요자원들 ==

The resources required to run a server for worldwide routing are listed below. The 'minimal' hardware requirements are probably enough for responsive regional routing.

Building a new route database requires a fair amount of disk space. A copy of the OpenStreetMap planet dump requires approx. 20 GB while the resulting route database is about 15 GB and including intermediate files and including the existing routing database the required disk space adds up quickly to 80 GB. Off-site routing database generation will reduce this to about 30 GB at the expense of more scripting and traffic.

=== 소프트웨어 ===

* Linux (32-bit for local routing, 64-bit for regional/worldwide routing)

* Remote shell access (ssh)

* Webserver (Apache2)

* PHP5

* Java 1.6

=== 하드웨어 ===

Minimal: one concurrent route request, possibly slow

* 8 GB ram

* 80 GB disk space

* 1 GB traffic/month

Optimal: two+ concurrent route requests

* 24 GB ram

* 160 GB disk space

* 10 GB traffic/month

= 개발 =

YOURS code is available under the BSD license. You can download the code for version 1 (as shown on http://www.yournavigation.org) from the OpenStreetMap SVN server:

svn co http://svn.openstreetmap.org/applications/routing/yours/branches/version-1.0-via

The developer version which will support route via's and driving directions will be committed to the trunk of the repository in a few weeks.

'''Contributors please check out the branch 'version-1.0' only. SVN trunk is not yet up to date!'''

svn co http://svn.openstreetmap.org/applications/routing/yours/trunk (Do '''not''' use this link)

== Contact, bug reports and feature requests ==

Bug reports and feature requests should preferably be done as [http://trac.openstreetmap.org/newticket?component=yours&owner=lambertus Trac tickets] assigned to the YOURS project. You can also add your comment to the [[Talk:YOURS|discussion page]] or [http://forum.openstreetmap.org/viewtopic.php?id=735 forum topic]. For other stuff you can email me: osm at na1400 dot info but I'm also often present on the irc channels [irc://irc.oftc.net/#osm #osm] and [irc://irc.oftc.net/#osm-dev #osm-dev] between 09:00 and 23:00 CET.

== 기여 ==

Any help in making YOURS better is welcome! Please refer to a ticket when committing your changes like:

Added new feature blah (refs #1234)

''Where 1234 is the ticket number requesting the new feature or bugreport''

== 알려진 문제들 ==

There is a list of [http://trac.openstreetmap.org/query?status=new&status=assigned&status=reopened&component=yours&order=priority active Trac tickets].

A list of sub-optimal or weird routes is listed [[YOURS/weird_routes|here]].

*
Very long routes can't be exported in GPX format. This needs a different implementation approach (YOURS).

* The route altitude profiler only works for routes with less then 400 nodes (YOURS).

* Gosmore is '''not''' designed for generating very long routes (> 200km).

*
No routing in the Northeastern part of the American continent (Server/hosting).

*
Due to server limitations the American continent is devided into three sections: Northeast-, Northwest- and South America. Route calculations can't be performed when the route goes from one section to another (Server/hosting/YOURS).

*
Non-standard ASCII characters are currently not supported by the YOURS Namefinder interface. I assume this affects a lot of non-western countries, but so far I've only received feedback on this from Germany and Denmark...(YOURS).

*
Oneway restrictions on roads tagged using oneway=true are disregarded (Gosmore).

*
Some routes cannot be calculated (Gosmore).

*
Internet Explorer fails to show the route altitude graph (YOURS). Fixed thanks to Tobias Lindh.

= Altitude profile =

The altitude profile is based upon SRTM data which comprises multiple terabytes of data when covering the world but sponsored servers usually don't have that amount of storage available. A possible solution for this is to spread the data over a number of servers. Below is a list of currently supported servers by YOURS. Please [http://www.openstreetmap.org/user/Lambertus send me a message] if you have [http://wiki.openstreetmap.org/index.php/Route_altitude_profiles_SRTM configured a server] yourself and want YOURS to support it too. If you decide to configure a profile server please make sure to overlap the neighboring areas by e.g. 1 degree as that will make generating profiles easier.

{| class="wikitable" width=100%

|-

!Host

!Base URL

!Area description

!Area bbox

|-

|[http://labs.metacarta.com/ Metacarta]

|http://labs.metacarta.com/altitude/profile/

|North and South America

|N60 W-179 S-56 E-44

|-

|[http://osm.komzpa.net Komяpa]

|http://altitude.komzpa.net/profile/

|Belarus

|N57 W23 S50 E33

|}

=웹 사이트=

==설정 안내==

===전제조건들===

* I assume that a webserver with PHP is already available. If not, there are many manuals on the internet on how to get this running.

* You will also need php5-curl for Curl integration (used by the cross-domain proxy transport.php)

* SVN tools are needed to get a copy from the repository. Contact me for a zip file if you don't have (or want) SVN tools installed.

* Use the Firefox browser with the Firebug plugin to debug your application. You'll learn about errors and it's causes quickly that way.

===Gosmore routing engine 설치하기===

* Get a copy of Gosmore following the instructions from: [[Gosmore]]

* Download a precompiled map as described in the link above, name it gosmore.pak and put it in the same directory where Gosmore resides.

* Alternatively you can download a planet dump or planet extract from: [[Planet]] and convert it into a gosmore.pak following the instruction on the Gosmore wiki page.

* Compile Gosmore for a server without graphical desktop environment with CFLAGS=-DHEADLESS -DONLY_ROUTING. If your server has more then 16GB RAM then you can add the compile option -DLD_CTRL as well, however if you add this option while having less RAM you might end up with incomplete routes (routes that start with 'Jump').

===RoutingInstructions 설치하기===

* Follow the instructions on [http://techbase.kde.org/Projects/Marble/RoutingInstructions this page]. It's straightforward. For Ubuntu the packages cmake, libqt4-dev, qt4-dev-tools, libqt4-core, qt4-linguist-tools and libicu48 are needed.

===YOURS 웹 사이트 설치하기===

* Go to the public html directory and get a copy of YOURS using the SVN command:

You should now have a directory named 'yours' in the public html directory.

* Open gosmore.php in the API directory, e.g.: yours/api/dev/gosmore.php and put the correct path the the yours www directory ($www_dir), the path to the gosmore routing engine ($yours_dir) and an email address for the administrator (only used to notify API abusers) so you may leave it blank.

===마침===

Start your browser and go to: http://www.my-server.com/yours and enjoy!

==YOURS를 써드파티(3rd party) 웹 앱에 심기==

It's fairly easy to get routing in your own web application. Determine the TO and FROM coordinates and ask www.yournavigation.org to calculate a route for you. Have a look at the [[YOURS#API_documentation|API documentation]] for more information on the parameters and it's usage.

===Cross-site AJAX calls===

Browsers don't allow cross-site AJAX calls (it's a security restriction). There are two possible solutions for this:

# Relay the request to www.yournavigation.org via a proxy on your own server.

# Use a 3rd party JavaScript library that uses tricks to perform cross-site AJAX requests. E.g. by using a Flash or Java applet.

Option 1 is probably easiest to understand and implement. There are many proxy's available on the internet, but the YOURS repository already contains a proxy for cross-site calls: [http://svn.openstreetmap.org/applications/routing/yours/trunk/www/transport.php Transport.php]

Once you have the proxy in place on your server then you can request a route using an AJAX call like this (untested!):

var url = 'http://www.my-server.com/yours/transport.php?url=http://www.yournavigation.org/api/1.0/gosmore.php&format=kml&flat=52.215676&flon=5.963946&tlat=52.2573&tlon=6.1799&v=motorcar&fast=1&layer=mapnik';

Notice the replacement of 'gosmore.php?' with 'gosmore.php&' compared to regular URL constructions when using the proxy script in the example above.

Note: This proxy script needs the CURL plugin for PHP.

== Websites that run their own instance of YOURS ==

*[http://www.openstreetmap.cl/ OpenStreetMap.cl] OpenStreetMap chapter of Chile.

*[http://maps.bigtincan.com/ BigTinCan] makes mobile navigation software.

''Please add your website here''

= API documentation =

If you would like to embed some of the functions of the YOURS website in your own site or application then you can incorporate the API. The API is described below.

== Usage ==

Use of the API is on a Fair Use Policy basis: everyone can use the API as long as it won't overload the server systematically. If you do overload but provide an X-Yours-client header (as described below) then I'll try to contact you to find a solution. If you don't provide this information (or I can't contact you) then you might become blocked (this has happened only once so far, so don't worry too much about it).

== Speed/Reliability ==

The sponsored server that runs www.yournavigation.org only has 2 GB ram but the routing database is about 12 GB. This forces the server to move blocks of data in and out of ram when there are multiple concurrent users that request routes all over the world. Despite the speed with which Gosmore is able to calculate routes in optimal conditions, the harddisk seeks will slow the server down almost completely in case of such situation and new requests might be rejected if there are already too many concurrent requests running (this happens quite often unfortunately, multiple times per day).

There is not much that can be done about it unless the server is upgraded with more ram and/or an SSD harddisk (Hint!).

===공정한 사용 정책===

The routing API is open and freely available for everyone under the condition that you don't overload the server. Overloading the server in this context means: more then 1 request per second for sustained periods of time. Bursting multiple requests for short time-periods is not a problem though. Please contact me ([http://wiki.openstreetmap.org/wiki/User:Lambertus Lambertus]) in advance if your application is expected to perform a lot of requests. Commercial, public or other applications that are expected to perform lots of requests must identify themselves by providing an application name/contact information in the request headers (see API 1.0 documentation).

API users (IP addresses or applications) that violate this FUP will be blocked. I reserve the right of deciding when an API user is overloading the server.

== API revisions ==

The API can have multiple revisions. In each version the interface is kept unchanged to prevent 3rd party applications from becoming broken. Each API version is kept in it's own directory which allows multiple API versions to operate simultaneously without interfering with each other. 3rd party developers can then gradually move from one version to another without being forced to do so on short notice. Note: The API interface can change without notice as long as it's called 'dev'.

The current API revision is '1.0'. The 2.0 API is being developed as 'dev'. The base URL for each API is:

http://www.yournavigation.org/api/, so the 1.0 API is located at: http://www.yournavigation.org/api/1.0/ and the dev API is located at: http://www.yournavigation.org/api/dev/.

== Version 1.0 ==

Clients of this API version are kindly requested to identify themselves using an extra HTTP header: X-Yours-client. This way the (amount of) users can be tracked and appropriate action taken if a 3rd party application is overloading the service or otherwise misbehaving. E.g. the yournavigation website is identified by X-Yours-client: www.yournavigation.org.

=== Routing API ===

The routing API provides routing information based upon a given start/end location and some route parameters like the vehicle type, etc. The resulting route is returned as a KML file containing all the nodes from start to finish. If Gosmore is unable to successfully calculate a route then the most complete route so far will be returned.

==== Base URL ====

http://www.yournavigation.org/api/1.0/gosmore.php

==== Parameters ====

Available parameters are described below. Only the location parameters are required. All other parameters are optional, they will use the default value when omitted.

* '''flat''' = latitude of the starting location.

* '''flon''' = longitude of the starting location.

* '''tlat''' = latitude of the end location.

* '''tlon''' = longitude of the end location.

* '''v''' = the type of transport, possible options are: motorcar, bicycle or foot. Default is: motorcar.

* '''fast''' = 1 selects the fastest route, 0 the shortest route. Default is: 1.

* '''layer''' = determines which Gosmore instance is used to calculate the route. Provide mapnik for normal routing using car, bicycle or foot. Provide cn for using bicycle routing using cycle route networks only. Default is: mapnik.

* '''format''' = specifies the format ([http://nl.wikipedia.org/wiki/Keyhole_Markup_Language KML] or [http://geojson.org/ geoJSON]) in which the route result is being sent back to the client. This can either be kml or geojson. Default is: kml.

* '''geometry''' = enables/disables adding the route geometry in the output. Options are 1 to include the route geometry in the output or 0 to exclude it. Default is: 1.

* '''distance''' = specifies which algorithm is used to calculate the distance. Options are v for [http://en.wikipedia.org/wiki/Vincenty%27s_formulae Vicenty], gc for simplified [http://en.wikipedia.org/wiki/Great_circle_distance Great Circle], h for [http://en.wikipedia.org/wiki/Law_of_haversines Haversine Law], cs for [http://en.wikipedia.org/wiki/Spherical_law_of_cosines Cosine Law]. Default is: v. Implemented using the geography class from [http://blog.simonholywell.com/post/374218456/geographic-calculations-in-php Simon Holywell].

* '''instructions''' = enbles/disables adding driving instructions in the output. Options are 1 to include driving directions, 0 to disable driving directions. Default is 0.

* '''lang''' = specifies the language code in which the routing directions are returned. Default is en (English). Options are:

{| align="left"

|+ '''Languages'''

| ''Code''

| ''Language''

| ''Translation quality''

|-

| ar

| Arabic

| *

|-

| be

| Belarusian

| **

|-

| bg

| Bulgarian

| **

|-

| ca

| Catalan; Valencian

| *

|-

| cs

| Czech

| *

|-

| da

| Danish

| *

|-

| de

| German

| *

|-

| el

| Modern Greek

| *

|-

| en

| English

| *****

|-

| en_GB

| Brittish English

| ****

|-

| eo

| Esperanto

| *

|-

| es

| Spanish

| ****

|-

| et

| Estonian

| ****

|-

| fi

| Finnish

| *

|-

| fr

| French

| *

|-

| ga

| Irish

| *

|-

| gl

| Galician

| ****

|-

| gu

| Gujarati

| *

|-

| he

| Hebrew

| *

|-

| hi

| Hindi

| *

|-

| hr

| Croatian

| ****

|-

| hu

| Hungarian

| *

|-

| is

| Icelandic

| *

|-

| it

| Italian

| *

|-

| ja

| Japanese

| *

|-

| km

| Central Khmer

| *

|-

| lt

| Lithuanian

| ****

|-

| lv

| Latvian

| *

|-

| ml

| Malayalam

| *

|-

| nb

| Norwegian Bokmål

| ****

|-

| nds

| Low German

| *

|-

| nl

| Dutch; Flemish

| ***

|-

| nn

| Norwegian Nynorsk

| *

|-

| oc

| Occitan (post 1500)

| *

|-

| pa

| Panjabi; Punjabi

| *

|-

| pl

| Polish

| *

|-

| pt

| Portuguese

| ****

|-

| pt_BR

| Brazilian Portugese

| ****

|-

| ro

| Romanian; Moldavian

| *

|-

| ru

| Russian

| *

|-

| se

| Northern Sami

| *

|-

| si

| Sinhala; Sinhalese

| *

|-

| sk

| Slovak

| *

|-

| sl

| Slovenian

| *

|-

| sv

| Swedish

| ****

|-

| tr

| Turkish

| *

|-

| uk

| Ukrainian

| ****

|-

| wa

| Walloon

| *

|-

| zh_CN

| Chinese

| *

|-

| zh_TW

| Taiwanese Chinese

| ****

|-

|}

{| align="left"

|+ '''Quality legenda:'''

|-

| *

| Very poor

|-

| **

| Poor

|-

| ***

| Reasonable

|-

| ****

| Good

|-

| *****

| Very good

|-

|}

Note: Support for route instructions and it's translations is provided by [http://techbase.kde.org/Projects/Marble/RoutingInstructions RoutingInstructions]. Helping this project with translations and keeping this table up-to-date is welcome!.

==== Example URL ====

http://www.yournavigation.org/api/1.0/gosmore.php?format=kml&flat=52.215676&flon=5.963946&tlat=52.2573&tlon=6.1799&v=motorcar&fast=1&layer=mapnik

=== Export API ===

YOURS can export a route in different formats, like Waypoints or GPX track. Provide the route and it will return the route in the requested format.

==== Base URL ====

http://www.yournavigation.org/api/1.0/saveas.php

==== Parameters ====

* '''type''' = the type of output format, possible options are: gpx (GPX track), wpt (Waypoints).

* '''data''' = the source route in lat/lon pairs. Each pair is separated by a comma character while the lat/lon values are separated by a space character.

==== Example URL ====

http://www.yournavigation.org/api/1.0/saveas.php?type=gpx&data=5.62373%2053.01,5.62359%2053.01014,5.62336%2053.01024,5.62314%2053.010303

== API users ==

Below is a list of known API users. The list of API users is incomplete because there are possibly many unknown clients (not everyone provides identification information).

''Please add your service here as well''

* The YOURS [http://www.yournavigation.org demonstration] site.

* [http://wiki.playdev.co.za/index.php?title=Mapi Mapi] simple Javascript mapping and routing API.

* [http://woophoo.com Woophoo] mobile GPS tracking system.

* [http://tracks4bikers.com/build_osm Tracks4Bikers] Mountaibike tracks site.

* [[Aosm]] routing application running on J2ME and BlackBerry devices.

* [[MGMapsLib|MGMaps Lib]] Mobile Mapping SDK from Nutiteq, as sample directions service (J2ME, BlackBerry, Android devices).

* [http://osm.komzpa.net/index.php/maemo-mapper-routing/ Maemo mapper] Maemo mapper OSM routing script. (Note: Does not seem to be using YOURS anymore)

* [http://bit.ly/OpenMaps OpenMaps] is an iPhone maps application.

* [[OpenSatNav]] is an Android navigation application.

* [[OpenVoiceNav]] is an navigation application for the visually impaired.

* [https://confluence.prodevelop.es/display/GVMN/Home gvSIG mini] is a map viewer for mobile phones, that displays existing free maps tiles services, such as OpenStreetMap, Yahoo Maps, Microsoft Bing and more.

* [http://l6n.org/myspeed/index.shtml MySpeed] is an Android navigation application with speed logging and speed camera alerts.

* [http://www.parkenapp.de/ Parkenapp] is a routing application for the iPhone specifically targetting parking needs (in German)

* [[OpenMobileMaps]] is a map viewer application for Windows Mobile phones as an alternative to Google Maps.

* [[AndRoad]] is an OpenStreetMap-based navigation app for Android.

* [http://www.pocketnavigator.org/ PocketNavigator] enables you to navigate in a foreign city without forcing you to repetetive look on your device as a usual navigation system would do.

* [[TangoGPS]] is an easy to use, fast and lightweight mapping application for use with or without GPS. It runs on any Linux platform from the desktop over eeePC down to phones like the Openmoko Neo.

* [http://tub2go.tubit.tu-berlin.de tub2go] is a web application for students at the Technische Universität Berlin.

* [http://wp-fahrtenbuch.de/ Fahrtenbuch] is a navigation app for Windows Phone 7.

* [http://www.viewranger.com ViewRanger] is an outdoor GPS app for your mobile phone or tablet.

* [http://sites.google.com/site/ubccpsc210/ UBC CPSC 210] is a Computer Science curriculum course covering complex software systems construction provided by the University of British Columbia.

* [http://www.androidpit.de/de/android/market/apps/app/menion.android.locus/Locus-Free Locus] is an Android app aimed at tourist, hiking an geocaching navigation.

* [[700_City_Maps]] is an navigation app for the iPhone/iPad.

* [http://www.pickacab.com/ PickaCab] is an app for iPhone or Android to 'Book the nearest available taxi to you at the touch of a button'.

* [http://klinikkarte.de Klinikkarte.de] is a german website for searching hospitals.

* [http://www.chesterzoo.org Chester Zoo] Mobile app for routing inside the zoo (among other things).

* [http://88.51.212.243/4DCGI/index.html Manutec]

* [http://80.93.225.71 Sat Eye] GPS tracking

* [http://www.kartapps.no Norgeskart] Mobile app displaying topographical and sea maps for Norway.

= Todo list =

[[Category:Outputs]]

[[Category:Routing]]

[[Category:Software]]

[[Category:Free software]]

[[Category:Unix]]

[[Category:Windows]]

[[Category:Windows Mobile]]

[[Category:Renderers]]

[[Category:Linux]]

[[Category:Ubuntu]]

[[Category:Mobile_phone]]

[[category:android]]

[[category:IOS]]

[[category:iPhone]]

Show more