RU:JOSM/Поиск

From OpenStreetMap Wiki
< RU:JOSM(Redirected from RU:JOSM/Search function)
Jump to navigation Jump to search

broom

Help (89606) - The Noun Project.svg

Поиск в JOSM представляет собой потрясающе продвинутую систему, которая получает от вас текст, преобразует его в древоподобную структуру и просеивает имеющиеся данные. На базовом уровне существуют токены совпадений, которые могут скомбинированы для формирования комплексных поисковых запросов.

Это чувствительные к регистру запросы, выполняемые непосредственно в поисковой строке.

Токены

Это список базовых токенов, которые удалось выявить из исходного кода программы:

Токен Значение
selected Ищет только среди объектов, которые на данный момент выделены.
modified Ищет только среди объектов, которые были изменены. Это как раз то, что будет передано на сервер в тот момент, когда вы нажмёте на кнопку "передать на сервер" ("upload"). Сюда также относятся вновь созданные объекты.
incomplete Ищет неполные объекты (например, участвующих в отношении, но не загруженных с сервера)
untagged Ищет объекты, у которых отсутсвуют теги. Наличие нефунциональных тегов, таких как created_by=* или note=* также игнорируется. (Учтите, что все точки без тегов в углах полигонов тоже относятся к области поиска. - прим. пер.)
child Ищет объекты, дочерние к другим объектам, например, точки, входящие в полигон.
type:node type:way type:relation Ищет объекты определённого типа.
user:имярек Ищет объекты, которые были изменены пользователем имярек (точное совпадение). Учтите, что при данном поиске JOSM использует информацию полученную с сервера, то есть правки локально изменённых вами, но ещё не переданных на сервер объектов не будут учитываться. Если имя пользователя содержит пробелы, ваш поисковый запрос также должен их содержать. Пример: user:"OSMF Redaction Account"
nodes:число
nodes:число1-число2
Ищет линии, содержащие точное число точек, или количество точек, попадающее в заданный промежуток (включительно).
id:значение Ищет объекты с ID значение. (Объекты, которые ещё не были загружены на сервер имеют ID 0).
ключ:значение Ищет объекты с ключом ключ и присвоенным ему значением значение. The key is an exact match but the value is a substring match. Both the key and the value may be double quoted strings (you have to use them if the key contains a colon).
ключ: Ищет объекты с ключом ключ вне зависимости от присвоенного ему значения.
значение Ищет данное значение в подстроке ключа или в значения или имени пользователя. Если искомое значение включает двоеточие, следует заключить значение в кавычки, чтобы избежать неправильной интерпретации.

Модификаторы

Сейчас существует всего один модификатор, знак минуса (-), который используется для того, чтобы инвертировать выборку. Учтите, что эффект от его применения может быть немного не таким, как вы ожидаете, потому что JOSM принимает во внимание про поиске всё, включая отдельные точки. Ознакомьтесь с нижеследующими примерами.

Пример Описание
-selection Ищет всё что не выделено.
-id:значение Ищет всё, кроме объектов с данным ID.
-ключ:значение Ищет всё, кроме объектов с данным ключом (точное совпадение) и данным значением (совпадение в подстроке). Учтите, что объекты без ключей вообще также будут возращены в результатах такого поиска.
ключ:-значение Ищет всё с данным ключом (точное совпадение), кроме объектов с данным значением (в подстроке).

Похоже, что есть ещё несколько модификаторов:

Первый символ задаёт режим:

Символ Описание
R Заменить (Replace)
A Добавить (Add)
D Удалить (Remove)
S В выделении (In selection)

Флаги: Следующий символ перед пробелом является флагом:

Символ Описание
C Учитывать регистр (Case sensitive)
R Регулярное выражение (Regexp)
A Все элементы (All elements)

Объединение

Существует два варианта объединения токенов, при помощи операторов AND (и) и OR (или). Не существует специального символа для оператора AND, вместо этого любое перечисление нескольких поисковых условий подряд будет значить, что все они должны выполняться. OR имеет приоритет над AND, таким образом запросы вида "a b OR c" и "b OR c a" дадут одинаковый результат.

Объединение Описание
токен токен Ищет то, что соответствует одновременно обоим токенам.
токен OR токен Ищет то, что соответствует хотя бы одному из заданных токенов.

Примеры

В случае, если вы считаете вышеописанное кромешным канцеляритом, вот несколько рабочих примеров, включая некоторые трюки:

highway unclassified Возвращает любые объекты, имеющие слова 'highway' и 'unclassified' как подстроки в полях ключа и значения.
highway:unclass Returns any object where the key 'highway' has a value with the substring 'unclass'.
-highway:unclassified This appears to match everything. You may be wondering why, since most roads aren't unclassified. The reason is that this matches everything that does not contain the 'unclassified' substring in the 'highway' tag (e.g. everything that doesn't have a 'highway' tag).
-highway:unclassified type:way This is better, now all the highways are unselected, but the waterway still are. For that you need:
-highway:unclassified type:way highway: Now you get just those ways which have a 'highway' tag.
selected -type:node Removes all nodes from the current selection.
selected OR type:node Adds all nodes to the current selection
selected OR type:node place:London Here the counter-intuitive choice of precedence rears its ugly head. You'd be tempted to interpret it as selected OR (type:node place:London) whereas it is actually interpreted as (selected OR type:node) place:London. What you need to do is...
selected OR (type:node place:London) This does what you expect, though you can achieve the same result by selecting "add to selection" in the search dialog box.
foo bar OR baz zap Beware: Juxtaposition (AND) has a lower precedence than OR. This will be interpreted as foo (bar OR baz) zap.
(foo bar) OR (baz zap) You can use parens to override default precedence. This will select the objects that match foo and bar, and also objects that match baz and zap.
"name:secret":"Foo \"the Baz\" Bar" If either the search key or value contain any special characters (like (, ), :, space) it needs to be enclosed in double quotes. The double quote character itself (") can be included in a quoted string by escaping it with a backslash (\). If a literal backslash needs to be included in the string it in turn needs to be escaped by another backslash.
type:node untagged -child Add nodes (type:node), without tags (untagged), not used (-child) in ways or relations (useful for cleaning up old GPS traces)

Good luck searching!