Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

ru:local:remoteapi1504:codesamples:search [20/05/2014 11:49] (текущий)
Строка 1: Строка 1:
 +{{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"//​.
Follow us on Facebook Gurtam Wialon Twitter Gurtam Wialon info@gurtam.com   |   Copyright © 2002-2019 Gurtam