Oracle Spatialベースの分析
Spatial AIは、Oracle Spatialデータベースのジオメトリ・データ用の基本的なPython APIを提供します。
これにより、SpatialDataFrame
クラスに実装されているoraclesai.data
パッケージによって提供されるPython APIを使用して、Spatialのデータベース・ベースの分析が可能になります。 Oracle Spatialへのデータ・アクセスと、Oracle Spatialからのデータ処理機能も提供します。
これらの分析には、ジオメトリ計算、空間問合せ、集計、サマリー、結合、最適化などの基本的な空間操作が含まれます。 Oracle SpatialデータベースへのPythonコールによって提供され、データベース内処理も可能です。
データセットがデータベースからのものである場合、SpatialDataFrame
クラスのメソッドは、すべての操作をOracle Spatialにプッシュし、データベース内処理を実行します。 それ以外の場合は、すべての操作がメモリーで実行されます。
次の表に、空間分析の手法の一部を示します。
操作 | 説明 |
---|---|
aggregate |
操作が列に対して実行され、サポートされている関数はcount , avg , sum およびmbr です。 結果はSpatialDataFrame オブジェクトです。
|
area |
各ジオメトリの領域を含む新しいSpatialDataFrame インスタンスを返します。
|
buffer |
各ジオメトリの周囲にバッファを構築します。 結果には同じ行と列が含まれますが、ジオメトリはバッファされます。 |
combine |
現在のSpatialDataFrame インスタンスのジオメトリを、パラメータtgt のジオメトリと組み合せます。 結果は、ジオメトリを組み合せたSpatialDataFrame オブジェクトになります。
|
crs |
ジオメトリに関連付けられた座標参照系を返します。 |
groupby |
指定された基準でSpatialDataFrame オブジェクトを分割し、関数を適用して結果を結合します。
|
length |
ジオメトリの長さを持つ新しいSpatialDataFrame オブジェクトを戻します。
|
merge |
結合キーを比較して、SpatialDataFrame の2つのインスタンスを結合します。 結果は、両方のインスタンスの列を含む別のSpatialDataFrame になります。 結合キーと結合の実行方法を指定できます。 また、結果のオブジェクトのジオメトリ列を定義することもできます。
|
nearest_neighbors |
特定のロケーションに近い観測値を持つSpatialDataFrame オブジェクトを返します。これは、shapelyジオメトリまたはSpatialDataFrame の別のインスタンスです。 後者の場合、結果には両方のSpatialDataFrame オブジェクトからの情報を含む観測が含まれます。
|
relate |
{anyinteract , inside , contains , equal , coveredby , on , covers , overlapbyintersect , overlapbydisjoint }から指定された空間演算子に基づいてプライマリ空間フィルタを実行します。 新しいSpatialDataFrame インスタンスを返します。
|
spatial_join |
結果のオブジェクトには入力オブジェクトからのデータが含まれ、コール元インスタンスからのジオメトリが結果内のジオメトリとして使用されます。 |
total_bounds |
total_bounds プロパティは、すべてのデータを囲む最小境界矩形を計算します。 結果は、次の要素(min_x, min_y, max_x, max_y) を持つタプルとして返されます。
|
to_crs |
指定されたCRS内のジオメトリを持つ新しいSpatialDataFrame オブジェクトを返します
|
within_distance |
shapely問合せウィンドウまたは別の問合せウィンドウとして指定された問合せウィンドウから特定の距離内にある観測のみを含むSpatialDataFrame オブジェクトを戻します。
|
distance |
現在のインスタンスのジオメトリとパラメータqry_win の間の距離を持つ新しいSpatialDataFrame を返します。
|
詳細は、「Oracle Spatial AI Python APIリファレンス」のSpatialDataFrameクラスを参照してください。
次の例では、ロサンゼルスの学校の名前とロケーションを含むSpatialDataFrame
のインスタンスを作成します。 DBSpatialDataset
を使用して、schools
表からデータを取得します。
import oml
from oraclesai import SpatialDataFrame, DBSpatialDataset
schools = SpatialDataFrame.create(DBSpatialDataset(table='schools', schema='oml_user'))
次に、block_groups
SpatialDataFrame
、within_distance
およびgroupby
操作を使用して、各ブロック・グループの2キロ・メートル以内の学校の数を計算し、その結果を別のSpatialDataFrame
に格納します。 索引はGEOID
列から取得されます。
schools_counts = block_groups.within_distance(schools, distance=2000).groupby('GEOID').aggregate(count={'GEOID': 'SCHOOLS_COUNT'})
print(schools_counts["SCHOOLS_COUNT"])
結果のSpatialDataFrame
を出力して、ブロック・グループから2キロ・メートル以内の学校数を示すSCHOOLS_COUNT
列を確認します。
SCHOOLS_COUNT geometry
0 5 POLYGON ((-118.29131 34.26285, -118.29132 34.2...
1 5 POLYGON ((-118.30075 34.25961, -118.30229 34.2...
2 4 POLYGON ((-118.30076 34.26321, -118.30075 34.2...
3 4 POLYGON ((-118.30320 34.27333, -118.30275 34.2...
4 5 POLYGON ((-118.29069 34.27071, -118.29078 34.2...
... ... ...
3412 15 POLYGON ((-118.34312 33.99558, -118.34343 33.9...
3413 13 POLYGON ((-118.34930 33.99942, -118.34929 33.9...
3414 14 POLYGON ((-118.34432 33.99074, -118.34486 33.9...
3415 26 POLYGON ((-118.25165 34.08038, -118.25124 34.0...
3416 22 POLYGON ((-118.51849 34.18498, -118.51849 34.1...