Доступно для организации ArcGIS, имеющей лицензию на дополнительный модуль ArcGIS Indoors Maps.
ArcGIS Indoors поддерживает публикацию местоположения устройства через пользовательский векторный слой, размещенный в хранилище пространственно-временных больших данных, которое связано с порталом. Вы можете использовать этот сервис вместо сервиса Location Sharing.
Внимание:
Этот сервис поддерживает только сбор треков от устройств (исторические местоположения). Функция поиска по коллегам и их последних известных местоположений в данном приложении недоступна.
Мобильное приложение Indoors всегда отправляет сведения о местоположениях в сервис объектов Location Sharing, если он включен на портале, даже когда вы настроили пользовательский векторный слой.
Схема объектов отслеживания устройств
В следующей таблице описаны поля и типы данных класса объектов отслеживания:
Имя поля | Псевдоним поля | Тип данных | Описание | Примеры значений |
---|---|---|---|---|
действие | Действие | esriFieldTypeInteger | Активность, передаваемая устройством (на месте, пешком, на автомобиле и др.) | 0, 1, 2, ... |
altitude | Altitude | esriFieldTypeDouble | Значение высоты, передаваемое приемником GPS на устройстве | 0,5, 1,0, 5,0 |
app_id | ID приложения | esriFieldTypeString | Название приложения | ArcGIS Indoors (константа) |
background_mode | Фоновый режим | esriFieldTypeSmallInteger | Состояние приложения при запуске на устройстве (активное или фоновое) | 0,1 |
battery_percentage | Процент заряда батареи | esriFieldTypeDouble | Уровень заряда батареи, передаваемый устройством | 1 -100 |
battery_state | Состояние батареи | esriFieldTypeInteger | Состояние батареи, передаваемое устройством (заряжается, не заряжается) | 1,2 |
course | Курс | esriFieldTypeDouble | Основное направление по отношению к истинному северу | 0 -359 |
device_id | ID устройства | esriFieldTypeString | Уникальный идентификатор устройства, на котором запущено приложение | GUID |
device_type | Тип устройства | esriFieldTypeString | Производитель и модель устройства | iPhone 7, Pixel 2 |
floor | Этаж | esriFieldTypeInteger | Вертикальный порядок, передаваемый IPS | 0, 1, 2 |
horizontal_accuracy | Горизонтальная точность | esriFieldTypeDouble | Радиус неточности по широте и долготе в метрах | 0,5, 1,0, 2,5 |
latitude | Latitude | esriFieldTypeDouble | Значение широты, передаваемое приемником GPS на устройстве | От -90 до 90 |
location_source | Источник данных о местоположении | esriFieldTypeString | Источник сигнала IPS, передаваемый ELSS | BLE, Wi-Fi, GPS |
location_timestamp | Временная метка местоположения | esriFieldTypeDate | Значение даты и времени передачи данных о местоположении | 2/21/2019, 10:46 PM |
longitude | Longitude | esriFieldTypeDouble | Значение долготы, передаваемое приемником GPS на устройстве | От -180 до 180 |
session_id | ID сеанса | esriFieldTypeString | Значение, представляющее сессию отслеживания | Примечание к отслеживанию |
signal_strength | Сила сигнала | esriFieldTypeDouble | Сила получения радиосигнала (RSSI) | -1, -90 |
speed | Скорость | esriFieldTypeDouble | Скорость передвижения, передаваемая сенсорами на устройстве | 1.0 (м/с) |
user_id | ID пользователя | esriFieldTypeString | Имя пользователя, которое использовалось для входа в приложение | user_Indoors |
vertical_accuracy | Вертикальная точность | esriFieldTypeDouble | Вертикальная точность значения атрибута | 0,0, 0,5, 1,0 |
Создание векторного слоя отслеживания устройства
Векторный слой должен быть настроен на вашем портале со схемой отслеживания устройства, чтобы в него записывались данные о местоположении. Рекомендуется использовать хранилище пространственно-временных больших данных, поскольку оно может масштабироваться под хранение больших объемов данных об отслеживании.
Настройка хранилища пространственно-временных данных
Выполните следующие шаги, чтобы настроить хранилище пространственно-временных данных на портале.
- Установите ArcGIS Data Store.
- Создание хранилища пространственно-временных данных
Примечание:
Перейдите в https://<my big data store>/arcgis/datastore/, чтобы подтвердить статус конфигурации и убедиться, что сервер ArcGIS Enterprise или ArcGIS Online, указанный в процессе инсталляции, находится в списке.
Создать векторный слой
Создайте векторный слой для отслеживания устройства.
- Перейдите в https://<my indoors portal>/portal/sharing/rest/login и выполните вход от имени учетной записи основного администратора.
- Перейдите в https://<my indoors portal>/sharing/rest/content/users/<admin>/createService.
- Введите шаблон .json в текстовом окне Создать параметры и щелкните Создать сервис.
{ "name" : "DeviceTracking_BDS", "editorTrackingInfo": { "enableEditorTracking": true, "enableOwnershipAccessControl": true, "allowOthersToUpdate": false, "allowOthersToDelete": false, "allowOthersToQuery": false }, "capabilities" : "Create,Delete,Query,Update,Editing", options: {"dataSourceType":"spatiotemporal"} }
Примечание:
Запомните URL сервиса, когда он создается и убедитесь, что он существует.
Создать векторный слой
Создайте векторный слой для отслеживания устройства.
- Перейдите в https://<my indoors portal>/server/rest/admin/services/Hosted/<name>/FeatureServer/addToDefinition.
- Введите шаблон .json в текстовом окне Входные данные и щелкните addToDefinition.
{ "layers": [{ "currentVersion": 10.7, "cimVersion": "2.3.0", "id": 0, "name": "DeviceTracking_BDS", "type": "Feature Layer", "parentLayer": null, "defaultVisibility": true, "minScale": 0, "maxScale": 0, "geometryType": "esriGeometryPoint", "description": "", "copyrightText": "", "editFieldsInfo": { "creationDateField": "created_date", "creatorField": "created_user", "editDateField": "last_edited_date", "editorField": "last_edited_user" }, "syncCanReturnChanges": true, "relationships": [], "isDataVersioned": false, "isDataArchived": false, "isDataBranchVersioned": false, "isCoGoEnabled": false, "supportsRollbackOnFailureParameter": true, "supportsStatistics": true, "supportsAdvancedQueries": true, "supportsValidateSQL": true, "supportsCoordinatesQuantization": true, "supportsCalculate": true, "advancedQueryCapabilities": { "supportsReturningQueryExtent": true, "supportsStatistics": true, "supportsDistinct": true, "supportsPagination": true, "supportsOrderBy": true, "supportsQueryWithDistance": true, "supportsLod": false, "supportsPaginationOnAggregatedQueries": true, "supportsQueryWithResultType": true, "supportsCountDistinct": true, "supportsReturningGeometryCentroid": false, "supportsHavingClause": true, "supportsTopFeaturesQuery": false, "supportsOrderByOnlyOnLayerFields": true }, "extent": { "xmin": "NaN", "ymin": "NaN", "xmax": "NaN", "ymax": "NaN", "spatialReference": { "wkid": 102100, "latestWkid": 3857, "xyTolerance": 0.001, "zTolerance": 0.001, "mTolerance": 0.001, "falseX": -2.204125862706707E7, "falseY": -3.3265068604224768E7, "xyUnits": 1.3538524994349548E8, "falseZ": -100000, "zUnits": 10000, "falseM": -100000, "mUnits": 10000 } }, "sourceSpatialReference": { "wkid": 102100, "latestWkid": 3857, "xyTolerance": 0.001, "zTolerance": 0.001, "mTolerance": 0.001, "falseX": -2.20412586270671E7, "falseY": -3.32650686042248E7, "xyUnits": 1.35385249943495E8, "falseZ": -100000, "zUnits": 10000, "falseM": 0, "mUnits": 1 }, "drawingInfo": { "renderer": { "type": "simple", "symbol": { "type": "esriSMS", "style": "esriSMSCircle", "color": [ 28, 130, 0, 255 ], "size": 4, "angle": 0, "xoffset": 0, "yoffset": 0, "outline": { "color": [ 0, 0, 0, 255 ], "width": 1 } } }, "scaleSymbols": true, "transparency": 0, "labelingInfo": null }, "hasM": false, "hasZ": true, "supportsVCSProjection": true, "allowTrueCurvesUpdates": false, "onlyAllowTrueCurveUpdatesByTrueCurveClients": true, "hasAttachments": false, "supportsApplyEditsWithGlobalIds": true, "htmlPopupType": "esriServerHTMLPopupTypeAsHTMLText", "objectIdField": "objectid", "globalIdField": "globalid", "displayField": "app_id", "typeIdField": "", "fields": [{ "name": "objectid", "type": "esriFieldTypeOID", "alias": "OBJECTID", "domain": null, "nullable": false, "editable": false, "sqlType": "sqlTypeInteger" }, { "name": "activity", "type": "esriFieldTypeInteger", "alias": "Activity", "domain": null, "editable": true, "nullable": false, "length": 10, "sqlType": "sqlTypeInteger" }, { "name": "altitude", "type": "esriFieldTypeDouble", "alias": "Altitude", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "app_id", "type": "esriFieldTypeString", "alias": "App ID", "domain": null, "editable": true, "nullable": false, "length": 255, "sqlType": "sqlTypeVarchar" }, { "name": "background_mode", "type": "esriFieldTypeSmallInteger", "alias": "Background Mode", "domain": null, "editable": true, "nullable": false, "length": 5, "sqlType": "sqlTypeSmallInt" }, { "name": "battery_percentage", "type": "esriFieldTypeDouble", "alias": "Battery Percentage", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "battery_state", "type": "esriFieldTypeInteger", "alias": "Battery State", "domain": null, "editable": true, "nullable": false, "length": 10, "sqlType": "sqlTypeInteger" }, { "name": "course", "type": "esriFieldTypeDouble", "alias": "Course", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "device_id", "type": "esriFieldTypeString", "alias": "Device ID", "domain": null, "editable": true, "nullable": false, "length": 256, "sqlType": "sqlTypeVarchar" }, { "name": "device_type", "type": "esriFieldTypeString", "alias": "Device Type", "domain": null, "editable": true, "nullable": false, "length": 255, "sqlType": "sqlTypeVarchar" }, { "name": "floor", "type": "esriFieldTypeInteger", "alias": "Floor", "domain": null, "editable": true, "nullable": false, "length": 10, "sqlType": "sqlTypeInteger" }, { "name": "horizontal_accuracy", "type": "esriFieldTypeDouble", "alias": "Horizontal Accuracy", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "latitude", "type": "esriFieldTypeDouble", "alias": "Latitude", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "location_source", "type": "esriFieldTypeString", "alias": "Location Source", "domain": null, "editable": true, "nullable": false, "length": 256, "sqlType": "sqlTypeVarchar" }, { "name": "location_timestamp", "type": "esriFieldTypeDate", "alias": "Location Timestamp", "domain": null, "editable": true, "nullable": false, "length": 29, "sqlType": "sqlTypeTimestamp" }, { "name": "longitude", "type": "esriFieldTypeDouble", "alias": "Longitude", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "signal_strength", "type": "esriFieldTypeDouble", "alias": "Signal Strength", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "session_id", "type": "esriFieldTypeString", "alias": "Session ID", "domain": null, "editable": true, "nullable": false, "length": 256, "sqlType": "sqlTypeVarchar" }, { "name": "speed", "type": "esriFieldTypeDouble", "alias": "Speed", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "user_id", "type": "esriFieldTypeString", "alias": "User ID", "domain": null, "editable": true, "nullable": false, "length": 256, "sqlType": "sqlTypeVarchar" }, { "name": "vertical_accuracy", "type": "esriFieldTypeDouble", "alias": "Vertical Accuracy", "domain": null, "editable": true, "nullable": false, "length": 38, "sqlType": "sqlTypeNumeric" }, { "name": "globalid", "type": "esriFieldTypeGlobalID", "alias": "GlobalID", "domain": null, "editable": false, "nullable": false, "length": 38, "sqlType": "sqlTypeVarchar" }, { "alias": "created_user", "name": "created_user", "length": 255, "domain": null, "nullable": true, "type": "esriFieldTypeString", "editable": false, "sqlType": "sqlTypeVarchar" }, { "alias": "created_date", "name": "created_date", "length": 29, "domain": null, "nullable": true, "type": "esriFieldTypeDate", "editable": false, "sqlType": "sqlTypeTimestamp" }, { "alias": "last_edited_user", "name": "last_edited_user", "length": 255, "domain": null, "nullable": true, "type": "esriFieldTypeString", "editable": false, "sqlType": "sqlTypeVarchar" }, { "alias": "last_edited_date", "name": "last_edited_date", "length": 29, "domain": null, "nullable": true, "type": "esriFieldTypeDate", "editable": false, "sqlType": "sqlTypeTimestamp" } ], "geometryField": { "name": "shape", "type": "esriFieldTypeGeometry", "alias": "Shape", "domain": null, "editable": true, "nullable": true, "defaultValue": null, "modelName": "Shape" }, "indexes": [{ "name": "r59_sde_rowid_uk", "fields": "OBJECTID", "isAscending": true, "isUnique": true, "description": "" }, { "name": "uuid_59", "fields": "GlobalID", "isAscending": true, "isUnique": true, "description": "" }, { "name": "a32_ix1", "fields": "Shape", "isAscending": true, "isUnique": true, "description": "" } ], "dateFieldsTimeReference": { "timeZone": "UTC", "respectsDaylightSaving": false }, "types": [], "templates": [{ "name": "DeviceTracking", "description": "", "prototype": { "attributes": { "vertical_accuracy": 0, "user_id": " ", "activity": 0, "altitude": 0, "app_id": " ", "background_mode": 0, "battery_percentage": 0, "battery_state": 0, "course": 0, "device_id": " ", "device_type": " ", "floor": 0, "horizontal_accuracy": 0, "latitude": 0, "location_source": " ", "location_timestamp": -2209161600000, "longitude": 0, "signal_strength": 0, "session_id": " ", "speed": 0 } }, "drawingTool": "esriFeatureEditToolPoint" }], "useStandardizedQueries": true, "standardMaxRecordCount": 32000, "tileMaxRecordCount": 8000, "maxRecordCountFactor": 1, "supportedQueryFormats": "JSON, geoJSON", "maxRecordCount": 2000, "allowGeometryUpdates": true, "hasMetadata": true, "supportsAttachmentsByUploadId": true, "hasStaticData": false, "supportsAsyncDelete": true }] }
- Перейдите в https://<my indoors portal>/portal/home/content и убедитесь, что элемент появился после успешного завершения процесса.
Настройка параметров безопасности
Настройте параметры безопасности для векторного слоя отслеживания устройства в зависимости от требований к безопасности в вашей организации.
- На портале щелкните вкладку Настройки.
- В разделе Векторный слой в подразделе Редактирование поставьте отметку для опции Включить редактирование.
- Дополнительно можно поставить отметку для опции Отслеживать, кто создал и последний раз обновил объекты.
- В зависимости от правил хранения в организации и требований к безопасности, выберите одно из следующего в разделе Какой тип редактирования разрешен:
- Добавить и обновить объекты
- Добавить, обновить или удалить объекты
Примечание:
В данной версии опция Добавлять объекты не поддерживается.
- Если вы отметили опцию Отслеживать, кто создал и последний раз обновил объекты, выберите нужные параметры в секциях Какие объекты могут видеть редакторы и Какие объекты могут править редакторы:
- Редакторы могут видеть все объекты
- Редакторы могут видеть только свои объекты
- Редакторы не могут видеть ни одного объекта, даже если они сами их добавили
Примечание:
Рекомендуется в этих разделах оставить выбранным вариант по умолчанию Редакторы могут видеть только свои объекты и Редакторы могут редактировать только свои объекты.
Более подробно об управлении настройками редактирования и отслеживании правок.
- Щелкните Сохранить.
Настройка параметров доступа
Чтобы добавить сведения о местоположении, опубликуйте векторный слой.
- Щелкните вкладку Обзор и выберите Общий доступ.
Появится диалоговое окно Общий доступ.
- Откройте доступ для участников портала или групп.
Подсказка:
Укажите URL страницы Обзор как Config Valueполе для DEVICE_MONITOR_ENDPOINT_FEATURESERVICE в таблице Indoors Configuration. Теперь вы можете просматривать точки отслеживания устройств в веб-карте.
Подготовка карты для отслеживания устройств
Пакет мобильной карты, который используется в организации, должен быть обновлен, чтобы можно было активировать функцию отслеживания устройств в мобильных приложениях.
Более подробно о создании зон отслеживания для отслеживания устройств и настройке параметров публикации местоположений устройств.
Просмотр данных об отслеживании устройств
Вы можете создать веб-карту для просмотра данных отслеживания и предоставления этих сведений участникам вашей организации.
- На портале щелкните Ресурсы и перейдите на вкладку Мои ресурсы.
- Щелкните Создать > карту.
- Выберите создание новой карты и затем нажмите Открыть в Map Viewer.
- Щелкните Добавить и добавьте векторный слой отслеживания устройств.
- Приблизьтесь к нужному объекту и нажмите Сохранить.
- Щёлкните Общий доступ и выберите участников, которым необходимо открыть общий доступ к карте.
- Щелкните Готово.
Создание операционной панели
Операционная панель - это вариант представления данных публикации местоположения устройства, который помогает отслеживать события и активность. Панели мониторинга представляют разные варианты визуализации, которые одновременно видны на одном экране. С их помощью можно настроить вариант для визуального сравнения и изучения ваших данных, чтобы упростить процесс принятия решения. Вы можете создать панель мониторинга, которая поможет просматривать данные публикации местоположения устройства.