Доступно с дополнительным модулем ArcGIS Indoors Maps.
ArcGIS Indoors поддерживает публикацию местоположения устройства через пользовательский векторный слой, размещенный в хранилище пространственно-временных больших данных, которое связано с порталом. Вы можете использовать этот сервис вместо сервиса Location Sharing.
Внимание:
Этот сервис поддерживает только сбор треков от устройств (исторические местоположения). Функция поиска по коллегам и их последних известных местоположений в данном приложении недоступна.
Мобильное приложение Indoors всегда отправляет сведения о местоположениях в сервис объектов Location Sharing, если он включен на портале, даже когда вы настроили пользовательский векторный слой.
Схема объектов отслеживания устройств
В следующей таблице описаны поля и типы данных класса объектов отслеживания:
Имя поля | Псевдоним поля | Тип данных | Описание | Примеры значений |
---|---|---|---|---|
действие | Действие | esriFieldTypeInteger | Активность, передаваемая устройством (на месте, пешком, на автомобиле и др.) | 0, 1, 2, ... |
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 | Вертикальный порядок, передаваемый системой внутреннего позиционирования | 0, 1, 2 |
horizontal_accuracy | Горизонтальная точность | esriFieldTypeDouble | Радиус неточности по широте и долготе в метрах | 0,5, 1,0, 2,5 |
latitude | Latitude | esriFieldTypeDouble | Значение широты, передаваемое приемником GPS на устройстве | От -90 до 90 |
location_source | Источник данных о местоположении | esriFieldTypeString | Источник сигнала системы внутреннего позиционирования, передаваемый 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, указанный в процессе инсталляции, находится в списке.
Создать векторный слой
Чтобы создать векторный слой для отслеживания устройства, выполните следующие шаги:
- Перейдите в 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.
- Щелкните Добавить и добавьте векторный слой отслеживания устройств.
- Приблизьтесь к нужному объекту и нажмите Сохранить.
- Щёлкните Общий доступ и выберите участников, которым необходимо открыть общий доступ к карте.
- Щелкните Готово.
Создание операционной панели
Операционная панель - это вариант представления данных публикации местоположения устройства, которую можно использовать для отслеживания событий и активности. Панели мониторинга представляют разные варианты визуализации, которые одновременно видны на одном экране. Они предлагают комплексное представление данных, дающее понятие об управлении данными. Вы можете создать панель мониторинга, которая поможет просматривать данные публикации местоположения устройства.