Интересно, есть ли какой-либо API, который мог бы запросить данные OSM, например, Есть (lon_1, lat_1) на суше или в море? Или можно ли получить остров как четко определенный полигон? Единственное, что я видел до сих пор, - это только инструменты для визуализации данных OSM (генерирование плиток).Есть ли API для openstreetmap?
ответ
Я нашел отличный API для чтения данных Openstreetmap; Mapscript. Это интерфейс к MapServer, который способен читать файлы * .map и * .shp.Он может использовать пространственный индекс и, следовательно, потенциально чрезвычайно быстро. Я сделал случайный поиск полигонов (проверяя, пересекает ли многоугольник землю) файла формы береговой линии в течение 40 мс.
Конечно, javascript api называется openlayers.
Я знаю об openlayers, но разве это не только для отображения/работы с выделенными плитками? –
Да, есть api и xapi (extended api).
Я еще не использовал их.
Но есть и cloudmade api в OSM. Я немного поиграл с api python.
Я не уверен, если они могут помочь вам с вашей конкретной проблемой, но вы можете найти coastline рядом с вашей точкой. Если ваша точка находится в пределах полигона tagged natural=coastline, у вас есть остров (или континент) ...
Каков формат XML, который он предоставляет, и как я могу сделать это в растровом изображении в моем приложении? –
для создания iamge из xml и нужен рендерер. там несколько. см. здесь http://wiki.openstreetmap.org/wiki/Renderers – vikingosegundo
Для больших и/или сложных запросов [API переадресации] (https://wiki.openstreetmap.org/wiki/Overpass_API) - это путь. – scai
Вы можете использовать API геокодирования CloudMade для поиска острова в данных OpenStreetMap. API вернет геометрию результата по умолчанию, и это звучит для меня, что вы ищете. Например, Арран у берегов Шотландии можно найти по следующей запрос HTTP:.
http://geocoding.cloudmade.com/BC9A493B41014CAABB98F0471D759707/geocoding/find/Arran,UK.js?results=1
(и, как аккуратный маленький хак, меняя .js на .html просмотрит результат
Дополнительные документы и примеры в API находятся на developers.cloudmade.com/projects/show/geocoding-http-api Если вы не хотите использовать http api, тогда API абстракции доступны на нескольких языках: ruby, python, perl и др.
Я использовал экстракты OSM CloudMade, но имел некоторые проблемы с им. Например, Норвегия была обрезана слишком сильно, в результате чего некоторые дороги на западном побережье исчезли.
Теперь я предпочитаю API-интерфейс эстакады.
Положите что-то подобное в форму запроса на 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>
Помещенных границы области, которую вы хотите, в градусах, в с, п, ш и е атрибутами элемента.
MapQuest имеет набор API-интерфейсов веб-сервиса «Open» на основе данных OpenStreetMap с довольно unrestrictive Условия (т.е. условия внимательно следить, чтобы у OSM):
Никто не кажется, упоминали здесь листовка API:
http://leafletjs.com/reference.html
На самом деле это не отвечает на вопрос автора. Он хочет, чтобы запросить OpenStreetMap, а не отображать карту. Листовка - это «библиотека JavaScript с открытым исходным кодом для мобильных интерактивных карт», как указано на их веб-сайте. –
как насчет http://wiki.openstreetmap.org/wiki/Nominatim? Я использовал это и установил свой собственный сервер
Этот MapServer кажется довольно интересным. Спасибо – vikingosegundo
Вы должны добавить свое обновление в качестве ответа и принять его. –