Disponible con la extensión ArcGIS Indoors Maps.
ArcGIS Indoors es compatible con el rastreo de dispositivos mediante una capa de entidades personalizada alojada en un data store espaciotemporal asociado a su portal. Puede utilizar este servicio en lugar del servicio de rastreo de ubicación.
Precaución:
Este servicio solo admite la captura de rastreos de dispositivos (ubicaciones históricas). La característica que busca compañeros y su última ubicación conocida no está disponible con esta configuración.
La aplicación móvil Indoors siempre reporta las ubicaciones a la capa de entidades de rastreo de ubicación si está habilitado en su portal, incluso cuando configura una capa de entidades personalizada.
Esquema de entidades de rastreo de dispositivos
En la siguiente tabla se describen los campos y tipos de datos de la clase de entidad de rastreo:
Nombre de campo | Alias del campo | Tipo de datos | Descripción | Valores de muestra |
---|---|---|---|---|
actividad | Actividad | esriFieldTypeInteger | Actividad que reporta el dispositivo (fijo, ambulante, conducción, etc.) | 0, 1, 2, ... |
altitud | Altitud | esriFieldTypeDouble | Valor de altitud que reporta el receptor GPS del dispositivo | 0,5, 1,0, 5,0 |
app_id | Id. de aplicación | esriFieldTypeString | Nombre de la aplicación | ArcGIS Indoors (constante) |
background_mode | Modo en segundo plano | esriFieldTypeSmallInteger | Estado de la aplicación al ejecutarse en el dispositivo (en primer o segundo plano) | 0,1 |
battery_percentage | Porcentaje de batería | esriFieldTypeDouble | Carga de la batería que indica el dispositivo | 1-100 |
battery_state | Estado de la batería | esriFieldTypeInteger | Estado de la batería que indica el dispositivo (carga, descarga) | 1,2 |
curso | Curso | esriFieldTypeDouble | Dirección de rumbo relativa al norte verdadero | 0-359 |
device_id | Id. de dispositivo | esriFieldTypeString | Identificador único de un dispositivo que ejecuta la aplicación | GUID |
device_type | Tipo de dispositivo | esriFieldTypeString | Marca y modelo del dispositivo | iPhone 7, píxel 2 |
suelo | Suelo | esriFieldTypeInteger | Orden vertical notificado por el sistema de posicionamiento en interiores | 0, 1, 2 |
horizontal_accuracy | Precisión horizontal | esriFieldTypeDouble | Radio de incertidumbre de los valores de latitud y longitud en metros | 0,5, 1,0, 2,5 |
latitud | Latitud | esriFieldTypeDouble | Valor de latitud que reporta el receptor GPS del dispositivo | -90 a 90 |
location_source | Origen de ubicación | esriFieldTypeString | Fuente de la señal del sistema de posicionamiento en interiores notificada por ELSS | BLE, Wi-Fi, GPS |
location_timestamp | Marca de hora de ubicación | esriFieldTypeDate | Valor de fecha y hora en el que se publicó la información de ubicación | 21/2/2019, 10:46 PM |
longitud | Longitud | esriFieldTypeDouble | Valor de longitud que reporta el receptor GPS del dispositivo | -180 a 180 |
session_id | Id. de sesión | esriFieldTypeString | Valor que representa la sesión de rastreo | Nota de rastreo |
signal_strength | Potencia de señal | esriFieldTypeDouble | Potencia presente en una señal de radio recibida (RSSI) | -1, -90 |
velocidad | Velocidad | esriFieldTypeDouble | Velocidad de movimiento que reportan los sensores del dispositivo | 1,0 (metro por segundo) |
user_id | Id. de usuario | esriFieldTypeString | Nombre de usuario utilizado para iniciar sesión en la aplicación | usuario_Indoors |
vertical_accuracy | Precisión vertical | esriFieldTypeDouble | Precisión vertical del valor de altitud | 0,0, 0,5, 1,0 |
Crear la capa de entidades de rastreo de dispositivos
Debe configurarse una capa de entidades en su portal y crearse con el esquema de rastreo de dispositivos para almacenar datos de ubicación. Se recomienda un big data store espaciotemporal, puesto que se puede escalar para administrar grandes cantidades de datos de rastreo.
Configurar un data store espaciotemporal
Para configurar un almacén de datos espaciotemporales para su portal, siga estos pasos:
- Instale ArcGIS Data Store.
- Cree un data store espaciotemporal.
Nota:
Vaya a https://<my big data store>/arcgis/datastore/ para confirmar el estado de configuración y asegurarse de que aparezca el servidor de ArcGIS Enterprise especificado en el proceso de instalación.
Crear una capa de entidades
Para crear una capa de entidades para el rastreo de dispositivos, sigo estos pasos:
- Vaya a https://<my indoors portal>/portal/sharing/rest/login e inicie sesión con la cuenta del administrador principal.
- Vaya a https://<my indoors portal>/sharing/rest/content/users/<admin>/createService.
- Proporcione la plantilla JSON en el cuadro de texto Crear parámetros y haga clic en Crear servicio.
{ "name" : "DeviceTracking_BDS", "editorTrackingInfo": { "enableEditorTracking": true, "enableOwnershipAccessControl": true, "allowOthersToUpdate": false, "allowOthersToDelete": false, "allowOthersToQuery": false }, "capabilities" : "Create,Delete,Query,Update,Editing", options: {"dataSourceType":"spatiotemporal"} }
Nota:
Tome nota de la URL del servicio cuando se cree el servicio y asegúrese de que exista.
Crear una capa de entidades
Para crear una capa de entidades para el rastreo de dispositivos, sigo estos pasos:
- Vaya a https://<my indoors portal>/server/rest/admin/services/Hosted/<name>/FeatureServer/addToDefinition.
- Proporcione la plantilla JSON en el cuadro de texto Entrada y haga clic en 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 }] }
- Cuando el proceso se complete correctamente, vaya a https://<my indoors portal>/portal/home/content y asegúrese de que el elemento exista.
Configurar los ajustes de seguridad
Configure los ajustes de seguridad en la capa de entidades de rastreo de dispositivos en función de las necesidades de seguridad de su organización.
Para configurar los parámetros de seguridad, siga estos pasos:
- En su portal, haga clic en la pestaña Configuración.
- En la sección Capa de entidades, en la subsección Edición, active la casilla de verificación Habilitar edición.
- Si lo desea, active la casilla de verificación Hacer un seguimiento de las entidades creadas y actualizadas.
- En función de las políticas de almacenamiento y necesidades de seguridad de su organización, elija una de las opciones en la sección Qué tipo de edición se permite:
- Agregar y actualizar entidades
- Agregar, actualizar y eliminar entidades
Nota:
La opción Agregar entidades no se admite.
- Si activó la casilla de verificación Hacer un seguimiento de las entidades creadas y actualizadas, seleccione una opción de las secciones Qué entidades pueden ver los editores y Qué entidades pueden editar los editores:
- Los editores pueden ver todas las entidades
- Los editores solo pueden ver sus propias entidades
- Los editores no pueden ver ninguna entidad, ni siquiera las que han agregado
Se recomienda dejar la selección predeterminada de Los editores solo pueden ver sus propias entidades y Los editores solo pueden editar sus propias entidades para estas secciones.
Más información sobre cómo administrar la configuración del editor y sobre el rastreo del editor.
- Haga clic en Guardar.
Configurar los ajustes de uso compartido
Para agregar información de ubicación compartiendo la capa de entidades, siga estos pasos:
- Haga clic en la pestaña Descripción general y en Compartir.
Aparece el cuadro de diálogo Compartir.
- Comparta con los grupos o miembros del portal de su organización.
Sugerencia:
Defina la dirección URL de la página Descripción general como el campo Config Value de DEVICE_MONITOR_ENDPOINT_FEATURESERVICE en la tabla Indoors Configuration.Puede ver puntos de rastreo de dispositivos en un mapa web.
Preparar un mapa para el rastreo de dispositivos
El paquete de mapas móviles que utiliza su organización debe estar actualizado para activar la función de rastreo de dispositivos de las aplicaciones móviles.
Más información sobre cómo crear zonas de rastreo para el rastreo de dispositivos y configurar los ajustes de rastreo de dispositivos.
Ver datos de rastreo de dispositivos
Para crear un mapa web para ver los datos de rastreo y compartirlos con los miembros de su organización, siga estos pasos:
- En su portal, haga clic en Contenido y en la pestaña Mi contenido.
- Haga clic en Crear > Mapa.
- Seleccione el mapa recién creado y haga clic en Abrir en Map Viewer.
- Haga clic en Agregar y agregue la capa de entidades de rastreo de dispositivos.
- Acerque su sitio y haga clic en Guardar.
- Haga clic en Compartir y seleccione los miembros con los que quiere compartir el mapa.
- Haga clic en Hecho.
Crear un cuadro de mando
Un cuadro de mando es una vista de los datos compartidos de la ubicación del dispositivo que puede utilizar para supervisar eventos o actividades. Los cuadros de mando muestran varias visualizaciones que trabajan juntas en una sola pantalla. Ofrecen una visión global de los datos para facilitar su gestión. Puede crear un cuadro de mando que le ayude a monitorizar datos de rastreo de dispositivos.