プライマリ・コンテンツに移動
Oracle® Application Express APIリファレンス
リリース5.0
E67397-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

24 APEX_SPATIAL

このパッケージを使用すると、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

CHANGE_GEOM_METADATAプロシージャ

このプロシージャは、空間メタデータ・レコードを変更します。

構文

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のパラメータ

パラメータ 説明

p_table_name

機能表の名前。

p_column_name

mdsys.sdo_geometryの列の名前。

p_new_table_name

機能表の新しい名前(または現行値のままの場合はnull)。

p_new_column_name

mdsys.sdo_geometryの列の新しい名前(または現行値のままの場合はnull)。

p_diminfo

ディメンションごとにエントリが1つあり、ディメンション順のSDO_DIM_ELEMENT配列。

p_srid

列の全ジオメトリに対する座標系のSRID値。


次に示すコードは、列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;

CIRCLE_POLYGONファンクション

このファンクションは、(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

左下点の緯度の位置。

p_radius

円の半径(m)。

p_arc_tolerance

円弧の許容差(デフォルトは20)。

p_srid

参照座標系(デフォルトはc_wgs_84)。


戻り値

表24-3 CIRCLE_POLYGONファンクションの戻り値

戻り値 説明

mdsys.sdo_geometry

円を近似するポリゴンのジオメトリ。


この例は、(0, 0)で半径1の円を近似するポリゴンを戻す問合せです。

select apex_spatial.circle_polygon(0, 0, 1) from dual

DELETE_GEOM_METADATAプロシージャ

このプロシージャは、空間メタデータ・レコードを削除します。

構文

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のパラメータ

パラメータ 説明

p_table_name

機能表の名前。

p_column_name

mdsys.sdo_geometryの列の名前。

p_drop_index

TRUE (デフォルトはFALSE)の場合、列の空間索引を削除します。


この例では、列CITIES.SHAPEのメタデータを削除し、この列の空間索引を削除します。

begin
    apex_spatial.delete_geom_metadata (
        p_table_name  => 'CITIES',
        p_column_name => 'SHAPE',
        p_drop_index  => true );
end;

INSERT_GEOM_METADATAプロシージャ

このプロシージャは、空間メタデータ・レコードを挿入し、オプションで空間索引を作成します。

構文

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のパラメータ

パラメータ 説明

p_table_name

機能表の名前。

p_column_name

mdsys.sdo_geometryの列の名前。

p_diminfo

ディメンションごとにエントリが1つあり、ディメンション順のSDO_DIM_ELEMENT配列。

p_srid

列の全ジオメトリに対する座標系のSRID値。

p_create_index_name

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
/

INSERT_GEOM_METADATA_LONLATプロシージャ

このプロシージャは、経度/緯度に合った空間メタデータ・レコードを挿入し、オプションで空間索引を作成します。

構文

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のパラメータ

パラメータ 説明

p_table_name

機能表の名前。

p_column_name

mdsys.sdo_geometryの列の名前。

p_tolerance

各ディメンションの許容差値(m) (デフォルトは1)。

p_create_index_name

nullでない場合、この名前で列の空間索引が作成されます。単純な列名のみがサポートされています。ファンクションベースの索引またはオブジェクト属性の索引はエラーとなります。より複雑な要件の場合は、このパラメータをnull (デフォルト)のままにし、手動で索引を作成します。


次に示すコードは、表CITIESおよび列CITIES.SHAPEの空間メタデータを作成します。CITIES_IDX_SHAPEp_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;
/

POINTファンクション

このファンクションは、(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;
    

パラメータ

表24-7 POINTのパラメータ

パラメータ 説明

p_lon

経度の位置。

p_lat

緯度の位置。

p_srid

参照座標系(デフォルトはc_wgs_84)。


戻り値

表24-8 POINTファンクションの戻り値

戻り値 説明

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;

RECTANGLEファンクション

このファンクションは、(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のパラメータ

パラメータ 説明

p_lon1

左下点の経度の位置。

p_lat1

左下点の緯度の位置。

p_lon2

右上点の経度の位置。

p_lat2

右上点の緯度の位置。

p_srid

参照座標系(デフォルトはc_wgs_84)。


戻り値

表24-10 RECTANGLEファンクションの戻り値

戻り値 説明

mdsys.sdo_geometry

四角形(p_lon1, p_lon2, p_lon2, p_lat2)のジオメトリ。


この例は、(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;