Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Geo Parquetの仕様を追ってみた
Search
KentarouSuzuki
June 28, 2022
Technology
920
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Geo Parquetの仕様を追ってみた
現在、GitHubで議論されているGeoParquetがv0.4.0まで仕様が公開されたので、どのような仕様になっているのか、追ってみました。
KentarouSuzuki
June 28, 2022
More Decks by KentarouSuzuki
See All by KentarouSuzuki
Discrete Global Grid System(DGGS) について調べた
kentarousuzuki
0
940
空間データのためのRツリー
kentarousuzuki
0
1.5k
Magnet Pattern と Method Overload
kentarousuzuki
0
440
shapelessと代数的データ型
kentarousuzuki
0
410
Other Decks in Technology
See All in Technology
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
130
パッチ更新でterraform initが落ちた日
grimoh
1
130
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
130
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
7
2.7k
継続的なAIコスト最適化
bgpat
1
300
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
150
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
530
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
670
AI時代に必要な脅威モデリング― 変化の速度に負けない理解とリスク判断
masakane55
5
1.3k
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
190
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
350
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
A designer walks into a library…
pauljervisheath
211
25k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
My Coaching Mixtape
mlcsv
0
350
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Transcript
Geo Parquetの仕様について追ってみた 1
本日のお話 1. Geo Parquetとは? 2. v0.4.0 時点で決まっている仕様 3. Spatial Index
2
Geo Parquetとは? https://github.com/opengeospatial/geoparquet Geo Parquetとは? 3
ベクタ形式の地理情報データをApach Parquetで扱えるようにした仕様 バージョン 2022年3月9日にv0.1.0が公開 2022年6月28日現在、v0.4.0まで公開されている Geo Parquetとは? 4
代表的な参加会社・団体 azavea CARTO FORSQUARE GeoPandas Microsoft Unfolded Geo Parquetとは? 5
実装 名前 言語 ライブラリ側の対応バージョン GeoPandas Python 0.8.0 sfarrow R GDAL/OGR
C++ 3.5 GeoParquet.jl Julia geoarrow R Parquet-WASM WASM Geo Parquetとは? 6
Motivation 大量のデータをさばくサービスが普及してきている今日の状況で、Parquetといった列志向の データフォーマットでも地理情報を使いたいニーズが増えてきた。 しかし、現状ではParquetで地理情報を効率良く蓄積する方法が定まっていない。 Geo Parquetとは? 7
ゴール Establish a great geospatial format for workflows that excel
with columnar data Introduce columnar data formats to the geospatial world Enable interoperability among cloud data warehouses Persist geospatial data from Apache Arrow (GeoParquetリポジトリのREADMEより) Geo Parquetとは? 8
v0.4.0 時点で決まっている仕様 v0.4.0 時点で決まっている仕様 9
1.地理情報のフォーマット GeoParquetでは地理情報を表すフォーマットはWKB (Well-known binaly) と呼ばれるフォー マットを使い、Parquetの型は BYTE_ARRAY を使用する。 そして、このWKBをParquetのファイルメタデータの primary_column
で指定した、カラム に格納する。 v0.4.0 時点で決まっている仕様 10
また、地理情報の種類としては以下のものをサポートしている。 Point LineString Polygon MultiPoint MultiLineString MultiPolygon GeometoryCollection v0.4.0 時点で決まっている仕様
11
2.座標参照系 カラムのメタデータにはCRS(Coodinate Reference System, 座標参照系)を設定することがで きる。 この時、CRSのフォーマットはPROJJSONと呼ばれるフォーマットで示す。 もしも、この値がなかった場合は、デフォルトでCRS84が選択される。 v0.4.0 時点で決まっている仕様
12
v0.4.0 時点で決まっている仕様 13
座標参照系についてちょっと説明 v0.4.0 時点で決まっている仕様 14
地理情報の世界では、基本的に情報は座標で表す。 例) EASTオフィスの位置: POINT(139.7035426 35.6655141) v0.4.0 時点で決まっている仕様 15
この時、座標の表し方はたくさんあり、用途によって使い分ける。 それを表したのが、座標参照系。 例) EASTオフィスの座標を表す場合 GPSデータ: POINT(139.7035426 35.6655141) WEB上の地図, 厳密さが要求されていない距離計算: POINT(15551727.2242484
4254693.69910994) v0.4.0 時点で決まっている仕様 16
3.Bounding Box v0.4.0 時点で決まっている仕様 17
GeoParquetでは、地理情報を効率的に読み込むために、地理情報を表すカラムのメタデータ にBounding Boxを設定している。 Bounding Box(Bbox)とは? 選択した、Point or LineString or Polygonを全てを含む最小の長方形。
例)山手線の駅とBboxの例 v0.4.0 時点で決まっている仕様 18
このBounding Boxが次に説明するSpatialIndexへとつながります。 v0.4.0 時点で決まっている仕様 19
Spatial Index Spatial Index 20
Spatial Index(空間インデックス)とは、地理情報の検索を高速にするためのインデック ス。 例えば、PostgreSQLを拡張したPostGISでは、空間インデックスをR-Treeを使って実現して いる。 Spatial Index 21
GeoParquetでは、v0.5.0で空間インデックスの実現方法を発表できるように議論が進められ ている。 GitHubのIssue (https://github.com/opengeospatial/geoparquet/issues/13) Spatial Index 22
現在、Spatial Indexの有力な実装方法の一つは、先ほど取り上げたBounding Boxを使って実 現する。 Spatial Index 23
Parquetでは、右の図のようにいくつか の行をまとめたRow GropとPageがあ る。 この時、行ごとのBounding Boxは新し くX(経度)とY(緯度)の値を格納する 画像はParquetのGitHubより引用 Spatial Index
24
表で表すイメージはこんな感じ Name geom MBR.x MBR.y hoge WKB [135, 137] [34,
36] fuga WKB [136, 139] [37, 40] MBR.xとMBR.yが行ごとに作成されたBounding Box Spatial Index 25
行ごとにでBounding Boxを作成し、 Row GroupとPage単位でさらに Bounding Boxを作成する。 イメージ的にはこんな感じ 1. 黒: ファイル単位のB
Box 2. 青: Row Group単位のB Box 3. 赤: Page単位のB Box 画像はWikipediaのR-Treeより引用 Spatial Index 26
CARTOがこちらの方法をSparkのUDFsで定義して、位置の絞り込みを実装したところ、 10minかかっていたクエリが2secにまで短縮した...? https://github.com/opengeospatial/geoparquet/issues/13#issuecomment-1097993976 実装はCartoDB/analytics-toolbox-databricksで公開されています。 Spatial Index 27
他にも、空間充填曲線やParquetで新しく空間データを定義してあげる方法もあげられている ようですが、まだ絶賛議論中っぽそうです。 Spatial Index 28