ハンズオン詳細...openlayers mapの設定 openlayers mapのsettingsを選択し、 initial...
TRANSCRIPT
1 © NEC Corporation 2019
ハンズオン 詳細
2019年9月
NEC
NECxさくらインターネット データ流通実証実験
あなたのデータ活用してみませんか?データ流通プラットフォームによるデータ可視化のハンズオンセミナー (大阪, 東京, 福岡)
ハンズオン
GUI編
WireCloudへのログイン 3
WireCloudチュートリアル 8
AEDオープンデータの可視化 13
データ変換ツール 25
Web API編
curlコマンドを使ったオープンデータへのアクセス 32
4 © NEC Corporation 2019
WireCloudへのログイン (1/4)
①https://wirecloud.fiware-testbed.jp/ にアクセスして、右上の Sign in をクリック
ログイン
6 © NEC Corporation 2019
WireCloudへのログイン (3/4)
③初回のログイン時のみ、WireCloudへのアクセスを確認する画面が表示されます。Authorizeをクリックしてください
ログイン
9 © NEC Corporation 2019
WireCloudチュートリアル (1/4)
WireCloudのWidget, operator, wiring の概念を理解するためのチュートリアルです
画面右上の▼のメニューから、Tutorials->Basic concepts を選択して、画面の指示に従ってください。
チュートリアル
12 © NEC Corporation 2019
WireCloudチュートリアル (4/4)
チュートリアルが一通り終了したら、“Video Player”のWidgetを追加して、ビデオを再生できるようWiringしてください
チュートリアル
14 © NEC Corporation 2019
AED(自動体外式除細動器)オープンデータの可視化
画面中央上のハンバーガーアイコン(三)をクリックして、New workspace を選択して作成します。ワークスペースの名前を設定してください
AED可視化
15 © NEC Corporation 2019
OpenLayers Map Widgetの追加
ハンバーガーアイコンの右側のAdd componentsアイコンを選び、左側の一覧から、OpenLayers Map Widgetを追加します。(+) を選択
AED可視化
17 © NEC Corporation 2019
Wiring画面に移動
ハンバーガーアイコンの右側のFind componentsアイコンを選び、Wiringのエリアに、WidgetsとOperatorを追加します。
AED可視化
21 © NEC Corporation 2019
データソース(NGSI source)を設定
項目 設定値
NGSI server URL https://orion.fiware-testbed.jp/
NGSI proxy URL https://ngsiproxy.fiware-testbed.jp
FIWARE-Service NEC
FIWARE-ServicePath /fukuoka_aed
NGSI entity types PointOfInterest
Id pattern .*
AED可視化
22 © NEC Corporation 2019
OpenLayers Mapの設定
OpenLayers MapのSettingsを選択し、Initial LocationとInitial Zoom Levelを設定してください
AED可視化
項目 設定値
Initial Locaton 130.421447, 33.588905
Initial Zoom Level 12
24 © NEC Corporation 2019
実行画面 AED可視化
※サンプルデータの出典福岡市 AED https://ckan.open-governmentdata.org/dataset/401307_aed
28 © NEC Corporation 2019
データ変換ツールの準備 (3/3)
”Extract from gird”を選択するとWidgetがワークスペース全体に広がり、操作しやすくなります
データ変換ツール
31 © NEC Corporation 2019
データの変換 (3/3) データ変換ツール
※サンプルデータの出典加古川市 オープンデータカタログサイト 防災関連施設https://opendata-api-kakogawa.jp/ckan/dataset/disastermanagementfacilities
33 © NEC Corporation 2019
curlコマンドを使ったオープンデータへのアクセス
福岡AEDのNGSI形式のオープンデータにコマンドラインからアクセスすることで、NGSI APIの基本を試すことができます
▌内容
トークン取得
エンティティの取得
エンティティ件数の取得
ジオフィルタリング
▌ハンズオンの手順
https://documents.fiware-testbed.jp/opendata/を開き、説明にしたがって、オープンデータにアクセスしてください
34 © NEC Corporation 2019
オープンデータへのアクセス例 (1/12)
ckan.fiware-testbed.jpではNGSI APIでアクセスできるオープンデータを公開しています。この中にある ”福岡市 AED (NGSI)” オープンデータへNGSI APIを使ってアクセスを試してみます。
まず、https://ckan.fiware-testbed.jp/dataset/401307_aed/resource/bb54bdd0-5a7d-4bac-a47a-a6f770d36104にアクセスして、データのURL、Tenant、Service Pathを確認します。
以下のような内容でした。
URL: https://orion.fiware-testbed.jp/v2/entities?type=PointOfInterestTenant: NECService Path: /fukuoka_aed
35 © NEC Corporation 2019
アクセスの前にトークンを取得します。次にスクリプトで取得できます。
$ curl -s https://orion.fiware-testbed.jp/token ¥-H ‘Content-type: application/json’ ¥-d @- <<EOF | jq{“username”: “[email protected]”,“password”: “xxxxxxxxxxxxxxxxx”
}EOF
実行すると以下のようなレスポンスがあります。
{access_token”: “ad95d1aa30ff98a7b62452b5aa63b795ef08e2e1”,“token_type”: “Bearer”,“expires_in”: 3599,“refresh_token”: “1bedde200cfca09ddc0172b647f825bd3287428b”
}
access_tokenがAPI実行時に必要なトークンです。環境変数に登録します。
$ export TOKEN=ad95d1aa30ff98a7b62452b5aa63b795ef08e2e1
オープンデータへのアクセス例 (2/12)
アクセストークンの取得と環境変数への登録
36 © NEC Corporation 2019
オープンデータへのアクセス例 (3/12)
エンティティの確認
どんなエンティティがあるか確認してみます。先ほど、ckanのページで確認した、URL、Tenant、Service Pathを使います。
$ curl -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” https://orion.fiware-testbed.jp/v2/entities?type=PointOfInterest | jq .[].id“fukuoka-aed-0001”“fukuoka-aed-0002”“fukuoka-aed-0003”“fukuoka-aed-0004”“fukuoka-aed-0005”“fukuoka-aed-0006”“fukuoka-aed-0007”“fukuoka-aed-0008”“fukuoka-aed-0009”“fukuoka-aed-0010”“fukuoka-aed-0011”“fukuoka-aed-0012”“fukuoka-aed-0013”“fukuoka-aed-0014”“fukuoka-aed-0015”“fukuoka-aed-0016”“fukuoka-aed-0017”“fukuoka-aed-0018”“fukuoka-aed-0019”“fukuoka-aed-0020”
fukuoka-aed-XXXX というエンティティが多数登録されているようです。orionは、1回のクエリで既定では先頭の最大20件のエンティティを返します。
37 © NEC Corporation 2019
オープンデータへのアクセス例 (4/12)
エンティティの登録件数の確認
20件以上のエンティティがある場合、countオプションでトータルの件数がわかり、offsetとlimitのオプションで、任意の開始位置から、任意の件数のエンティティを取得できます。
それでは、何件登録されているか、確認してみます。オプション “options=count” をつけて、実行すると、レスポンスヘッダに、fiware-total-countが返されます。
curl -sS -i -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” https://orion.fiware-testbed.jp/v2/entities?options=count | grep fiware-total-countfiware-total-count: 996
996 件あるようです。最後の6件を取り出してみます。”offset=990&limit=6″ を指定して実行します。
$ curl -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” “https://orion.fiware-testbed.jp/v2/entities?offset=990&limit=6” | jq .[].id“fukuoka-aed-0991”“fukuoka-aed-0992”“fukuoka-aed-0993”“fukuoka-aed-0994”“fukuoka-aed-0995”“fukuoka-aed-0996”
38 © NEC Corporation 2019
オープンデータへのアクセス例 (5/12)
エンティティの登録件数の確認
20件以上のエンティティがある場合、countオプションでトータルの件数がわかり、offsetとlimitのオプションで、任意の開始位置から、任意の件数のエンティティを取得できます。
それでは、何件登録されているか、確認してみます。オプション “options=count” をつけて、実行すると、レスポンスヘッダに、fiware-total-countが返されます。
curl -sS -i -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” https://orion.fiware-testbed.jp/v2/entities?options=count | grep fiware-total-countfiware-total-count: 996
996 件あるようです。最後の6件を取り出してみます。”offset=990&limit=6″ を指定して実行します。
$ curl -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” “https://orion.fiware-testbed.jp/v2/entities?offset=990&limit=6” | jq .[].id“fukuoka-aed-0991”“fukuoka-aed-0992”“fukuoka-aed-0993”“fukuoka-aed-0994”“fukuoka-aed-0995”“fukuoka-aed-0996”
39 © NEC Corporation 2019
オープンデータへのアクセス例 (6/12)
ジオクエリの例
NGSIv2 APIには、ジオロケーション機能があり、ある場所の中心から15km近くに位置するすべてのエンティティなど、地理的な場所でフィルタリングすることができます。
これを試してみます。
エンティティのロケーションは、location属性が保持しています。fukuoka-aed-0020エンティティのlocationを確認してみます。
$ curl -s https://orion.fiware-testbed.jp/v2/entities/fukuoka-aed-0020 -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” | jq .location{“type”: “geo:json”,“value”: {“type”: “Point”,“coordinates”: [
130.294118,33.579836
]},“metadata”: {}}
40 © NEC Corporation 2019
オープンデータへのアクセス例 (7/12)
ジオクエリの例
住所は、address属性にあります。
$ curl -s https://orion.fiware-testbed.jp/v2/entities/fukuoka-aed-0020 -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” | jq .address{“type”: “StructuredValue”,“value”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “西区生の松原1丁目33番1号”,“@type”: “PostalAddress”
},metadata”: {}
}
41 © NEC Corporation 2019
オープンデータへのアクセス例 (8/12)
ジオクエリの例
次に、前ページのエンティティのロケーションを中心として、1km以内にあるAEDの設置場所を検索してみます。
以下のようなクエリ・パラメータを指定して実行します。georel=near;maxDistance:1000&geometry=point&coords=33.579836,130.294118
$ curl -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” “https://orion.fiware-testbed.jp/v2/entities?georel=near;maxDistance:1000&geometry=point&coords=33.579836,130.294118” | jq .[].id“fukuoka-aed-0020”“fukuoka-aed-0341”“fukuoka-aed-0499”“fukuoka-aed-0634”
中心の”fukuoka-aed-0020″を含め、4件のエンティティが見つかりました。
42 © NEC Corporation 2019
オープンデータへのアクセス例 (9/12)
ジオクエリの例
詳細情報として住所を確認してみます。
$ curl -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” “https://orion.fiware-testbed.jp/v2/entities?georel=near;maxDistance:1000&geometry=point&coords=33.579836,130.294118” | jq .[].address
{“type”: “StructuredValue”,“value”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “西区生の松原1丁目33番1号”,“@type”: “PostalAddress”},“metadata”: {}}{“type”: “StructuredValue”,“value”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “西区生の松原3丁目9番1号”,“@type”: “PostalAddress”},“metadata”: {}}{
“type”: “StructuredValue”,“value”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “西区生の松原3丁目9番2号”,“@type”: “PostalAddress”},“metadata”: {}}{“type”: “StructuredValue”,“value”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “西区上山門3-5-1”,“@type”: “PostalAddress”},“metadata”: {}}4件とも西区にあるAED設置場所が取得できました。
43 © NEC Corporation 2019
オープンデータへのアクセス例 (10/12)
コンパクトなレスポンス (key-value形式)
エンティティを取得する際、オプションにkeyValuesやvaluesを指定することで、コンパクトで簡単な表現でレスポンスを取得できます。まず、オプションを指定しないで、fukuoka-aed-0001のエンティティ情報を取得してみます。
curl “https://orion.fiware-testbed.jp/v2/entities/fukuoka-aed-0001” -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” | jq .{“id”: “fukuoka-aed-0001”,“type”: “PointOfInterest”,“address”: {“type”: “StructuredValue”,“value”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “博多区博多駅前四丁目19-7”,“@type”: “PostalAddress”},“metadata”: {}},“category”: {“type”: “StructuredValue”,“value”: [“41”],“metadata”: {}},“description”: {“type”: “Text”,“value”: “AED設置場所:1階玄関付近¥n使用時間:24時間使用可能”,“metadata”: {}
},“location”: {“type”: “geo:json”,“value”: {“type”: “Point”,“coordinates”: [130.419087,33.584888]},“metadata”: {}},“name”: {“type”: “Text”,“value”: “博多消防署”,“metadata”: {}},“source”: {“type”: “URL”,“value”: “https://ckan.open-governmentdata.org/dataset/aed”,“metadata”: {}},“subCategory”: {“type”: “Text”,“value”: “AED”,“metadata”: {}}}
44 © NEC Corporation 2019
オープンデータへのアクセス例 (11/12)
コンパクトなレスポンス (key-value形式)
次に、keyValuesオプションを指定して、fukuoka-aed-0001のエンティティ情報を取得してみます。オプションなしのレスポンスと比べ、簡単な表現になりました。
$ curl “https://orion.fiware-testbed.jp/v2/entities/fukuoka-aed-0001?options=keyValues” -s -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” | jq .{“id”: “fukuoka-aed-0001”,“type”: “PointOfInterest”,“address”: {“addressLocality”: “福岡市”,“addressCountry”: “JP”,“addressRegion”: “福岡県”,“streetAddress”: “博多区博多駅前四丁目19-7”,“@type”: “PostalAddress”},“category”: [“41”],“description”: “AED設置場所:1階玄関付近¥n使用時間:24時間使用可能”,“location”: {“type”: “Point”,“coordinates”: [130.419087,33.584888]},“name”: “博多消防署”,“source”: “https://ckan.open-governmentdata.org/dataset/aed”,“subCategory”: “AED”}
45 © NEC Corporation 2019
オープンデータへのアクセス例 (12/12)
コンパクトなレスポンス (key-value形式)
次に、valuesオプションを指定して、fukuoka-aed-0001のエンティティ情報を取得してみます。valuesオプションには、取得したい属性とその順番を指定できます。AEDの設置場所の名前(name)と説明(description)を取得してみます。
$ curl “https://orion.fiware-testbed.jp/v2/entities/fukuoka-aed-0001?options=values&attrs=name,description” -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” | jq .[“博多消防署”,“AED設置場所:1階玄関付近¥n使用時間:24時間使用可能”]
上記のようにname,descriptionの値のみを取得できました。
次に、属性の順序を逆にして、説明、名前の順で取得してみます。
$ curl “https://orion.fiware-testbed.jp/v2/entities/fukuoka-aed-0001?options=values&attrs=description,name” -sS -H “X-Auth-Token: $TOKEN” -H “Fiware-Service: NEC” -H “Fiware-ServicePath: /fukuoka_aed” | jq .[“AED設置場所:1階玄関付近¥n使用時間:24時間使用可能”,“博多消防署”]