SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
近くを探す?

appengine ja night beer talk
あらかわ (@ashigeru)
テーマ
   座標(x, y)に近い点を探す
     App   Engineのデータストアでどうやる?




               appengine ja night beer talk - @ashigeru   2
App Engineのクエリの特性
   1次元のレンジスキャン
     1つの値を大小関係で並べて順に取り出すだけ
     開始地点(と終了地点)を選べる
     (x,   y)とかどう見ても2次元座標




               appengine ja night beer talk - @ashigeru   3
方法1: 離散化
   座標を一定の幅で区切ってブロックに
     付近のブロックに含まれているか調べる




         appengine ja night beer talk - @ashigeru   4
離散化の問題点
   濃度によってはダメ
     少ない→見つからない,                   多い→見つかりすぎ




          appengine ja night beer talk - @ashigeru   5
方法2: インメモリフィルタ
   2次元目はインメモリで処理する
     1次元目はデータストアフィルタでやる




         appengine ja night beer talk - @ashigeru   6
インメモリフィルタの問題点
   個数によってはダメ
     1次元目の結果が爆発しているかも




          appengine ja night beer talk - @ashigeru   7
空間充填曲線
   (x, y)から遠くに向かってスキャンしたい
     でも1次元のレンジスキャンしかできない



   空間を1本の線で一筆書きする
     空間充填曲線(Space Filling Curve)
     ヒルベルト曲線、Z曲線などが有名




             appengine ja night beer talk - @ashigeru   8
Z曲線 (1)
   平面の4点をZで結んでブロックにする
     むしろN




             appengine ja night beer talk - @ashigeru   9
Z曲線 (2)
   ブロック4つをさらにZで結んでブロック
    にする




          appengine ja night beer talk - @ashigeru   10
Z曲線 (3)
   これを繰り返すと平面上のすべての点を
    一筆書きできる




          appengine ja night beer talk - @ashigeru   11
空間充填曲線のスキャン (1)
   ある点から前後にスキャンする
     ただし、Z曲線の上でスキャン




          appengine ja night beer talk - @ashigeru   12
空間充填曲線のスキャン (2)
   最初のZになければ、ひとつ大きなZで探
    す




         appengine ja night beer talk - @ashigeru   13
空間充填曲線のスキャン (3)
   徐々にZを大きくしていけばいつか見つか
    る
     小→大で探すので、近い順に見つかる




         appengine ja night beer talk - @ashigeru   14
Z曲線の作り方 (1)
   それぞれの次元の値を2進数で書く




         appengine ja night beer talk - @ashigeru   15
Z曲線の作り方 (2)
   1ビットずつ取り出して並べ替える




         appengine ja night beer talk - @ashigeru   16
Z曲線の作り方 (3)
   繰り返して順になぞるとZ曲線になる




         appengine ja night beer talk - @ashigeru   17
多次元空間への拡張
   平面じゃなくて4次元とかでも同じ
     http://tiling.latest.ashigeru-demo.appspot.com/

     http://gist.github.com/398695


   4次元の得点空間で、近くの点を探す
    ≒ 得点が近い人を探す




                 appengine ja night beer talk - @ashigeru   18
Z曲線の問題点
   アライメントに左右される
     隣のZが意外と遠い
     なので「一番近いものを探す」というのは難
    しい
   超立方体の構造で探す
     1次元だけ極端に値が違ったりすると非常に遠
      い
     次元数が多すぎると使いにくい



          appengine ja night beer talk - @ashigeru   19
参考文献
   Geospatial Queries with Google App
    Engine using GeoModel
     http://code.google.com/intl/ja/apis/maps/
      articles/geospatial.html


   (その他募集中)




                appengine ja night beer talk - @ashigeru   20

Contenu connexe

Similaire à appengine ja night BT 近くを探す?

LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話Fumihito Yokoyama
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析Preferred Networks
 

Similaire à appengine ja night BT 近くを探す? (6)

Comp geom20131107open
Comp geom20131107openComp geom20131107open
Comp geom20131107open
 
LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話LINQ を使ったナンプレの解法を作ったお話
LINQ を使ったナンプレの解法を作ったお話
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
WAVE_WITH_GLSL
WAVE_WITH_GLSLWAVE_WITH_GLSL
WAVE_WITH_GLSL
 
WUPC2012
WUPC2012WUPC2012
WUPC2012
 
文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析文字列曖昧検索によるマルウェアバイナリ解析
文字列曖昧検索によるマルウェアバイナリ解析
 

Dernier

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 

Dernier (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

appengine ja night BT 近くを探す?

  • 1. 近くを探す? appengine ja night beer talk あらかわ (@ashigeru)
  • 2. テーマ  座標(x, y)に近い点を探す  App Engineのデータストアでどうやる? appengine ja night beer talk - @ashigeru 2
  • 3. App Engineのクエリの特性  1次元のレンジスキャン  1つの値を大小関係で並べて順に取り出すだけ  開始地点(と終了地点)を選べる  (x, y)とかどう見ても2次元座標 appengine ja night beer talk - @ashigeru 3
  • 4. 方法1: 離散化  座標を一定の幅で区切ってブロックに  付近のブロックに含まれているか調べる appengine ja night beer talk - @ashigeru 4
  • 5. 離散化の問題点  濃度によってはダメ  少ない→見つからない, 多い→見つかりすぎ appengine ja night beer talk - @ashigeru 5
  • 6. 方法2: インメモリフィルタ  2次元目はインメモリで処理する  1次元目はデータストアフィルタでやる appengine ja night beer talk - @ashigeru 6
  • 7. インメモリフィルタの問題点  個数によってはダメ  1次元目の結果が爆発しているかも appengine ja night beer talk - @ashigeru 7
  • 8. 空間充填曲線  (x, y)から遠くに向かってスキャンしたい  でも1次元のレンジスキャンしかできない  空間を1本の線で一筆書きする  空間充填曲線(Space Filling Curve)  ヒルベルト曲線、Z曲線などが有名 appengine ja night beer talk - @ashigeru 8
  • 9. Z曲線 (1)  平面の4点をZで結んでブロックにする  むしろN appengine ja night beer talk - @ashigeru 9
  • 10. Z曲線 (2)  ブロック4つをさらにZで結んでブロック にする appengine ja night beer talk - @ashigeru 10
  • 11. Z曲線 (3)  これを繰り返すと平面上のすべての点を 一筆書きできる appengine ja night beer talk - @ashigeru 11
  • 12. 空間充填曲線のスキャン (1)  ある点から前後にスキャンする  ただし、Z曲線の上でスキャン appengine ja night beer talk - @ashigeru 12
  • 13. 空間充填曲線のスキャン (2)  最初のZになければ、ひとつ大きなZで探 す appengine ja night beer talk - @ashigeru 13
  • 14. 空間充填曲線のスキャン (3)  徐々にZを大きくしていけばいつか見つか る  小→大で探すので、近い順に見つかる appengine ja night beer talk - @ashigeru 14
  • 15. Z曲線の作り方 (1)  それぞれの次元の値を2進数で書く appengine ja night beer talk - @ashigeru 15
  • 16. Z曲線の作り方 (2)  1ビットずつ取り出して並べ替える appengine ja night beer talk - @ashigeru 16
  • 17. Z曲線の作り方 (3)  繰り返して順になぞるとZ曲線になる appengine ja night beer talk - @ashigeru 17
  • 18. 多次元空間への拡張  平面じゃなくて4次元とかでも同じ  http://tiling.latest.ashigeru-demo.appspot.com/  http://gist.github.com/398695  4次元の得点空間で、近くの点を探す ≒ 得点が近い人を探す appengine ja night beer talk - @ashigeru 18
  • 19. Z曲線の問題点  アライメントに左右される  隣のZが意外と遠い  なので「一番近いものを探す」というのは難 しい  超立方体の構造で探す  1次元だけ極端に値が違ったりすると非常に遠 い  次元数が多すぎると使いにくい appengine ja night beer talk - @ashigeru 19
  • 20. 参考文献  Geospatial Queries with Google App Engine using GeoModel  http://code.google.com/intl/ja/apis/maps/ articles/geospatial.html  (その他募集中) appengine ja night beer talk - @ashigeru 20