Руководство по языку API Overpass позволяет использовать логические операторы при сопоставлении значения тега ... например: ["name"~"holtorf|Gielgen"]
будет возвращать любой объект с именем = holtorf или name = Gielgen.в API Overpass есть способ использовать логические операторы при существовании тегов?
Вы также можете комбинировать условия и они станут и ... так, например:
["name"]["name"="holtorf"]
. Средство поиска объектов, имеющих тег «имя», и имя тега равно «holtorf».
Но то, что я хочу, это оператор OR ... что-то вроде:
["name"="holtorf"]|["name:eng"holtorf"]
В моем конкретном приложении, я просто хочу знать, если есть какие-либо теги, которые начинаются с «именем» .. поэтому мне хотелось бы сделать это в API: ["^name"]
(причина в этом API «^» означает «начинается с»). Но, конечно, он ищет буквальное имя «^» и ничего не возвращает.
Есть ли способ обхода? не
К сожалению, может быть, я недоразумение ... но ты говоришь, что правильный способ сделать '[ "^"] имя' 'является [~ "^ имя. * $"]'? Я получаю сообщение «Ошибка: строка 10: ошибка синтаксического анализа: регулярное выражение для ключа может быть объединено только с регулярным выражением в качестве критерия значения». Меня не волнует «holtorf», я просто хочу найти любые объекты, у которых есть тег «name» или «name: en» или «name: fr» и т. Д. Спасибо! –
Извините, я не проверял вариант '[~"^name. * $ "=" Holtorf "]'. Просто используйте '[~"^name. * $ "~"^Holtorf $ "]' Если вы хотите, чтобы все объекты с именем: * и не заботились о значении, вам все равно придется использовать регулярное выражение для ключа и для значения (извините Я вводил вас в заблуждение с выражениями только для ключа). Например, '[~"^name:. * $ "~" ^. * $ "]' Примечание: я не уверен, должен ли я избегать ':' в regexp или нет. – dkiselev
И если у вас есть конечный набор ключей - используйте union: '(way [name]; way [" name: en "]; way [" name: fr "]; way [" name: and_so_on "];);' – dkiselev