2015-08-17 2 views
0

В соответствии с http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL запросами могут использоваться регулярные выражения как по значениям, так и по клавишам. Хотя у меня нет проблем с использованием регулярного выражения для значений, у меня проблема с ключами.overpass-api: regex on keys

Пример на вики, указанной выше, говорит (в числе других примеров):

/* finds addr:* tags with value exactly "Foo" */ 
node[~"^addr:.*$"~"^Foo$"];  

Итак, вот пример использования регулярных выражений на клавишах и значении.

Меня интересует ключ name. В частности, ключ name:en. Есть проблемы с поиском по имени. Не все имена указаны на английском языке, а для тех узлов/способов/отношений, имена которых не указаны на английском языке, нет гарантии, что будет тег name:en с английской версией имени.

В общем, нет никакого способа узнать заранее, если имя будет на английском языке или что есть тег name:en. Если вы запрашиваете только name или name:en, вы рискуете не нанести удар. (Конечно, поиск обоих не является гарантией успеха.)

У меня есть случай, когда я знаю name не удается, но name:en преуспевает. Это мой тестовый пример. Я могу запросить overpass-api.de/api/interpreter с помощью этого:

[out:json][timeout:25][bbox:33.465530,36.156006,33.608615,36.574516]; 

(
    node[name~"duma",i][place]; 
    way[name~"duma",i][place]; 
    >; 
    relation[name~"duma",i][place]; 
    node["name:en"~"duma",i][place]; 
    way["name:en"~"duma",i][place]; 
    >;relation["name:en"~"duma",i][place]; 
); 

out center; 

see it on overpass и она отлично работает («Дума» не найден через name, но встречается с name:en), но я считаю, он длительный и несколько повторяющийся.

Я хотел бы использовать регулярное выражение с тегами name и name:en, но либо сервер не понимает запрос, либо я просто использую неправильное регулярное выражение.

Используя пример, приведенный в вики: node[~"^addr:.*$"~"^Foo$"] Я пробовал:

[~"name|name:en"~"duma",i] 
[~"name.*"~"duma",i] 
[~"^name.*$"~"duma",i] 

и ряд других. Я даже подражал этому примеру с помощью [~"^name:.*"~"duma",i], чтобы узнать, не вернется ли что-нибудь.

Означает ли overpass-api.de регулярные выражения на ключах или я просто неправильно задаю регулярное выражение? Я не получаю ошибку от overpass-api.de, только координаты bbox и пустой результат. Обычно он очень строг, реагируя на запрос с форматированным форматированием. Заранее спасибо.

ответ

0

Это действительно ошибка в реализации API Overpass относительно нечувствительности к регистру, не зависящей от регистра ключевых слов, см. this Github ticket.

На данный момент, вы уже можете протестировать патч на поле развития:

http://overpass-turbo.eu/s/b1l

КСТАТИ: Если вы не нужно регистронезависимое регулярное выражение соответствия, это уже должно работать на overpass-api.de на сегодняшний день.

+0

Это нормально/можно заменить 'http://dev.overpass-api.de/api_mmd/' для 'http://overpass-api.de/api/interpreter?' пока патч регулярных выражений не появится? В моем проекте содержится окно ввода для запроса пользователя, а затем вызов командной строки на сервер для json. обычно i не будет беспокоить эстакаду для геокодирования. (nominatim через mapquest делает очень хорошо и обрабатывает нечувствительность к регистру). но если nominatim терпит неудачу, единственным вариантом является эстакада. я хотел бы включить патч в свой проект, если все в порядке. -go – user2831799

+0

Это может занять несколько недель, если не месяцев, пока патч не может быть поднят (есть некоторые другие масштабные изменения, ожидающие первого объединения). В общем случае экземпляр dev предназначен для тестирования, дающий обратную связь по исправлениям. Любые виды продуктивного использования не поощряются: служба может быть недоступна в любое время без предварительного уведомления, URL-адрес может постоянно меняться и т. Д. Нижняя строка: никаких гарантий в отношении dev-бокса нет. – mmd

+0

без проблем. спасибо за продолжение и за первоначальное разъяснение. мой двухэтапный запрос для «name», а затем и для «name: en» отлично работает. я думаю, в значительной степени требуется для использования широкой публикой, поэтому я буду хромать до тех пор, пока патч не размалывает его до цепочки. -go – user2831799