2013-04-01 15 views
8

Sto creando un'app mobile che determina se qualcuno se un buon driver. Il telefono si trova sul cruscotto e raccoglie le informazioni GPS mentre l'utente sta guidando. Devo determinare un modo se il conducente sta seguendo il limite di velocità, e vorrei farlo tramite OpenStreetMap. Qual è il modo migliore per ottenere i limiti di velocità da OpenStreetMap?ottenere i limiti di velocità da OpenStreetMap

risposta

2

C'è un tag maxspeed utilizzato per strade e corsi d'acqua nei dati OpenStreetMap (link). I dati OSM sono disponibili in numerosi formati. Il modo più semplice per iniziare è il formato XML leggibile dall'uomo che può essere esportato direttamente da OpenStreetMap.org. di seguito è riportato un esempio di The Strand a Londra che mostra il formato dei dati e come viene espressa la velocità massima.

<way id="157541665" version="1" timestamp="2012-04-05T22:32:48Z" changeset="1"/> 
    <nd ref="1697772135"/> 
    <nd ref="33141175"/> 
    <nd ref="321255915"/> 
    <nd ref="282569730"/> 
    <tag k="highway" v="primary"/> 
    <tag k="lanes" v="3"/> 
    <tag k="maxspeed" v="30 mph"/> 
    <tag k="name" v="Strand"/> 
    <tag k="postal_code" v="EC4"/> 
</way> 
+4

Potete si prega di inviare la vostra richiesta GET a OpenStreetMap? thnx in anticipo. :) – MQoder

+0

Un esempio di come hai ottenuto il risultato sarebbe stato utile –

7

È possibile effettuare una richiesta Web per ottenere la risposta.
Ecco uno (provare come un URL del browser) di una piccola scatola in cui si suppone che tu sia:

www.overpass-api.de/api/xapi?*[maxspeed=*][bbox=5.6283473,50.5348043,5.6285261,50.534884] 

e la risposta che mostra la strada che lo attraversa, di fronte a una scuola:

<node id="1312239864" lat="50.5348877" lon="5.6286790"> 
    <tag k="highway" v="crossing"/> 
    <tag k="traffic_calming" v="bump"/> 
</node> 
<node id="2025084665" lat="50.5345623" lon="5.6274183"> 
    <tag k="traffic_calming" v="choker"/> 
</node> 
... 
<way id="191950462"> 
    <nd ref="2025084669"/> 
... 
    <tag k="bicycle" v="yes"/> 
    <tag k="highway" v="secondary"/> 
    <tag k="maxspeed" v="30"/> 
    <tag k="name" v="Rue d'Esneux"/> 
    <tag k="source:maxspeed" v="school zone"/> 
</way> 

Ho lasciato solo le cose interessanti, per lo più autoesplicative. Ad esempio, le funzionalità di rallentamento del traffico sul proprio nodo.
La strada è la via dei nodi e dei suoi stessi tag.
maxspeed = 30 è la tua risposta. Se non ci fosse velocità massima, il valore predefinito per autostrada = secondario (o = autostrada ...)
Tutti i tag sono descritti su wiki.openstreetmap.org
Questo sta usando xapi. È inoltre possibile utilizzare overpass api.
La copertura del limite di velocità è parziale ma è possibile migliorarla. Lasciare le note sulla mappa principale per fornire i dati.

4

Per chi cerca un'alternativa moderna che possa utilizzare sia XML che json, la gemma nascosta HERE Maps vale la pena di provarla, c'è un piano gratuito che fornisce circa 100.000 richieste, l'API è anche solida e facile da usare uso.

https://developer.here.com/myapps/create-with-plan/10134035/10134084

Crea un account, creare la vostra applicazione, applicare il sacco lat ad un'API simile a quello qui sotto.

Ottenere la richiesta esempio limite di velocità come per la loro documentazione

http://route.st.nlp.nokia.com/routing/6.2/getlinkinfo.xml?app_id=DemoAppId01082013GAL&app_code=AJKnXv84fjrb0KIHawS0Tg&waypoint=50.05564304861044,8.38889128575724&linkattributes=all

Io sono in alcun modo affiliato con HERE Maps, solo uno sviluppatore in cerca di una soluzione limite di buona velocità!

PS se si utilizza questa soluzione, questa risposta potrebbe essere utile.

Here Maps REST API - getlinkinfo returns incorrect speed limit