2009-07-07 22 views
36

Mi chiedo se ci siano API che potrei interrogare i dati OSM attraverso, per esempio; Sono (lon_1, lat_1) a terra o in mare? O potrebbe essere possibile ottenere un'isola come un poligono ben definito? L'unico utilizzo che ho visto finora è stato solo uno strumento per il rendering dei dati OSM (generazione di tile).Esiste un'API per openstreetmap?

+0

Questo MapServer sembra essere piuttosto interessante. Grazie – vikingosegundo

+0

È necessario aggiungere l'aggiornamento come risposta e accettarlo. –

risposta

1

Ho trovato un'ottima API per la lettura dei dati di Openstreetmap; Mapscript. Questa è un'interfaccia per MapServer, che è in grado di leggere i file * .map e * .shp.È in grado di utilizzare un indice spaziale ed è quindi potenzialmente estremamente veloce. Ho effettuato ricerche di poligoni casuali (controllando se un poligono interseca la terra) del file di forma della linea di costa mondiale in 40 ms.

2

Ovviamente, l'API di javascript si chiama openlayers.

+1

Conosco gli openlayer, ma non è solo per la visualizzazione/il funzionamento su riquadri renderizzati? –

25

Sì, c'è uno api e xapi (estensione api).

Non li ho ancora usati.

Ma c'è anche lo cloudmade api in OSM. Ho giocato un po 'con l'API di Python.

Non sono sicuro, se qualcuno di loro potrebbe aiutarti con il tuo problema particolare, ma potresti cercare un coastline vicino al tuo punto. Se il punto è all'interno del poligono tagged natural=coastline, si dispone di un'isola (o di un continente) ...

+0

Qual è il formato XML che consegna e come lo renderò in un'immagine raster nella mia applicazione? –

+3

per generare un iamge dal xml u hai bisogno di un renderer. ce ne sono diversi. vedere qui http://wiki.openstreetmap.org/wiki/Renderers – vikingosegundo

+0

Per le query di grandi dimensioni e/o complesse [API Overpass] (https://wiki.openstreetmap.org/wiki/Overpass_API) è la strada da percorrere. – scai

9

È possibile utilizzare l'API di Geocoding di CloudMade per cercare un'isola nei dati di OpenStreetMap. L'API restituirà la geometria del risultato per impostazione predefinita e questo mi sembra ciò che stai cercando. Ad esempio, Arran al largo della costa della Scozia può essere trovata la seguente richiesta http:.

http://geocoding.cloudmade.com/BC9A493B41014CAABB98F0471D759707/geocoding/find/Arran,UK.js?results=1

(e come un piccolo hack pulito, cambiando i .js in .html anteprime il risultato

Più documenti ed esempi sull'API sono su developers.cloudmade.com/projects/show/geocoding-http-api Se non si desidera utilizzare l'http api, le API di astrazione sono disponibili in più lingue: ruby, python, perl e altri

2

Ho usato gli estratti di OSM CloudMade ma ho avuto qualche problema con loro. Ad esempio, la Norvegia è stata tagliata troppo forte, causando la scomparsa di alcune strade sulla costa occidentale.

Ora preferisco l'API del passaggio.

Mettete qualcosa di simile nella forma di query al http://www.overpass-api.de/query_form.html

<osm-script timeout="10000" element-limit="1073741824"> 
    <union into="_"> 
    <bbox-query into="_" s="52.3170669250001" n="52.4027433480001" w="4.80527567900009" e="4.97793537400008"/> 
    <recurse from="_" into="_" type="up"/> 
    <recurse from="_" into="_" type="down"/> 
    </union> 
    <print from="_" limit="" mode="meta" order="id"/> 
</osm-script> 

Mettere i limiti della zona che si desidera, in gradi, nelle s, n, w gli attributi ed e dell'elemento.

7

Nessuno sembra aver menzionato qui il Volantino API:
http://leafletjs.com/reference.html

+0

Questo non è davvero rispondere a ciò che l'autore ha chiesto. Vuole un modo per interrogare OpenStreetMap, non per visualizzare una mappa. Il volantino è "una libreria JavaScript open source per mappe interattive ottimizzate per dispositivi mobili" come riportato sul loro sito web. –

Problemi correlati