|
|
ru:local:remoteapi1504:codesamples:search [20/05/2014 11:49] |
ru:local:remoteapi1504:codesamples:search [20/05/2014 11:49] (текущий) |
| {{indexmenu_n>2}} |
| ====== Поиск элементов ====== |
| Одними из наиболее часто используемых запросов в Wialon являются поисковые запросы. В Wialon возможны два вида поиска: |
| * [[#Поиск элемента по ID]], |
| * [[#Поиск элементов по критериям]]. |
| |
| //:!: Внимание!// Для запуска данного примера на Wialon Kit во всех запросах следует заменить **<nowiki>https://hst-api.wialon.com</nowiki>** на **<nowiki>https://kit-api.wialon.com</nowiki>**, а для входа в систему использовать логин и пароль своей учетной записи или логин и пароль демо-пользователя: //**kitdemo kitdemo**//. |
| |
| |
| |
| ===== Поиск элемента по ID ===== |
| Простейшим поиском, является поиск по идентификатору. Если известен ID элемента, то можно получить любую доступную информацию о нем, используя запрос [[../apiref/core/search_item|core/search_item]]. Например, нужно узнать последнее местоположение объекта с ID равным 34868. Для того, чтобы в ответе содержалось местоположение объекта нужно установить флаг 0x00000400, также установим флаг 0x00000001 для того, чтобы узнать имя объекта. (Подробнее о флагах и форматах данных можно почитать в разделе [[../apiref/format/format]].) |
| <code> |
| https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_item& |
| params={ |
| "id":34868, |
| "flags":1025 |
| }&sid=<your_sid> |
| </code> |
| |
| Результат выполнения: |
| <code javascript> |
| { |
| "item": { |
| "nm": "Bavarian Tractor", |
| "cls": 2, |
| "id": 34868, |
| "pos": { |
| "t": 1358761631, |
| "y": 53.9205504, |
| "x": 27.4921152, |
| "z": 238, |
| "s": 0, |
| "c": 102, |
| "sc": 10 |
| }, |
| "lmsg": { |
| "t": 1358761631, |
| "f": 3, |
| "tp": "ud", |
| "pos": { |
| "y": 53.9205504, |
| "x": 27.4921152, |
| "z": 238, |
| "s": 0, |
| "c": 102, |
| "sc": 10 |
| }, |
| "i": 0, |
| "p": { |
| "param22": 3, |
| "adc1": 12.352, |
| "pwr_ext": 12.356, |
| "param199": 0, |
| "param241": 25701, |
| "battery_charge": 0 |
| } |
| }, |
| "uacl": 638138188323 |
| }, |
| "flags": 1025 |
| } |
| </code> |
| |
| Из ответа видно что объект с заданным идентификатором называется "Bavarian Tractor" и последнее известное его местоположение это 53.9205504 с.ш. и 27.4921152 в.д. |
| |
| ===== Поиск элементов по критериям ===== |
| |
| Для более сложных критериев поиска используется запрос [[../apiref/core/search_items|core/search_items]]. Например, найти всех пользователей можно следующим запросом: |
| |
| <code> |
| https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items& |
| params={ |
| "spec":{ |
| "itemsType":"user", |
| "propName":"sys_name", |
| "propValueMask":"*", |
| "sortType":"sys_name" |
| }, |
| "force":1, |
| "flags":1, |
| "from":0, |
| "to":0 |
| }&sid=<your_sid> |
| </code> |
| Звездочка в параметре **"propValueMask"** означает, что в результирующем массиве будут присутствовать пользователи с любым значением поля **"sys_name"**, а это значит все доступные пользователи. Единица в параметре **"flags"** означает, что только минимальная информация о пользователе попадет в ответ (подробнее о флагах пользователя в разделе [[../apiref/format/user]]). Нули в параметрах **"from"** и **"to"** указывают на то, что вернуть следует всех найденных пользователей. |
| |
| |
| Результат выполнения: |
| <code javascript> |
| { |
| "searchSpec": { |
| "itemsType": "user", |
| "propName": "sys_name", |
| "propValueMask": "*", |
| "sortType": "sys_name" |
| }, |
| "dataFlags": 1, |
| "totalItemsCount": 1, |
| "indexFrom": 0, |
| "indexTo": 0, |
| "items": [{ |
| "nm": "test_6512789", |
| "cls": 1, |
| "id": 648548, |
| "uacl": -1 |
| }] |
| } |
| </code> |
| |
| Пример, рассмотренный выше, подходит для поиска всех элементов Wialon: ресурсов, ретрансляторов, объектов, групп объектов, пользователей и маршрутов. Но некоторые элементы, такие как ресурсы и маршруты содержат в себе подэлементы, например геозоны в ресурсе. Для поиска в подэлементах в спецификацию поиска нужно добавить еще один параметр - **"propType"**, и указать в нем значение //propitemname//, а в параметре |
| **"propName"** указать название подэлемента. Список всех подэлементов указан в разделе [[../apiref/core/search_items|core/search_items]]. |
| |
| В качестве примера рассмотрим ситуацию, в которой нужно найти ресурсы, в которых есть геозоны, название которых содержит фразу //"bing"//, и вернуть два первых найденных. Чтобы в ответе отображались геозоны ресурса, в дополнение к базовому флагу установим флаг 0x00001000. |
| |
| <code> |
| https://hst-api.wialon.com/wialon/ajax.html?svc=core/search_items& |
| params={ |
| "spec":{ |
| "itemsType":"avl_resource", |
| "propName":"zones_library", |
| "propValueMask":"*bing*", |
| "sortType":"zones_library", |
| "propType":"propitemname" |
| }, |
| "force":1, |
| "flags":4097, |
| "from":0, |
| "to":1 |
| }&sid=<your_sid> |
| </code> |
| |
| Результат выполнения: |
| <code javascript> |
| { |
| "searchSpec": { |
| "itemsType": "avl_resource", |
| "propName": "zones_library", |
| "propValueMask": "*bing*", |
| "sortType": "zones_library", |
| "propType": "propitemname" |
| }, |
| "dataFlags": 4097, |
| "totalItemsCount": 1, |
| "indexFrom": 0, |
| "indexTo": 0, |
| "items": [{ |
| "nm": "template_ru", |
| "cls": 3, |
| "id": 163266, |
| "zl": { |
| "1": { |
| "n": "Ветютнев", |
| "d": "", |
| "id": 1, |
| "f": 1, |
| "t": 2, |
| "e": 60774, |
| "b": { |
| "min_x": 43.5271002776, |
| "min_y": 49.7636455785, |
| "max_x": 43.5622908598, |
| "max_y": 49.7794993012, |
| "cen_x": 43.5446955687, |
| "cen_y": 49.7715724398 |
| } |
| }, |
| "2": { |
| "n": "Волгоград_конечный_пункт", |
| "d": "", |
| "id": 2, |
| "f": 1, |
| "t": 2, |
| "e": 62438, |
| "b": { |
| "min_x": 44.3872954375, |
| "min_y": 48.6329175554, |
| "max_x": 44.6300246245, |
| "max_y": 48.856592389, |
| "cen_x": 44.508660031, |
| "cen_y": 48.7447549722 |
| } |
| }, |
| "3": { |
| "n": "Михайловка_база", |
| "d": "", |
| "id": 3, |
| "f": 1, |
| "t": 2, |
| "e": 4566, |
| "b": { |
| "min_x": 43.107388, |
| "min_y": 50.009182, |
| "max_x": 43.294156, |
| "max_y": 50.119376, |
| "cen_x": 43.200772, |
| "cen_y": 50.064279 |
| } |
| }, |
| "4": { |
| "n": "Шмитовский", |
| "d": "", |
| "id": 4, |
| "f": 1, |
| "t": 1, |
| "e": 39844, |
| "b": { |
| "min_x": 37.5347102757, |
| "min_y": 55.7544919087, |
| "max_x": 37.5596537243, |
| "max_y": 55.7598140913, |
| "cen_x": 37.546216, |
| "cen_y": 55.757443 |
| } |
| }, |
| "5": { |
| "n": "bingo", |
| "d": "", |
| "id": 5, |
| "f": 1, |
| "t": 3, |
| "e": 44015, |
| "b": { |
| "min_x": 37.5537148786, |
| "min_y": 55.7585093867, |
| "max_x": 37.5576971214, |
| "max_y": 55.7607546133, |
| "cen_x": 37.555706, |
| "cen_y": 55.759632 |
| } |
| } |
| }, |
| "uacl": 2200454562339 |
| }] |
| } |
| </code> |
| |
| В результате был найден один ресурс, в котором 5 геозон, название одной из которых содержит фразу //"bing"//. |