製品 & テクノロジー

GEOMETRYデータの利用を始める - マップがマップ以上の場合

GEOMETRYデータの利用を始める - マップがマップ以上の場合

このブログシリーズのパート1では、最新の世界測地系WGS84を使用して曲線上の距離を測定しオブジェクトをプロットし、地球を楕円体として利用するGEOGRAPHY地理空間データ型をSnowflakeがどのようにサポートしているかを調べました。また、飛行機の飛行経路を2次元の平面で見ると、平面が2次元の地図ビューに対する飛行経路の曲がりによって直線的に飛行しているようには見えないことも説明しました。しかし、地理空間分析でそのような2次元表現が必要な場合はどうすればよいでしょうか?地理空間計算を実行する際に、地球の一部を楕円体として表したくない場合はどうすればよいでしょうか?2022年のSnowflake Summitでプライベートプレビュー機能として発表されたGEOMETRYデータ型を入力します。

GEOMETRYの基本 (または、地図が地図以上であること)

GEOGRAPHYが教師の机の上に置かれている地球儀であるとすれば、GEOMETRYはGPSや携帯電話が登場する前、車に積んでいた地図帳です。その本を使って方向を把握するとき 、 「 この本の地図は、どのような空間基準システムによって構築されたかによって、見え方が変わる」ということに心血を注ぐことはないでしょう。「ちょっと待って。地図ってただの地図じゃない?」以下の2つのマップについて考えてみてください。

左側は「普通」に見え、右側は歪んで見えるかもしれません。まるで誰かが左側の地図の画像を取得し、高さを変えずに水平方向の幅を伸ばしたようです。しかし、もう少し詳しく見てみてください。左の地図で、アラスカが北に曲がっている様子と、北極海に向かうカナダの島々が北にまっすぐ伸びている様子にお気づきでしょうか?そして右の地図で、どのようにアラスカの真西とカナダの島々がより東に広がっていくのでしょうか?一方の地図は他方の地図を歪めたものではなく、それぞれが別の数学的射影を用いて地球を2次元の平面に変形させたものです。

効果測定と関係性も、それぞれのマップで異なります。東西方向の測定値は、確かに右側の地図ではより長くなっており、アラスカの島々が、左の地図では、より北カナダと整列している一方で、南カナダの同じ経度上で、おおよそどのように位置するかに気がつきますか?これら2つの地図について、同じ地理空間分析を行っても、異なる点が多いでしょう。しかし、一方の方が正しいというわけではありません。使用するマップは ユースケースによって決まります

信じられないことに、世の中にはさまざまな「地図」があり、それらは空間参照システムと呼ばれるものによってカタログ化されています。地球のそれぞれの投影には、空間参照識別子(SRID)と呼ばれる識別子が与えられている。SRIDには、多くの場合、次のような固有の特性があります。

  • 標準の経度や緯度とは異なる座標系
  • 球体地球上の点を座標系にバインドするデータム
  • すべての座標を球から平面に変換する射影
  • その座標系の単位。メートル以外の値を指定できます。

上のマップをもう2つ追加すると、以下のさまざまなSRIDのビジュアルアプリケーションが表示されます(リンクをクリックすると、各SRIDの詳細が表示されます)。

SRID:2163 “U.S.全国地図等面積」

SRID:2955「UTMゾーン11N」

SRID:4326“WGS84”

SRID:3395“Mercator”

しかし、これは地理空間分析で実際にどのように役立つのでしょうか?それには、GEOGRAPHYではなくGEOMETRYデータ型を使用する具体的な理由を検討する必要があります。たとえば、より狭く局所的な領域に分析を集中させる場合、経緯度の座標系を使用したくない場合があります。別の測定単位が必要になる場合もありますスポーツアナリティクスの進歩について考えてみてください。フットボール/サッカー競技場でボールが蹴られた場所、テニスコートでテニスボールが打たれた場所、バスケットボールコートでバスケットボールが撃たれた場所を測定する場合、それらの場所を経度と緯度の座標としてプロットするのは理に適わず、必要な精度に応じてメートルとは別の測定単位が必要になる可能性があります。ショッピングモールの客足、畑での作物の栽培、施設内のエネルギー管理、森林再生の取り組みなど、これらはすべて「地球全体」よりも焦点を当てたスケールでの空間測定と関係性の把握を扱うため、GEOGRAPHYよりもGEOMETRYを活用することができます。 

方向も重要です。真北、グリッド北、磁北には違いがあり、それぞれ異なる状況で適用できます。これが、マップの一部が「傾斜」しているように見える理由です。これらすべてが、GEOGRAPHYに加えてGEOMETRYが必要な理由です。

GEOMETRYとGEOGRAPHYの違いの例

では、GEOMETRYがSnowflakeでどのように機能し、GEOGRAPHYとどのように違うかを見てみましょう。ブログシリーズの第1部の画像を見てみましょう。

上の画像を生成するSQLステートメントは次のとおりです。

