機械翻訳について

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

spatial_opパラメータで定義された指定された相互作用によってSpatialDataFrameの2つのインスタンスを結合します。この相互作用には、関連操作でサポートされている任意の空間相互作用を含めることができます。

結果のオブジェクトには入力オブジェクトからのデータが含まれ、コール元インスタンスからのジオメトリが結果内のジオメトリとして使用されます。

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 SpatialDataFramewithin_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...