ArcGIS Indoors Maps エクステンションで利用できます。
ArcGIS Indoors は、ポータルに関連付けられたビッグ データ ストアでホストされるカスタム フィーチャ レイヤーを介したデバイスの位置情報の共有に対応しています。 このサービスを位置情報の共有サービスの代わりに使用できます。
注意:
このサービスは、デバイス トラック (過去の位置) の収集のみサポートしています。 このセットアップでは、同僚の現在地や最新位置を検索する機能は使用できません。
カスタム フィーチャ レイヤーを構成している場合でも、ポータルで位置情報の共有フィーチャ レイヤーが有効になっていれば、Indoors モバイル アプリは位置トラッキング フィーチャ レイヤーに位置を常に報告します。
デバイスのトラッキング フィーチャ スキーマ
次の表に、トラッキング フィーチャクラスのフィールドとデータ タイプを示します。
フィールド名 | フィールド エイリアス | データ タイプ | 説明 | サンプル値 |
---|---|---|---|---|
activity | アクティビティ | esriFieldTypeInteger | デバイスから報告されるアクティビティ (静止中、徒歩移動中、運転中など) | 0, 1, 2, ... |
altitude | Altitude | esriFieldTypeDouble | デバイスの GPS レシーバーから報告される高度値 | 0.5, 1.0, 5.0 |
app_id | App 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、WiFi、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 (秒速 1 メートル) |
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 に移動してアイテムが存在することを確認します。
セキュリティ設定の構成
組織のセキュリティ ニーズに応じ、デバイスのトラッキング フィーチャ レイヤーのセキュリティ設定を構成します。
セキュリティ設定を構成するには、次の手順を実行します。
- ポータルで [設定] タブをクリックします。
- [フィーチャ レイヤー] セクションの [編集] サブセクションで [編集の有効化] チェックボックスをオンにします。
- 必要に応じ、[作成および更新されたフィーチャを記録] チェックボックスをオンにします。
- 組織のストレージ ポリシーとセキュリティのニーズに応じて、[どのような種類の編集が許可されていますか] セクションでいずれかのオプションを選択します。
- フィーチャの追加および更新
- フィーチャの追加、更新、削除
注意:
[フィーチャの追加] オプションはサポートされていません。
- [作成および更新されたフィーチャを記録] チェックボックスをオンにした場合、[どのフィーチャを編集者は閲覧できますか] および [どのフィーチャを編集者は編集できますか] セクションでオプションを選択します。
- 編集者は、すべてのフィーチャを閲覧できる
- 編集者は、各自が所有するフィーチャのみを閲覧できる
- 編集者は、自身が追加したフィーチャも含め、一切のフィーチャを表示することはできません。
- [保存] をクリックします。
共有設定の構成
フィーチャ レイヤーの共有によって位置情報を追加するには、次の手順を実行します。
- [概要] タブをクリックして、[共有] をクリックします。
[共有] ダイアログ ボックスが表示されます。
- 組織のポータルのメンバーやグループと共有します。
ヒント:
Config ValueIndoors Configuration テーブルの DEVICE_MONITOR_ENDPOINT_FEATURESERVICE のフィールドとして、[概要] ページの URL を設定します。Web マップでデバイスのトラッキング ポイントを確認できます。
デバイスのトラッキング用のマップの準備
モバイル アプリでデバイスのトラッキング機能を有効化するには、組織が使用するモバイル マップ パッケージを更新する必要があります。
デバイスのトラッキングのトラッキング ゾーンの作成とデバイスの位置情報の共有設定の構成の詳細をご覧ください。
デバイスのトラッキング データの表示
トラッキング データを表示し、組織のメンバーと共有するための Web マップを作成するには、次の手順を実行します。
- ポータルで [コンテンツ] をクリックし、[マイ コンテンツ] タブをクリックします。
- [作成] > [マップ] をクリックします。
- 新規作成したマップを選択し、[Map Viewer で開く] をクリックします。
- [追加] をクリックし、デバイスの追跡フィーチャ レイヤーを追加します。
- サイトにズームし、[保存] をクリックします。
- [共有] をクリックして、マップを共有するメンバーを選択します。
- [完了] をクリックします。
ダッシュボードの作成
ダッシュボードは、イベントまたはアクティビティの監視に使用できるデバイスの位置情報の共有データを表示します。 ダッシュボードは、1 つの画面上で、連携して機能する複数のビジュアライゼーションを表示します。 ダッシュボードは、データを包括的に表示して、データ管理のための洞察を提供します。 デバイスの位置情報の共有データをモニタリングするときに役立つダッシュボードを作成できます。