Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Geo Parquetの仕様を追ってみた
Search
KentarouSuzuki
June 28, 2022
Technology
0
780
Geo Parquetの仕様を追ってみた
現在、GitHubで議論されているGeoParquetがv0.4.0まで仕様が公開されたので、どのような仕様になっているのか、追ってみました。
KentarouSuzuki
June 28, 2022
Tweet
Share
More Decks by KentarouSuzuki
See All by KentarouSuzuki
Discrete Global Grid System(DGGS) について調べた
kentarousuzuki
0
750
空間データのためのRツリー
kentarousuzuki
0
1.2k
Magnet Pattern と Method Overload
kentarousuzuki
0
390
shapelessと代数的データ型
kentarousuzuki
0
360
Other Decks in Technology
See All in Technology
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
4
460
プレビュー版のDevOpsエージェントを現段階で触ってみた
ad_motsu
1
100
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
2
190
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
120
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
370
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
780
[CV勉強会@関東 World Model 読み会] Orbis: Overcoming Challenges of Long-Horizon Prediction in Driving World Models (Mousakhan+, NeurIPS 2025)
abemii
0
150
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
配列に見る bash と zsh の違い
kazzpapa3
3
170
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
20260204_Midosuji_Tech
takuyay0ne
1
160
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Unsuck your backbone
ammeep
671
58k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
Automating Front-end Workflow
addyosmani
1371
200k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
Building AI with AI
inesmontani
PRO
1
710
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
110
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
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