2022年4月11日 |
これも既に紹介しましたが、Valueだけを取り出すこともできます。例えば以下となります。
|
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'q=address.streetAddress==%e9%95%b7%e6%b2%bc%e7%94%ba%32%30%32%2d%35' -d 'options=values' |
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'q=address.streetAddress==%e9%95%b7%e6%b2%bc%e7%94%ba%32%30%32%2d%35' -d 'options=values'
[[{"streetAddress":"長沼町202-5","addressLocality":"八王子市","addressRegion":"東京都","postalCode":"1920907"},{"type":"Point","coordinates":[139.37158,35.64226]},"ローソン八王子長沼町店"]]
PS C:\Users\owner> |
エンドポイントに"value"を指定した場合もValueだけを取り出せましたが、一件のEntityしか取り出せませんでした。この方法だと、幾つものデータを一度に取り出せますね。 |
|
5.6.9.特定Attributeのフィルタリング |
|
2022年4月11日 |
既に特定Entityの特定Attributeを取り出す方法は説明しましたが、ここではEntityを特定しない方法を紹介します。欲しいAttributeを"attrs=<アトリビュート名>"で指定します。例えば、以下となります。
|
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=values' -d 'attrs=name' -d 'type=Store' |
この例ではStoreが3件格納されていたため、3件のNameが返却されています。
|
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=values' -d 'attrs=name' -d 'type=Store'
[["ローソン八王子長沼町店"],["セブンイレブン呉市吉浦店"],["ファミリーマート日野北野街道店"]]
PS C:\Users\owner> |
複数のValueを一度に取り出す場合は、カンマを挟んで複数のAttribute名を並べます。例えば以下となります。
|
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=values' -d 'attrs=name,description' -d 'type=Store'
|
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=values' -d 'attrs=name,description' -d 'type=Store'
[["ローソン八王子長沼町店"],["セブンイレブン呉市吉浦店","呉市吉浦の国道31号線沿いのコンビニエンスストア"],["ファミリーマート日野北野街道店","日野市平山の北野街道沿いのコンビニエンスストア"]]
PS C:\Users\owner> |
Attributeを検索したくない場合は__noneを指定します。例えば、以下となります。
|
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=values' -d 'attrs=__none' -d 'type=Store'
|
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=values' -d 'attrs=__none' -d 'type=Store'
[[],[],[]]
PS C:\Users\owner> |
みっつあるという事だけがわかります。また、optionsをcountすると以下が検索されます。
|
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=count' -d 'attrs=__none' -d 'type=Store'
|
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'options=count' -d 'attrs=__none' -d 'type=Store'
[{"id":"urn:ngsi-ld:Store:001","type":"Store"},{"id":"urn:ngsi-ld:Store:002","type":"Store"},{"id":"urn:ngsi-ld:Store:003","type":"Store"}]
PS C:\Users\owner> |
この様に、特別なAttributeである、idとtypeだけが返却されます。 |
|
|
2022年8月15日 |
StoreのEntityを作成した際、locationのtypeをGeoLocationではなく、geo:jsonとしたのは、この座標によるフィルタリングを動かうためでした。fiware/orionでは、特定の座標からの距離でフィルタリングする事が出来ますが、そのためにはEntityを格納するときに、geo:jsonとしておく必要があります。Sotore001の座標は、八王子市の[139.37158,35.64226]で、Store003は日野市の[139.38879540047748,35.65005167131512]でした、ちょうどこの間の場所に平山城址公園駅があり、その座標は[139.380319,35.647922]なので、ここからの距離でフィルタリングしましょう。その際の形式は例えば以下となります。
|
|
curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'georel=near;maxDistance:<距離>' -d 'geometry=point' -d 'coords=35.647922,139.380319' -d 'attrs=__none' |
座標の表現が、緯度と経度が逆になっている事に注意してください。また、<距離>はメートル単位の数値です。
例えば、以下の様になります。
|
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'georel=near;maxDistance:1000' -d 'geometry=point' -d 'coords=35.647922,139.380319' -d 'attrs=__none'
[{"id":"urn:ngsi-ld:Store:003","type":"Store"}]
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'georel=near;maxDistance:2000' -d 'geometry=point' -d 'coords=35.647922,139.380319' -d 'attrs=__none'
[{"id":"urn:ngsi-ld:Store:003","type":"Store"},{"id":"urn:ngsi-ld:Store:001","type":"Store"}]
PS C:\Users\owner> curl -G -X GET 'http://localhost:1026/v2/entities' -d 'type=Store' -d 'georel=near;maxDistance:1000000' -d 'geometry=point' -d 'coords=35.647922,139.380319' -d 'attrs=__none'
[{"id":"urn:ngsi-ld:Store:003","type":"Store"},{"id":"urn:ngsi-ld:Store:002","type":"Store"},{"id":"urn:ngsi-ld:Store:001","type":"Store"}]
PS C:\Users\owner> |
1,000メートルの時にはStore003だけが、2,000メートルの時にはStore003に加えてStore001が、そしてそれを1,000,000メートル、つまり1,000キロメートルすると、3件とも検索されました。 |
|
|