2009-09-05 2 views

ответ

2

Да. API Overpass имеет функцию «Around», которая выполняет именно это (поиск элементов в радиусе данной точки). Вы можете комбинировать, что с другими требованиями (например, чтобы получить список определенного типа элемента):

http://wiki.openstreetmap.org/wiki/Overpass_API#Around

Например с помощью путепровода Turbo Апи (Список всех городов рядом из «Мансанареса, Испания» с широтой и долготой с радиусом 150 км, try it live!):

<osm-script output="json" timeout="25"> 
    <id-query {{nominatimArea:Spain}} into="area"/> 
    <query type="node"> 
    <has-kv k="place" modv="" v="town"/> 
    <around lat="38.996507" lon="-3.371946" radius="150000"/> 
</query> 

    <print e="" from="_" geometry="skeleton" limit="" mode="body" n="" order="id" s="" w=""/> 
</osm-script> 
6

Насколько я знаю, API не поддерживает это напрямую. Самый простой подход - select a (quasi-)rectangular bounding box, что ваш круг вписывается и использует его для извлечения ваших POI. Затем вы можете сделать расчет расстояния до каждой точки интереса и отбросить те, которые превышают ваш радиус. Это позволит удалить небольшую часть POI, которые лежат близко к углам окна, и поэтому не входят в ваш круг. Вы хотите сделать это в этом порядке, так что вам нужно будет делать расчет расстояний на относительно небольшом числе целевых местоположений.

Не забывайте, что ограничивающая рамка определяется длинными/длинными углами, поэтому она не является действительно прямоугольной. Линии долготы сходятся на полюсах, поэтому верхняя часть вашего ящика не такая же, как нижняя. Насколько это влияет на вас, зависит от того, насколько вы близки к полюсу (степень длинного ~ = (40000 км/360) * cos (лат)).

Если вы не требуете высшей точности, то вы рассчитываете свои расстояния, используя теорему Пифагора, помня о косинусной вариации по долготе и разнице в единицах фактора 2 (360 градусов долготы, но только 180 широт). Если вам нужна точность, вы попадаете в области spherical trigonometry, а также должны учитывать ellipsoidal earth. Вот online calculator, в комплекте с уравнениями и открытым исходным кодом, что полезно в этом отношении.

1

Вот документация: http://developers.cloudmade.com/wiki/geocoding-http-api/Documentation

Вот пример того, что вам нужно - HTML, JSON.

+0

Предоставлен ли CloudMade или требуется коммерческий контракт на производство? –

+0

Из FAQ: Вопрос: Кто-нибудь разрешает продавать и зарабатывать деньги с OpenStreetMap? A: Все данные в OpenStreetMap лицензированы для использования отдельными вкладчиками в соответствии с условиями лицензии Creative Commons Attribution Share Alike 2.0. Условия лицензии позволяют кому-либо повторно использовать данные любым способом, если они дают соответствующую атрибуцию. Это включает право перепродажи данных, так что да, любой может зарабатывать деньги с OpenStreetMap. – casper