地理空間分析(teradataml)

[Teradata® Package for Python User Guide](https://docs.teradata.com/r/Teradata-Package-for-Python-User-Guide/May-2022)[リリース番号：17.10　リリース日付：2022/8/18]の翻訳です。

> Python用ライブラリ(teradataml) シリーズのコンテンツです。

<iframe width="560" height="315" src="https://www.youtube.com/embed/uGtYte9ogS8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

## 主なユースケース
<img width="700" alt="GeoSpatialユースケース一覧.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/6ab724a0-d037-20c9-bc3b-05e9db06a909.png">

## ST_Geometryデータ型
データベース内の幾何学図形を作成および操作するためのST_Geometryデータ型を提供しています。ST_Geometryは、ユーザー定義型(UDT)として実装されます。Vantage内では、ST_Geometryをインスタンス化できる型にしています。
| タイプ | 説明 |
|:-|:-|
|ST_Point(点)   | 0次元のジオメトリ。2次元座標空間の1点を表わします。  |
|ST_LineString(線分)|1次元ジオメトリ。通常は、2点間の直線補間で使用する点列として格納されます。|
|ST_Polygon(多角形)|2次元ジオメトリ。1つの外部境界と0以上の内部境界で構成されます。各内部境界では、穴を定義します。|
|ST_GeomCollection(複合ジオメトリ)|ST_Geometry値の0個以上の集合です。|
|ST_MultiPoint(点の集合)|0次元ジオメトリの集合です。この集合の構成要素はST_Pointの値に制限されます。|
|ST_MultiLineString(線分の集合)|1次元ジオメトリの集合です。この集合の構成要素はST_LineStringの値に制限されます。|
|ST_MultiPolygon(多角形の集合)|2次元ジオメトリの集合です。この集合の構成要素はST_Polygonの値に制限されます。|
|GeoSequence(線分+タイムスタンプ)|ST_LineStringの拡張です。地理空間情報に加えて、タイムスタンプなどの追跡情報も格納できます。GeoSequenceは、TeradataがSQL/MM Spatialに加えた拡張です。|

## 地理空間データ形式
| データ形式 | 説明 |
|:-|:-|
|既知のテキスト形式|ベクトル幾何学を表現するためのマークアップ言語です。|
|既知のバイナリ形式|地理的および幾何学的データをバイナリで表すための形式です。|
|既知のテキスト形式の拡張(ESRI互換)|EWKT形式は既存のWKT形式の先頭にSRID識別子が追加されます。|
|既知のバイナリ形式の拡張(ESRI互換)|EWKT形式は既存のWKB形式の先頭にSRID識別子が追加されます。|

## 地理空間分析における関数及びメソッド一覧
![GeoSpacialメソッド一覧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/77c9a083-23d2-1ae1-add6-fc1def10ac78.png)

## GeoImport & GeoExport
TDGeoImportとTDGeoExportは、地理空間データとESRI、MapInfo、およびTIGER/Lineデータ形式と互換性のある形式を相互変換するためにTeradataが提供しているユーティリティです。
#### Teradata GeoImport ユーティリティ
Teradata GeoImport は、ESRI、MapInfo、および TIGER/Line データ ソースからレイヤーを変換し、データをデータベースにロードします。
<img width="700" alt="Teradata GeoImport ユーティリティ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/ff98c8d9-e20a-8e49-d575-42ba9725a39c.png">

##### 対応形式
- TIGER/Line files
- ESRI Shapefiles
- MapInfo

#### Teradata GeoExport ユーティリティ
Teradata GeoExport は、Teradata Geospatial データを、ESRI、MapInfo、および TIGER/Line データ フォーマットと互換性のあるフォーマットに変換します。
<img width="700" alt="Teradata GeoExport ユーティリティ.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/fc406040-df4c-732a-9493-43d5681f9c1f.png">

##### 対応形式
- TIGER/Line files
- ESRI Shapefiles
- KML
- MapInfo

## 地理空間データの表示
| ツール | 説明 |
|:-|:-|
|MapServer|MapServerとTeradataとのインターフェースには、MSTDPlugin.dllというプラグインDLLを使用します。MapServerプラグインは、[Teradata Community Developer Zone](https://downloads.teradata.com/)から入手できます。|
|Google Maps|Google Maps/Google Earth APIを使用して連携します。Google Maps/Google Earth APIの利用にはライセンスが必要です。詳細については、[Google Maps/Google Earth APIs Terms of Service](https://cloud.google.com/maps-platform/terms/)を参照してください|

## メソッド一覧
:::note information
各メソッドの使い方に関しては、段階的にリンクを追加していきますので、リンクの利用方法を参照してご利用下さい。
:::
#### 最小外接のメソッド
| メソッド | 説明 |
|:-|:-|
|MBR|2Dジオメトリを囲める最小サイズの矩形を定義します。|
|MBB|3Dジオメトリを囲める最小サイズのボックスを定義します。|
|Intersects|MBRまたはMBB値が同じデータ型の別の値と空間的に交差するかどうかをテストします。|
|XMin|MBRまたはMBBの最小x座標値(FLOAT値)を返します。<br>MBRの場合、これは左下隅のx座標になります。<br>MBBの場合、これは左下隅前部のx座標になります。|
|YMin|MBRまたはMBBの最小y座標値(FLOAT値)を返します。<br>MBRの場合、これは左下隅のy座標になります。<br>MBBの場合、これは左下隅前部のy座標になります。|
|ZMin|MBBの最小z座標値(FLOAT値)を返します。これは、左下隅前部のz座標です。|
|XMax|MBRまたはMBBの最大x座標値(FLOAT値)を返します。MBRの場合、これは右上隅のx座標になります。MBBの場合、これは右上隅後部のx座標になります。|
|YMax|MBRまたはMBBの最大y座標値(FLOAT値)を返します。<br>MBRの場合、これは右上隅のy座標になります。<br>MBBの場合、これは右上隅後部のy座標になります。
|ZMax|MBBの最大z座標値(FLOAT値)を返します。これは、右上隅後部のz座標です。|

#### ジオメトリー・メソッド
| メソッド | 説明 |
|:-|:-|
|ST_MBR|ST_Geometry値のMBR (最小外接矩形)を返します。|
|MBB|3D ST_Geometryを囲む3D最小外接ボックス(MBB)を返します。|
|Make_2D|3D ST_Geometray値を2D ST_Geometry値に変換し、オプションとして、2Dジオメトリが適切に形成されていることを検証します。このメソッドは、3Dジオメトリからz座標を削除します。|
|SimplifyPreserveTopology|指定された距離の許容範囲内に入る点を削除して2Dジオメトリを簡易化します。|
|ST_3DDistance|2つのST_Geometry値の間の距離を返します。ST_3DDistanceでは、自身に渡されたジオメトリにz座標値がある場合、z座標が考慮されます。|
|ST_AsBinary|ST_Geometry値のWKB (Well-Known Binary)表現を返します。|
|ST_AsText|ST_Geometry値のWKT (Well-Known Text)表現を返します。|
|ST_AsBoundary|ST_Geometry値の境界を返します。|
|ST_Buffer|ST_Geometry値からの距離が指定の距離以下であるすべての点を返します。|
|ST_Centroid|ST_PolygonまたはST_MultiPolygon値の数学的重心を返します。|
|ST_Contains|ST_Geometry値が空間的に他のST_Geometry値を含むかどうかを確認します。|
|ST_ConvexHull|ST_Geometry値の凸包を返します。|
|ST_CoordDim|ジオメトリの座標次元を返します。|
|ST_Crosses|ST_Geometry値が空間的に他のST_Geometry値を横断しているかどうか確認します。|
|ST_Difference|2つのST_Geometry値の点集合の差集合を表現するST_Geometry値を返します。|
|ST_Dimension|ST_Geometryタイプの次元を返します。|
|ST_Disjoint|ST_Geometry値が空間的に他のST_Geometry値と分離しているかどうかを確認します。|
|ST_Distance|2つのST_Geometry値の間の距離を返します。|
|ST_Envelope|ST_Geometry値の外接矩形を返します。|
|ST_Equals|ST_Geometry値が空間的に他のST_Geometry値と等しいかどうかを確認します。|
|ST_GeometryType|ST_Geometry値のST_Geometryタイプを返します。|
|ST_Intersection|2つのST_Geometry値の点集合の積集合を表現する値のST_Geometryタイプを返します。|
|ST_Is3D|ST_Geometry値にz座標値があるかどうかをテストします。|
|ST_IsEmpty|ST_Geometry値が空集合と合致するかどうかを確認します。|
|ST_IsSimple|ST_Geometry値に、自己交差による接触点などの幾何学的特異点がないことを確認します。|
|ST_IsValid|ST_Geometry値が、完全に形式化されていることを確認します。|
|ST_MaxX|ST_Geometry値の最大x座標を返します。|
|ST_MaxY|ST_Geometry値の最大y座標を返します。|
|ST_MaxZ|ST_Geometry値の最大z座標を返します。|
|ST_MinX|ST_Geometry値の最小x座標を返します。|
|ST_MinY|ST_Geometry値の最小y座標を返します。|
|ST_MinZ|ST_Geometry値の最小z座標を返します。|
|ST_Overlaps|ST_Geometry値が空間的に他のST_Geometry値と重なるかどうかを確認します。|
|ST_Relate|ST_Geometry値が空間的に他のST_Geometry値と関連するかどうかを確認します。|
|ST_SRID|ST_Geometry値の空間参照系の識別子を取得および設定します。|
|ST_SymDifference|2つのST_Geometry値の点集合の対称差を表現するST_Geometry値を返します。|
|ST_Touches|ST_Geometry値が他のST_Geometry値と空間的に接触しているかどうかを確認します。|
|ST_Transform|指定の空間参照系に変換したST_Geometry値を返します。|
|ST_Union|2つのST_Geometry値の点集合の和集合を表現するST_Geometry値を返します。|
|ST_Within|ST_Geometry値が他のST_Geometry値に空間的に含まれるかどうかを確認します。|
|ST_WKBToSQL|指定したST_Geometry値を返します。|
|ST_WKTToSQL|指定したST_Geometry値を返します。|

#### ポイント・メソッド
| メソッド | 説明 |
|:-|:-|
|ST_SpheroidalBufferMBR|点から指定された距離内にあるすべての点の緯度と経度の最大値と最小値を表わすMBRを返します。地球は球体としてモデル化されます。|
|ST_SphericalDistance|半正矢関数(Haversine Formula)を使用して地球上の2つの球面座標間の球面距離を返します。|
|ST_X|ST_Point値のX座標を取得および設定します。|
|ST_Y|ST_Point値のY座標を取得および設定します。|
|ST_Z|ST_Point値のz座標を取得および設定します。|

#### 線分メソッド
| メソッド | 説明 |
|:-|:-|
|ST_3DIsClosed|z座標を計算に入れて、3D LineStringまたは3D MultiLineStringが閉じているかどうかをテストします。|
|ST_3DLength|z座標を計算に入れて、3D LineStringまたはMultiLineStringの長さを返します。|
|ST_EndPoint|ST_LineStringまたはGeoSequence値の終点を返します。|
|ST_IsClosed|ST_LineString、GeoSequenceまたはST_MultiLineString値を表現するST_Geometryタイプが、閉じているかどうか確認します。|
|ST_IsRing|ST_LineStringまたはGeoSequence値を表現するST_Geometryタイプが環になっているかどうかを確認します。|
|ST_Length|ST_LineString、GeoSequenceまたはST_MultiLineString値を表現するST_Geometryタイプの測定長を返します。|
|ST_Line_Interpolate_Point|ST_LineStringまたはGeoSequence値を表現するST_Geometryタイプ上で、指定された距離の比率で直線を補間する点データを返します。|
|ST_NumPoints|このメソッドは、ST_LineStringまたはGeoSequence値を表現するST_Geometryタイプに含まれる点データの数を返します。|
|ST_PointN|ST_LineStringまたはGeoSequence値を表現しているST_Geometryタイプから指定した点データを返します。|
|ST_StartPoint|ST_LineStringまたはGeoSequence値の始点を返します。|

#### ポリゴン・メソッド
| メソッド | 説明 |
|:-|:-|
|ST_Area|ST_PolygonまたはST_MultiPolygonの面積測定値を返します。ST_MultiPolygonの場合、コンポーネント ポリゴンの面積測定値の合計を返します。|
|ST_ExteriorRing|ST_Polygon値を表現するST_Geometryタイプの外周を取得および設定します。|
|ST_InteriorRingN|ST_Polygon値を表現するST_Geometryタイプの指定した内周を返します。|
|ST_NumInteriorRing|ST_Polygon値を表現するST_Geometryタイプの内周の数を返します。|
|ST_Perimeter|ST_Polygonの境界長、またはST_MultiPolygonのコンポーネント ポリゴンの境界長の合計を返します。|
|ST_PointOnSurface|ST_Polygon、またはST_MultiPolygonのコンポーネント ポリゴンの1つ以上と必ず空間的に交差する点を返します。|

#### 複合ジオメトリ・メソッド
| メソッド | 説明 |
|:-|:-|
|ST_GeometryN|複合ジオメトリ型(ST_GeomCollection、ST_MultiPoint、ST_MultiLineString、またはST_MultiPolygon)の1つのコンポーネント メンバーのジオメトリを返します。返される要素は、集合の位置で指定されます。|
|ST_NumGeometries|複合ジオメトリ型(ST_GeomCollection、ST_MultiPoint、ST_MultiLineString、またはST_MultiPolygon)を構成する別個のジオメトリの数を返します。|

#### ジオ・シークエンス・メソッド
| メソッド | 説明 |
|:-|:-|
|Clip|2つのタイムスタンプ入力引数間にある点データのサブセットと、それに関連するデータを格納するGeoSequence値を返します。|
|GetFinalT|GeoSequenceの最後の点のTimeStamp値を返します。|
|GetInitT|GeoSequenceの最初の点のTimeStamp値を返します。|
|GetUserFld|GeoSequenceタイプのfldIndexで指定した点データのindexで指定したユーザー フィールドを返します。|
|GetUserFldCount|GeoSequenceの各点に関連付けられたユーザー フィールドの数を返します。|
|HeadingN|GeoSequenceの指定した点の見出しを返します。|
|LinkID|GeoSequence内で指定した点のリンクIDを取得および設定します。|

#### 空間のフィルタ処理操作メソッド
| メソッド | 説明 |
|:-|:-|
|Intersects_MBB|3Dジオメトリが指定のMBBと空間的な共有部分を持つかどうかをテストします。|
|MBB_Filter|2つの3DジオメトリのMBBに空間的な共有部分があるかどうかをテストします。|
|MBR_Filter|2つの2DジオメトリのMBRに空間的な共有部分があるかどうかをテストします。|
|Within_MBB|指定のMBBの境界内に3Dジオメトリが空間的に含まれているかどうかをテストします。|

#### 地理空間システム関数
| メソッド | 説明 |
|:-|:-|
|DataSize|次のTeradata変数の最大長の複合データ型のいずれかについて、バイト単位でデータ長を返します。(DATASET/JSON/ST_Geometry/XML)|
|FROM_MGRS|Military Grid Reference System (MGRS)の座標を、ST_GEOMETRY点オブジェクトに変換します。|
|GeomFromGeoJSON|GeoJSON標準に準拠するJSON文書をST_Geometryオブジェクトに変換します。|
|GeoJSONFromGeom|ST_Geometryオブジェクトを、GeoJSON標準に準拠しているJSON文書に変換します。|
|GeoSequenceFromRows|各点のデータを行に格納しているテーブルを取り込み、GeoSequenceオブジェクトを返すテーブル関数です。|
|GeoSequenceToRows|ST_Geometryタイプで表現されたGeoSequence入力引数を受け取り、各行がGeoSequenceオブジェクトに含まれる点になる表行を返す表関数です。出力行のサイズは固定され、最大10個のユーザー フィールドが許容されます。|
|PolygonSplit|PolygonSplit|
|TO_MGRS|ST_GEOMETRY点オブジェクトを、Military Grid Reference System (MGRS)の座標に変換します。|

#### 地理空間UDF
| メソッド | 説明 |
|:-|:-|
|SphericalDistance|半正矢関数(Haversine Formula)を使用して地球上の2つの球面座標間の球面距離をメートル単位で返します。|
|SpheroidalDistance|2点の球面座標間の距離をメートル単位で返します。|
|ST_GeomFromText|指定したST_Geometry値を返すユーザー定義関数です。|
|ST_GeomFromWKB|指定したST_Geometry値を返すユーザー定義関数です。|

#### 地理空間のテーブル演算子
| メソッド | 説明 |
|:-|:-|
|AggGeom|ST_Geometryオブジェクトのグループの合併または共通部分を返します。|
|GeoMetryToRows|ST_Geometryオブジェクトを取り、ジオメトリ オブジェクトの点ごとに出力行を生成します。|
|PolygonSplit|ST_Geometryポリゴン タイプを含んだ表を許可し、該当するポリゴンを小さいサブポリゴンのセット(各サブポリゴンの頂点は元のポリゴンより少ない)に再帰的に処理する表演算子。|

## おわりに
:::note warn
警告
この本書は[Teradata Vantageドキュメンテーション](https://docs.teradata.com/)よりトピックに必要な情報を抜粋したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)