このパッケージを使用すると、Application Express内でOracle LocatorおよびOracle Spatialオプションを使用できます。Application Expressのコンテキストでは、データベース・セッションのログオン・ユーザーは通常、APEX_PUBLIC_USERまたはANONYMOUSです。Spatialの開発者は、SQLワークショップ内のSQLコマンドなどでは、このようなセッション内でDMLをUSER_SDO_GEOM_METADATAに対して直接使用できません。Spatialビューのトリガーはログオン・ユーザーとしてDMLを実行しますが、アプリケーション所有者またはワークスペース・ユーザーとして実行する必要があります。APEX_SPATIAL APIにより、開発者は次に示すプロシージャおよびファンクションを使用し、現在のApplication ExpressユーザーとしてUSER_SDO_GEOM_METADATAの行を挿入、更新および削除できます。また、このパッケージには、Application ExpressでのSpatialの使用を簡略化するユーティリティがいくつか用意されています。
この項では、このパッケージで使用するデータ型について説明します。
t_srid
subtype t_srid is number;
c_no_reference_system
c_no_reference_system constant t_srid := null;
c_wgs_84
c_wgs_84 constant t_srid := 4326; -- World Geodetic System, EPSG:4326
このプロシージャは、空間メタデータ・レコードを変更します。
構文
APEX_SPATIAL.CHANGE_GEOM_METADATA (
p_table_name IN VARCHAR2,
p_column_name IN VARCHAR2,
p_new_table_name IN VARCHAR2 DEFAULT NULL,
p_new_column_name IN VARCHAR2 DEFAULT NULL,
p_diminfo IN mdsys.sdo_dim_array,
p_srid IN t_srid );
パラメータ
表24-1 CHANGE_GEOM_METADATAのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
機能表の名前。 |
|
|
型 |
|
|
機能表の新しい名前(または現行値のままの場合はnull)。 |
|
|
型 |
|
|
ディメンションごとにエントリが1つあり、ディメンション順の |
|
|
列の全ジオメトリに対する座標系の |
例
次に示すコードは、列CITIES.SHAPE.のディメンションを変更します。
begin
for l_meta in ( select *
from user_sdo_geom_metadata
where table_name = 'CITIES'
and column_name = 'SHAPE' )
loop
apex_spatial.change_geom_metadata (
p_table_name => l_meta.table_name,
p_column_name => l_meta.column_name,
p_diminfo => SDO_DIM_ARRAY (
SDO_DIM_ELEMENT('X', -180, 180, 0.1),
SDO_DIM_ELEMENT('Y', -90, 90, 0.1) ),
p_srid => l_meta.srid );
end loop;
end;
このファンクションは、(p_lon, p_lat)で半径p_radiusの円を近似するポリゴンを作成します。詳細は、mdsys.sdo_util.circle_polygonを参照してください。
構文
APEX_SPATIAL.CIRCLE_POLYGON (
p_lon IN NUMBER,
p_lat IN NUMBER,
p_radius IN NUMBER,
p_arc_tolerance IN NUMBER DEFAULT 20,
p_srid IN t_srid DEFAULT c_wgs_84 )
RETURN mdsys.sdo_geometry;
パラメータ
表24-2 CIRCLE_POLYGONのパラメータ
| パラメータ | 説明 |
|---|---|
|
p_lon |
左下点の経度の位置。 |
|
p_lat |
左下点の緯度の位置。 |
|
|
円の半径(m)。 |
|
|
円弧の許容差(デフォルトは20)。 |
|
p_srid |
参照座標系(デフォルトはc_wgs_84)。 |
戻り値
例
この例は、(0, 0)で半径1の円を近似するポリゴンを戻す問合せです。
select apex_spatial.circle_polygon(0, 0, 1) from dual
このプロシージャは、空間メタデータ・レコードを削除します。
構文
APEX_SPATIAL.DELETE_GEOM_METADATA (
p_table_name IN VARCHAR2,
p_column_name IN VARCHAR2,
p_drop_index IN BOOLEAN DEFAULT FALSE );
パラメータ
表24-4 DELETE_GEOM_METADATAのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
機能表の名前。 |
|
|
型 |
|
|
TRUE (デフォルトはFALSE)の場合、列の空間索引を削除します。 |
例
この例では、列CITIES.SHAPEのメタデータを削除し、この列の空間索引を削除します。
begin
apex_spatial.delete_geom_metadata (
p_table_name => 'CITIES',
p_column_name => 'SHAPE',
p_drop_index => true );
end;
このプロシージャは、空間メタデータ・レコードを挿入し、オプションで空間索引を作成します。
構文
APEX_SPATIAL.INSERT_GEOM_METADATA (
p_table_name IN VARCHAR2,
p_column_name IN VARCHAR2,
p_diminfo in mdsys.sdo_dim_array,
p_srid in t_srid,
p_create_index_name IN VARCHAR2 DEFAULT NULL );
パラメータ
表24-5 INSERT_GEOM_METADATA_LONLATのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
機能表の名前。 |
|
|
型 |
|
|
ディメンションごとにエントリが1つあり、ディメンション順の |
|
p_srid |
列の全ジオメトリに対する座標系のSRID値。 |
|
|
nullでない場合、この名前で列の空間索引が作成されます。単純な列名のみがサポートされています。ファンクションベースの索引またはオブジェクト属性の索引はエラーとなります。より複雑な要件の場合は、このパラメータをnull (デフォルト)のままにし、手動で索引を作成します。 |
例
この例では、表CITIESと、列CITIES.SHAPEの空間メタデータおよび索引を作成します。
create table cities (
city_id number primary key,
city_name varchar2(30),
shape mdsys.sdo_geometry )
/
begin
apex_spatial.insert_geom_metadata (
p_table_name => 'CITIES',
p_column_name => 'SHAPE',
p_diminfo => SDO_DIM_ARRAY (
SDO_DIM_ELEMENT('X', -180, 180, 1),
SDO_DIM_ELEMENT('Y', -90, 90, 1) ),
p_srid => apex_spatial.c_wgs_84 );
end;
/
create index cities_idx_shape on cities(shape) indextype is mdsys.spatial_index
/
このプロシージャは、経度/緯度に合った空間メタデータ・レコードを挿入し、オプションで空間索引を作成します。
構文
APEX_SPATIAL.INSERT_GEOM_METADATA_LONLAT (
p_table_name IN VARCHAR2,
p_column_name IN VARCHAR2,
p_tolerance IN NUMBER DEFAULT 1,
p_create_index_name IN VARCHAR2 DEFAULT NULL );
パラメータ
表24-6 INSERT_GEOM_METADATA_LONLATのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
機能表の名前。 |
|
|
型 |
|
|
各ディメンションの許容差値(m) (デフォルトは1)。 |
|
|
nullでない場合、この名前で列の空間索引が作成されます。単純な列名のみがサポートされています。ファンクションベースの索引またはオブジェクト属性の索引はエラーとなります。より複雑な要件の場合は、このパラメータをnull (デフォルト)のままにし、手動で索引を作成します。 |
例
次に示すコードは、表CITIESおよび列CITIES.SHAPEの空間メタデータを作成します。CITIES_IDX_SHAPEをp_create_index_nameに渡すと、APIコールによって自動的に空間列の索引が作成されます。
create table cities (
city_id number primary key,
city_name varchar2(30),
shape mdsys.sdo_geometry )
/
begin
apex_spatial.insert_geom_metadata_lonlat (
p_table_name => 'CITIES',
p_column_name => 'SHAPE',
p_create_index_name => 'CITIES_IDX_SHAPE' );
end;
/
このファンクションは、(p_lon, p_lat)で点を作成します。
構文
APEX_SPATIAL.POINT (
p_lon IN NUMBER,
p_lat IN NUMBER,
p_srid IN t_srid DEFAULT c_wgs_84 )
RETURN mdsys.sdo_geometry;
パラメータ
戻り値
例
この例は、(10, 50)の点を戻す問合せです。
select apex_spatial.point(10, 50) from dual;
この例は、次の例と同じです。
select mdsys.sdo_geometry(2001, 4326, sdo_point_type(10, 50, null), null, null) from dual;
このファンクションは、(p_lon1, p_lat1)の点から(p_lon2, p_lat2)までの四角形を作成します。
構文
APEX_SPATIAL.RECTANGLE (
p_lon1 IN NUMBER,
p_lat1 IN NUMBER,
p_lon2 IN NUMBER,
p_lat2 IN NUMBER,
p_srid IN t_srid DEFAULT c_wgs_84 )
RETURN mdsys.sdo_geometry;
パラメータ
表24-9 RECTANGLEのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
左下点の経度の位置。 |
|
|
左下点の緯度の位置。 |
|
|
右上点の経度の位置。 |
|
|
右上点の緯度の位置。 |
|
|
参照座標系(デフォルトはc_wgs_84)。 |
戻り値
例
この例は、(10, 50)から(11, 51)までの四角形を戻す問合せです。
select apex_spatial.rectangle(10, 50, 11, 51) from dual
この例は、次の例と同じです。
select mdsys.sdo_geometry(
2003, 4326, null,
sdo_elem_info_array(1, 1003, 1),
sdo_ordinate_array(10, 50, 11, 50, 11, 51, 10, 51, 10, 50))
from dual;