2009-07-07 10 views
36

Me pregunto si hay alguna API que pueda consultar datos de OSM, por ejemplo; ¿Están (lon_1, lat_1) en tierra o en el mar? ¿O podría ser posible obtener una isla como un polígono bien definido? El único uso que he visto hasta ahora ha sido solo herramientas para renderizar datos OSM (generación de teselas).¿Hay una API para openstreetmap?

+0

Este MapServer parece ser bastante interesante. Gracias – vikingosegundo

+0

Debe agregar su actualización como respuesta y aceptarla. –

Respuesta

1

Encontré una gran API para leer datos de OpenStreetMap; Mapscript. Esta es una interfaz para MapServer, que puede leer archivos * .map y * .shp.Puede usar un índice espacial y, por lo tanto, es potencialmente extremadamente rápido. Realicé búsquedas aleatorias de polígonos (verificando si un polígono se cruza con la tierra) del archivo de forma de costa del mundo en 40 ms.

2

Por supuesto, la API de javascript se llama openlayers.

+1

Sé sobre openlayers, pero ¿no es solo para mostrar/operar en mosaicos renderizados? –

25

Sí, hay un api y xapi (extensión api).

No he usado estos todavía.

Pero también está el cloudmade api de OSM. Jugué un poco con la API python.

No estoy seguro, si alguno de ellos podría ayudarle con su problema en particular, pero podría buscar un coastline cerca de su punto. Si su punto está dentro del polígono tagged natural=coastline, tiene una isla (o un continente) ...

+0

¿Cuál es el formato XML que ofrece y cómo lo renderizo en una imagen ráster en mi aplicación? –

+3

para generar un iamge desde el xml necesita un renderizador. hay varios. vea aquí http://wiki.openstreetmap.org/wiki/Renderers – vikingosegundo

+0

Para consultas grandes y/o complejas [API de paso superior] (https://wiki.openstreetmap.org/wiki/Overpass_API) es el camino a seguir. – scai

9

Puede utilizar la API de geocodificación de CloudMade para buscar una isla en los datos de OpenStreetMap. La API devolverá la geometría del resultado de manera predeterminada, y esto me suena a lo que estás buscando. Por ejemplo, Arran de la costa de Escocia se puede encontrar mediante la siguiente petición http:.

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

(y como un pequeño corte limpio, cambiando los .js a .html previsualizaciones el resultado

Hay más documentos y ejemplos en la API en developers.cloudmade.com/projects/show/geocoding-http-api Si no desea utilizar la API http, las API de abstracción están disponibles en varios idiomas: ruby, python, perl y otros.

2

He utilizado extractos de OSM CloudMade pero tuve algunos problemas con ellos. Por ejemplo, Noruega fue cortada demasiado fuerte, causando que algunas carreteras en la costa oeste desaparecieran.

Ahora prefiero la API de paso superior.

poner algo como esto en el formulario de consulta en 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> 

puso a los límites de la zona que desee, en grados, en los s, n, w atributos y E del elemento.

1

MapQuest tiene un conjunto de API de servicios web 'abierto' en base a los datos de OpenStreetMap con el término bastante no restrictivas (es decir, las condiciones siguen muy de cerca a la de la OSM):

http://developer.mapquest.com/web/products/open

7

Nadie parece haber mencionado aquí el Folleto API:
http://leafletjs.com/reference.html

+0

Esto realmente no responde lo que el autor preguntó. Quiere una forma de consultar OpenStreetMap, no mostrar un mapa. Leaflet es "una biblioteca de JavaScript de código abierto para mapas interactivos optimizados para dispositivos móviles", como se cita en su sitio web. –

Cuestiones relacionadas