Enterprise - настройка пользовательского векторного слоя для отслеживания (дополнительно)

Доступно для организации 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

Создание векторного слоя отслеживания устройства

Векторный слой должен быть настроен на вашем портале со схемой отслеживания устройства, чтобы в него записывались данные о местоположении. Рекомендуется использовать хранилище пространственно-временных больших данных, поскольку оно может масштабироваться под хранение больших объемов данных об отслеживании.

Настройка хранилища пространственно-временных данных

Выполните следующие шаги, чтобы настроить хранилище пространственно-временных данных на портале.

  1. Установите ArcGIS Data Store.
  2. Создание хранилища пространственно-временных данных
    Примечание:

    Перейдите в https://<my big data store>/arcgis/datastore/, чтобы подтвердить статус конфигурации и убедиться, что сервер ArcGIS Enterprise или ArcGIS Online, указанный в процессе инсталляции, находится в списке.

Создать векторный слой

Создайте векторный слой для отслеживания устройства.

  1. Перейдите в https://<my indoors portal>/portal/sharing/rest/login и выполните вход от имени учетной записи основного администратора.
  2. Перейдите в https://<my indoors portal>/sharing/rest/content/users/<admin>/createService.
  3. Введите шаблон .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 сервиса, когда он создается и убедитесь, что он существует.

Создать векторный слой

Создайте векторный слой для отслеживания устройства.

  1. Перейдите в https://<my indoors portal>/server/rest/admin/services/Hosted/<name>/FeatureServer/addToDefinition.
  2. Введите шаблон .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
                    }]
    }
  3. Перейдите в https://<my indoors portal>/portal/home/content и убедитесь, что элемент появился после успешного завершения процесса.

Настройка параметров безопасности

Настройте параметры безопасности для векторного слоя отслеживания устройства в зависимости от требований к безопасности в вашей организации.

  1. На портале щелкните вкладку Настройки.
  2. В разделе Векторный слой в подразделе Редактирование поставьте отметку для опции Включить редактирование.
  3. Дополнительно можно поставить отметку для опции Отслеживать, кто создал и последний раз обновил объекты.
  4. В зависимости от правил хранения в организации и требований к безопасности, выберите одно из следующего в разделе Какой тип редактирования разрешен:
    • Добавить и обновить объекты
    • Добавить, обновить или удалить объекты
    Примечание:

    В данной версии опция Добавлять объекты не поддерживается.

  5. Если вы отметили опцию Отслеживать, кто создал и последний раз обновил объекты, выберите нужные параметры в секциях Какие объекты могут видеть редакторы и Какие объекты могут править редакторы:
    • Редакторы могут видеть все объекты
    • Редакторы могут видеть только свои объекты
    • Редакторы не могут видеть ни одного объекта, даже если они сами их добавили
    Примечание:

    Рекомендуется в этих разделах оставить выбранным вариант по умолчанию Редакторы могут видеть только свои объекты и Редакторы могут редактировать только свои объекты.

    Более подробно об управлении настройками редактирования и отслеживании правок.

  6. Щелкните Сохранить.

Настройка параметров доступа

Чтобы добавить сведения о местоположении, опубликуйте векторный слой.

  1. Щелкните вкладку Обзор и выберите Общий доступ.

    Появится диалоговое окно Общий доступ.

  2. Откройте доступ для участников портала или групп.
    Подсказка:

    Укажите URL страницы Обзор как Config Valueполе для DEVICE_MONITOR_ENDPOINT_FEATURESERVICE в таблице Indoors Configuration. Теперь вы можете просматривать точки отслеживания устройств в веб-карте.

Подготовка карты для отслеживания устройств

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

Более подробно о создании зон отслеживания для отслеживания устройств и настройке параметров публикации местоположений устройств.

Просмотр данных об отслеживании устройств

Вы можете создать веб-карту для просмотра данных отслеживания и предоставления этих сведений участникам вашей организации.

  1. На портале щелкните Ресурсы и перейдите на вкладку Мои ресурсы.
  2. Щелкните Создать > карту.
  3. Выберите создание новой карты и затем нажмите Открыть в Map Viewer.
  4. Щелкните Добавить и добавьте векторный слой отслеживания устройств.
  5. Приблизьтесь к нужному объекту и нажмите Сохранить.
  6. Щёлкните Общий доступ и выберите участников, которым необходимо открыть общий доступ к карте.
  7. Щелкните Готово.

Создание операционной панели

Операционная панель - это вариант представления данных публикации местоположения устройства, который помогает отслеживать события и активность. Панели мониторинга представляют разные варианты визуализации, которые одновременно видны на одном экране. С их помощью можно настроить вариант для визуального сравнения и изучения ваших данных, чтобы упростить процесс принятия решения. Вы можете создать панель мониторинга, которая поможет просматривать данные публикации местоположения устройства.

Связанные разделы