SELECT * FROM WORLD_COUNTRIES_GEOMrnWHERE ST_INTERSECTSu0026lpar;BORDER, TO_GEOMETRYu0026lpar;'LINESTRINGu0026lpar;13.4814 52.5015, -121.8212 36.8252u0026rpar;'u0026rpar;u0026rpar;;

このSQLステートメントには注目すべき2つの項目があります。

  • TO_GEOMETRYはGEOMETRYデータ型固有の関数です。TO_GEOGRAPHYと同様に、入力を文字列からGEOMETRYデータ型に変換します。
  • ST_INTERSECTSはGEOGRAPHYデータ型と同じ関数で、どの地理空間データ型を使用していても同じ関係比較を実行します。多くの地理空間関数は、SnowflakeのGEOGRAPHYおよびGEOMETRYと相互運用でき、特別な命名区別は必要ありません。 
SRIDの抽出

前述のように、ジオメトリの導入により、データがどのSRIDを使用しているかに注意を払う必要が出てきました。上記のクエリでは、ST_SRID関数を使用して、特定の地理空間列のSRIDをタイプに関係なく抽出できます。GEOGRAPHYは常にSRID 4326となりますが、GEOMETRY列はデータセットによって異なります。この例では、同じオブジェクトのGEOGRAPHY列とGEOMETRY列を持つOSM_BAY_AREAテーブルがあります。GEOMETRY列のSRIDは3493です。

未定義オブジェクトにはSRIDを常にSET

しかし、現時点では、SnowflakeはあるSRIDから別のSRIDへの変換機能にまだ対応していないため、代替のSRIDサポートの導入により、特定の関数がどのSRIDを使用しているかを常に認識する必要があります。したがって、上記の例では、POLYGON文字列にSRIDが定義されていないため、17~18行目のクエリは失敗します。この例では、SnowflakeはSRIDが0であると見なし、GEOM列はSRID 3493にあるため、Snowflakeは関数を解決できず、エラーを発行します。

このエラーは、21~22行目または25~26行目の2つのアプローチのいずれかで解決できます。21~22行目の最初のアプローチでは、EWKT構文を使用して、文字列内のPOLYGONのSRIDを定義します。25~26行目の2つ目のアプローチでは、ST_SETSRIDを使用して、追加の引数を使用してTO_GEOMETRY出力のSRIDを3493に設定します。

測定の影響

測定関数 ST_AREAST_PERIMETER にシフトすると、ここでも GEOGRAPHY と GEOMETRY を同じ意味で使用できます。これは、2 つのデータ型の間で測定によって若干異なる結果が生じ、他のすべてが等しくなることを示しています。SRID 4326とSRID 3493はどちらもメートルを測定単位として使用しています。そのため、曲率(GEOGRAPHY)での測定とSRID 3493平面(GEOMETRY)での測定を計算する場合、上のクエリのカリフォルニア州サンタクララ郡の面積と周辺測定値がどのように異なるかがわかります。 

異なる座標を使用する

座標系を検討すると、会話は類似点から大きな違いにシフトします。上記のクエリのST_YMIN関数とST_YMAX関数を使用すると、各SRIDで使用されている座標系の例を抽出できます。上記のとおり、GEOGRAPHY列は標準経度と緯度を座標系として使用していますが、SRID 3493(GEOMETRY)は大きく異なる座標系を使用しており、数値もはるかに大きくなっています。これは、SRID間で座標系がどれだけ大きく異なるか、またGEOGRAPHYの使用がすべての地理空間ユースケースに適しているとは限らないことを示しています。

コンストラクタ関数は、座標系を尊重する

ST_MAKEPOLYGONで前述のように、GEOMETRY列で定義された座標系はコンストラクタ関数でも尊重されます。上の結果では、GEOGRAPHY_POLYGONと同じ建物に対して作成されたGEOMETRY_POLYGONが、経度や緯度ではなく、ポリゴン定義でより大きな座標系の値をどのように使用しているかがわかります。すべてのコンストラクタ関数と変換関数は、常にGEOMETRY列のSRIDで使用される座標系を尊重します。

Snowflakeの地理空間サポートに対するコミット

過去1年間、Snowflakeはデータクラウドにおけるより深い地理空間分析をサポートするために大規模な投資を行ってきました。GEOGRAPHYのサポートから始まり、2022年6月のSnowflake Summit of GEOMETRYのサポートで導入されました。今後数か月にわたり、より多くのデータとストレージフォーマットのサポート、新機能の追加、SRID間の変換の追加、可視化機能の提供による空間インテリジェンスの有効化により、データ取り込みの簡素化による地理空間サポートの強化を継続していきます。 

この2つのブログ記事で、地理空間データとは何か、データがどのように機能するか、Snowflakeでそれをどのように活用できるかを理解していただけたなら幸いです。GEOGRAPHYサポートが一般提供され、GEOMETRYサポートがパブリックプレビュー中であるため、これらの優れた新機能を自分で試すことができます。

記事をシェアする

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

30日間の無料トライアルを開始する

Snowflakeの30日間無料トライアルで、他のソリューションに内在する複雑さ、コスト、制約の課題を解決するAIデータクラウドを体験できます。