25 SDO_GCDRパッケージ(ジオコーディング)

MDSYS.SDO_GCDRパッケージにはジオコーディングを実行するためのサブプログラムが含まれています。

この章で説明するサブプログラムを使用する場合は、ジオコーディングの概念および使用方法を理解しておく必要があります(「住所データのジオコーディング」を参照)。

ノート:

この章では、これらのサブプログラムのリファレンス情報をアルファベット順に説明します。

25.1 SDO_GCDR.CREATE_PROFILE_TABLES

構文

SDO_GCDR.CREATE_PROFILE_TABLES;

説明

コール元のスキーマにCG_COUNTRY_PROFILE表、GC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表を作成します。

パラメータ

なし。

使用上のノート

このプロシージャは、ジオコーディング・データ・プロバイダがGC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表を提供していない場合にのみ使用します。詳細は、「プロファイル表のインストール」を参照してください。

次の例では、コール元のスキーマにGC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表を作成します。

EXECUTE SDO_GCDR.CREATE_PROFILE_TABLES;

25.2 SDO_GCDR.ELOC_DRIVE_TIME_POLYGON

構文

SDO_GCDR.ELOC_DRIVE_TIME_POLYGON(
  route_preference        IN  VARCHAR2,
  start_address           IN  VARCHAR2,    
  country                 IN  VARCHAR2,
  cost                    IN  NUMBER,
  cost_unit               IN  VARCHAR2,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

または

SDO_GCDR.ELOC_DRIVE_TIME_POLYGON(
  route_preference        IN  VARCHAR2,
  longitude               IN  NUMBER,
  latitude                IN  NUMBER,    
  cost                    IN  NUMBER,
  cost_unit               IN  VARCHAR2,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

説明

指定されたコストの入力場所を囲むドライブ時間ポリゴンを計算し、ポリゴンのジオメトリをSDO_GEOMETRY形式で返します。

入力場所には、単一行アドレスを指定することも、経度および緯度を指定することもできます。

パラメータ

route_preference

ルーティング・プリファレンス。

サポートされる値は、shortestfastestおよびtrafficです。

start_address

完全な開始住所(別々のフィールドに形式化されていません)。

country

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

longitude

開始点の経度値。

latitude

開始点の緯度値。

cost

ポリゴンの距離または時間境界。

cost_unit

コストの単位。

サポートされる値は、milekilometerkmmeterhourminutesecondです。

vehicle_type

距離の計算に考慮される車両のタイプ。

サポートされる値は、autoおよびtruckです

print_request_response

送信されたリクエストおよび受信したレスポンスを印刷するかどうかを決定します。

デフォルトでは、パラメータ値はFALSEです。

使用上のノート

ノート:

SDO_GCDR.ELOC_DRIVE_TIME_POLYGONファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

SDO_GCDR.ELOC_DRIVE_TIME_POLYGONファンクションは、次の入力パラメータのセットのいずれかを受け入れて、指定された場所を囲むドライブ時間ポリゴンを(ジオメトリとして)計算できます。

  • 形式化されていない住所の使用: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、start_addressパラメータを指定します。
  • 地理座標の使用: longitudeおよびlatitudeパラメータを指定して場所を決定します。

各パラメータ入力には、表またはビューの列、または明示的な文字列または数値も指定できます。

次の例では、トラックの住所を囲む最速のドライブ時間ポリゴンを計算します:

SELECT SDO_GCDR.ELOC_DRIVE_TIME_POLYGON('fastest', '1 Oracle Dr, Nashua, NH', 'US', 1, 'minute', 'truck') polygon FROM DUAL;

POLYGON(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
------------------------------------------------------------------------------------------
SDO_GEOMETRY(2003, 4326, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(-71.46924,
 42.76051, -71.46928, 42.76, -71.46919, 42.75975, -71.46911, 42.75962, -71.46899, 42.7594,
 -71.46974, 42.75638, -71.47012, 42.75626, -71.47038, 42.75617, -71.46688, 42.7552, -71.46602,
 42.75482, -71.46409, 42.75397, -71.46244, 42.75343, -71.4618, 42.75311, -71.46102, 42.7542,
 -71.46054, 42.75496, -71.45947, 42.75647, -71.45924, 42.75761, -71.45815, 42.75858, -71.45741,
 42.75912, -71.45813, 42.75955, -71.45959, 42.76009, -71.46187, 42.76099, -71.46227, 42.76177,
 -71.46266, 42.76243, -71.46354, 42.76268,-71.46447, 42.76344, -71.46639, 42.76425, -71.4668,
 42.76412, -71.46668, 42.76387, -71.46683, 42.7625, -71.46732, 42.76183, -71.46924, 42.76051))

25.3 SDO_GCDR.ELOC_GEOCODE

構文

SDO_GCDR.ELOC_GEOCODE(
     street      IN VARCHAR2, 
     city        IN VARCHAR2, 
     region      IN VARCHAR2,
     postal_code IN VARCHAR2,
     cc2         IN VARCHAR2, 
     match_mode  IN VARCHAR2 default 'DEFAULT');

または

SDO_GCDR.ELOC_GEOCODE(address IN VARCHAR2);

または

SDO_GCDR.ELOC_GEOCODE( 
     longitude IN NUMBER,
     latitude  IN NUMBER);

説明

形式化された(別々のフィールドの住所部分)または形式化されていない(単一の文字列フィールドの完全な住所)住所をジオコードし、地理座標およびジオコーディング・メタデータを含む標準化された住所をJSON形式で戻します。

経度および緯度の入力の場合、ファンクションは位置を逆にジオコードし、JSON形式で住所を戻します。

パラメータ

street

通りの名前。

city

市区町村の名前。

region

リージョンの名前。

postal_code

郵便番号。

cc2

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

match_mode

ジオコーディング操作の一致モードを指定します。一致モードの詳細は、「一致モード」を参照してください。

address

完全な住所(別々のフィールドに形式化されていません)。

longitude

逆ジオコーディング操作の経度値。

latitude

逆ジオコーディング操作の緯度値。

使用上のノート

ノート:

SDO_GCDR.ELOC_GEOCODEファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

このファンクションは、入力パラメータに応じて次の操作を実行します。各パラメータ入力には、表またはビューの列、または明示的な文字列または数値を指定できます。

  • 形式化された住所のジオコーディング: ファンクションのパラメータ(streetcityregionpostal_codecc2など)に対応する住所フィールドを指定します。

    このファンクションでは、ジオコーディング操作のデフォルトの一致モードとして'DEFAULT'が使用されることに注意してください。詳細は、「一致モード」を参照してください。

    「例-1」を参照してください。

  • 形式化されていない住所のジオコーディング: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、完全な住所に対応するaddressフィールドを指定します。

    「例-2」を参照してください。

  • 位置の逆ジオコーディング: 経度および緯度の座標を指定する必要があり、ファンクションはJSON形式で住所を戻します。

    「例-3」を参照してください。

例-1

次の例では、デフォルトの一致モードを使用して、形式化された住所をジオコードします。この場合、この住所の経度と緯度の座標が、それぞれ-71.07355166666666および42.355174166666664として戻されます。

SELECT SDO_GCDR.ELOC_GEOCODE('123 Beacon St', 'Boston', 'MA', '02116' , 'US') FROM DUAL;

[{"id":"0","matchCount":"1","matches":[{"sequence":"0","x":-71.07355166666666,"y":42.355174166666664,
  "houseNumber":"123","street":"Beacon St","settlement":"Boston","municipality":"Suffolk","region":"MA",
  "postalCode":"02116","country":"US","language":"ENG","name":"","edgeId":946710796,
  "percent":0.08333333333333333,"side":"R","matchCode":1,"matchVector":"???10101010??000?"}]}]
例-2

次の例では、形式化されていない住所をジオコードします。この場合、この住所の経度と緯度の座標が、それぞれ-71.07355166666666および42.355174166666664として戻されます。

SELECT SDO_GCDR.ELOC_GEOCODE('123 Beacon St, Boston MA, 02116, US') FROM DUAL;

[{"id":"0","matchCount":"1","matches":[{"sequence":"0","x":-71.07355166666666,"y":42.355174166666664,
  "houseNumber":"123","street":"Beacon St","settlement":"Boston","municipality":"Suffolk","region":"MA",
  "postalCode":"02116","country":"US","language":"ENG","name":"","edgeId":946710796,
  "percent":0.08333333333333333,"side":"R","matchCode":1,"matchVector":"???10101010??000?"}]}]
例-3

次の例では、地理的位置を逆にジオコードします。経度(-71.073551)および緯度(42.355174)の座標の住所を戻します。

SELECT SDO_GCDR.ELOC_GEOCODE(-71.073551, 42.355174) FROM DUAL;

[{"id":"0","matchCount":"1","matches":[{"sequence":"0","x":-71.07355109772594,"y":42.35517433341787,
  "houseNumber":"123","street":"Beacon St","settlement":"Boston","municipality":"Suffolk","region":"MA",
  "postalCode":"02116","country":"US","language":"ENG","name":"","edgeId":946710796,
  "percent":0.08431426223078922,"side":"R","matchCode":1,"matchVector":"???14141414??404?"}]}]

25.4 SDO_GCDR.ELOC_GEOCODE_AS_GEOM

構文

SDO_GCDR.ELOC_GEOCODE_AS_GEOM(
     street      IN VARCHAR2, 
     city        IN VARCHAR2, 
     region      IN VARCHAR2,
     postal_code IN VARCHAR2,
     cc2         IN VARCHAR2, 
     match_mode  IN VARCHAR2 default 'DEFAULT');

または

SDO_GCDR.ELOC_GEOCODE_AS_GEOM(address IN VARCHAR2);

説明

形式化された(別々のフィールドの住所部分)または形式化されていない(単一の文字列フィールドの完全な住所)住所をジオコードし、地理座標およびジオコーディング・メタデータを含む標準化された住所をSDO_GEOMETRYオブジェクトとして戻します。

パラメータ

street

通りの名前。

city

市区町村の名前。

region

リージョンの名前。

postal_code

郵便番号。

cc2

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

match_mode

ジオコーディング操作の一致モードを指定します。一致モードの詳細は、「一致モード」を参照してください。

address

完全な住所(別々のフィールドに形式化されていません)。

使用上のノート

ノート:

SDO_GCDR.ELOC_GEOCODE_AS_GEOMファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

このファンクションは、入力パラメータに応じて次の操作を実行します。各パラメータ入力には、表またはビューの列、または明示的な文字列または数値を指定できます。

  • 形式化された住所のジオコーディング: ファンクションのパラメータ(streetcityregionpostal_codecc2など)に対応する住所フィールドを指定します。

    このファンクションでは、ジオコーディング操作のデフォルトの一致モードとして'DEFAULT'が使用されることに注意してください。詳細は、「一致モード」を参照してください。

  • 形式化されていない住所のジオコーディング: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、完全な住所に対応するaddressフィールドを指定します。

次の例では、デフォルトの一致モードを使用して、形式化された住所をジオコードし、出力をSDO_GEOMETRYオブジェクトとして戻します。

SELECT SDO_GCDR.ELOC_GEOCODE_AS_GEOM('123 Beacon St', 'Boston', 'MA', '02116' , 'US') FROM DUAL;

MDSYS.SDO_GEOMETRY(2001, 4326,
        MDSYS.SDO_POINT_TYPE(-71.07355166666666, 42.355174166666664, NULL), NULL, NULL)

Autonomous Databaseインスタンスのデータベース・アクションでSQLワークシートを使用している場合、すべてのオブジェクト・タイプ(SDO_GEOMETRYを含む)が[object Object]として表示されることに注意してください。SQLワークシートに結果を表示するには、次のようにGet_GeoJSON( )メソッドを適用して、結果をGeoJSON文字列に変換します:

SELECT (SDO_GCDR.ELOC_GEOCODE_AS_GEOM('123 Beacon St', 'Boston', 'MA', '02116' , 'US')).GET_GEOJSON() FROM DUAL;

{ "type": "Point", "coordinates": [-71.07355166666666, 42.355174166666664] }

25.5 SDO_GCDR.ELOC_GRANT_ACCESS

構文

SDO_GCDR.ELOC_GRANT_ACCESS(
     user_name IN VARCHAR2);

説明

Autonomous DatabaseインスタンスでOracle Mapsジオコーダをコールする権限をユーザーに付与します。

パラメータ

user_name

Oracle Mapsクラウド・サービスへのアクセスを必要とするユーザーの名前。

使用上のノート

ノート:

SDO_GCDR.ELOC_GRANT_ACCESSファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスで、ADMINユーザーとしてSDO_GCDR.ELOC_GRANT_ACCESSファンクションを起動する必要があります。

次の例では、Autonomous Databaseインスタンスでジオコーダ機能を使用するためのアクセス権をユーザーSCOTTに付与します。

EXEC SDO_GCDR.ELOC_GRANT_ACCESS('SCOTT');

PL/SQL procedure successfully completed.

25.6 SDO_GCDR.ELOC_ISO_POLYGON

構文

SDO_GCDR.ELOC_ISO_POLYGON(
  iso                     IN  VARCHAR2,
  start_address           IN  VARCHAR2,    
  country                 IN  VARCHAR2,
  cost                    IN  NUMBER,
  cost_unit               IN  VARCHAR2,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

または

SDO_GCDR.ELOC_ISO_POLYGON(
  iso                     IN  VARCHAR2,
  longitude               IN  NUMBER,
  latitude                IN  NUMBER,    
  cost                    IN  NUMBER,
  cost_unit               IN  VARCHAR2,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

説明

指定されたコストの入力場所の周囲でドライブ時間ポリゴンを計算し、ポリゴンのコスト、コスト単位およびジオメトリを含むJSONオブジェクトをGeoJSON形式で返します。

入力場所には、単一行アドレスを指定することも、経度および緯度を指定することもできます。

パラメータ

iso

時間ベースまたは距離ベースのポリゴンかどうかを決定します。

サポートされている値は次のとおりです:
  • distance: これは距離ベースのポリゴンに適用されます。
  • time: これは時間ベースのポリゴンに適用されます。
start_address

完全な開始住所(別々のフィールドに形式化されていません)。

country

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

longitude

開始点の経度値。

latitude

開始点の緯度値。

cost

ポリゴンの距離または時間境界。

cost_unit

コストの単位。

サポートされる値は、milekilometerkmmeterhourminutesecondです。

vehicle_type

距離の計算に考慮される車両のタイプ。

サポートされる値は、autoおよびtruckです

print_request_response

送信されたリクエストおよび受信したレスポンスを印刷するかどうかを決定します。

デフォルトでは、パラメータ値はFALSEです。

使用上のノート

ノート:

SDO_GCDR.ELOC_ISO_POLYGONファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

SDO_GCDR.ELOC_ISO_POLYGONファンクションは、次の入力パラメータのセットのいずれかを受け入れて、場所の周囲でドライブ時間ポリゴンを(JSONオブジェクトとして)計算できます。

  • 形式化されていない住所の使用: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、start_addressパラメータを指定します。
  • 地理座標の使用: longitudeおよびlatitudeパラメータを指定して場所を決定します。

各パラメータ入力には、表またはビューの列、または明示的な文字列または数値も指定できます。

次に、JSON出力のスキーマについて説明します:

{
  "type": "object",
  "properties": {
    "routeResponse": {
      "type": "object",
      "properties": {
        "driveTimePolygon": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "cost": {
              "type": "string"
            },
            "unit": {
              "type": "string"
            },
            "geometry": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "coordinates": {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "number"
                      }
                    }
                  }
                }
              },
              "required": [..]
            }
          },
          "required": [..]
        }
      },
      "required": [..]
    }
  },
  "required": [..]
}

次の例では、自動車の住所を囲むドライブ時間ポリゴンを計算します。コスト、単位およびポリゴン・ジオメトリの出力値は、JSON_VALUEおよびJSON_QUERYファンクションを使用して結果のJSONオブジェクトから抽出されることに注意してください:

WITH x AS
(SELECT SDO_GCDR.ELOC_ISO_POLYGON('time', '1 Oracle Drive, Nashua, NH', 'US', 1, 'minute', 'auto') AS t FROM DUAL)
 SELECT json_value(t, '$.routeResponse.driveTimePolygon.cost') AS cost,
        json_value(t, '$.routeResponse.driveTimePolygon.unit') AS unit,
        json_query(t, '$.routeResponse.driveTimePolygon.geometry' RETURNING clob) AS geom
FROM x;

1
minute
{"type":"Polygon","coordinates":[[[-71.46924,42.76051],[-71.46928,42.76],[-71.46919,42.75975],[-71.46911,42.75962],
                                  [-71.46899,42.7594],[-71.46974,42.75638],[-71.47012,42.75626],[-71.47038,42.75617],
                                  [-71.46688,42.7552],[-71.46602,42.75482],[-71.46409,42.75397],[-71.46244,42.75343],
                                  [-71.4618,42.75311],[-71.46102,42.7542],[-71.46054,42.75496],[-71.45947,42.75647],
                                  [-71.45924,42.75761],[-71.45815,42.75858],[-71.45741,42.75912],[-71.45813,42.75955],
                                  [-71.45959,42.76009],[-71.46187,42.76099],[-71.46227,42.76177],[-71.46266,42.76243],
                                  [-71.46354,42.76268],[-71.46447,42.76344],[-71.46639,42.76425],[-71.4668,42.76412],
                                  [-71.46668,42.76387],[-71.46683,42.7625],[-71.46732,42.76183],[-71.46924,42.76051]]]}

25.7 SDO_GCDR.ELOC_REVOKE_ACCESS

構文

SDO_GCDR.ELOC_REVOKE_ACCESS(
     user_name IN VARCHAR2);

説明

ユーザーがAutonomous DatabaseインスタンスでOracle Mapsジオコーダをコールする権限を取り消します。

パラメータ

user_name

Oracle Mapsクラウド・サービスへのアクセスが取り消されるユーザーの名前。

使用上のノート

ノート:

SDO_GCDR.ELOC_REVOKE_ACCESSファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスで、ADMINユーザーとしてSDO_GCDR.ELOC_REVOKE_ACCESSファンクションを起動する必要があります。

次の例では、ユーザーSCOTTAutonomous Databaseインスタンスでジオコーダ機能を使用するための権限を取り消します。

EXEC SDO_GCDR.ELOC_REVOKE_ACCESS('SCOTT');

PL/SQL procedure successfully completed.

25.8 SDO_GCDR.ELOC_ROUTE

構文

SDO_GCDR.ELOC_ROUTE(
  route_preference        IN  VARCHAR2,
  distance_unit           IN  VARCHAR2,
  time_unit               IN  VARCHAR2,  
  start_address           IN  VARCHAR2,    
  end_address             IN  VARCHAR2,    
  country                 IN  VARCHAR2,    
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

または

SDO_GCDR.ELOC_ROUTE(
  route_preference        IN  VARCHAR2,
  distance_unit           IN  VARCHAR2,
  time_unit               IN  VARCHAR2,  
  start_longitude         IN  NUMBER,
  start_latitude          IN  NUMBER,    
  end_longitude           IN  NUMBER,    
  end_latitude            IN  NUMBER,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

説明

2つの場所の間のルートを計算し、ルート距離、ルート時間およびルートのジオメトリを含むJSONオブジェクトをGeoJSON形式で返します。

入力場所は、単一行アドレスにすることも、地理座標で指定することもできます。

パラメータ

route_preference

ルーティング・プリファレンス。

サポートされる値は、shortestfastestおよびtrafficです。

distance_unit

距離の単位。

サポートされる値は、milekilometerkmおよびmeterです。

time_unit

時間の単位。

サポートされる値は、hourminuteおよびsecondです。

start_address

完全な開始住所(別々のフィールドに形式化されていません)。

end_address

完全な終了住所(別々のフィールドに形式化されていません)。

country

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

start_longitude

開始点の経度値。

start_latitude

開始点の緯度値。

end_longitude

終了点の経度値。

end_latitude

終了点の緯度値。

vehicle_type

距離の計算に考慮される車両のタイプ。

サポートされる値は、autoおよびtruckです

print_request_response

送信されたリクエストおよび受信したレスポンスを印刷するかどうかを決定します。

デフォルトでは、パラメータ値はFALSEです。

使用上のノート

ノート:

SDO_GCDR.ELOC_ROUTEファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

SDO_GCDR.ELOC_ROUTEファンクションは、次のパラメータ・セットのいずれかを受け入れて、2点の間のルートを決定できます:

  • 形式化されていない住所の使用: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、start_addressおよびend_addressパラメータを指定します。
  • 地理座標の使用: start_longitudestart_latitudeend_longitudeおよびend_latitudeパラメータを指定して、出発地と目的地を決定します。

各パラメータ入力には、表またはビューの列、または明示的な文字列または数値を指定できます。

次に、出力JSONオブジェクトのスキーマについて説明します:

{
 "type": "object",
  "properties": {
    "routeResponse": {
      "type": "object",
      "properties": {
        "route": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string"
            },
            "distance": {
              "type": "string"
            },
            "distanceUnit": {
              "type": "string"
            },
            "time": {
              "type": "string"
            },
            "timeUnit": {
              "type": "string"
            },
            "geometry": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },

                "coordinates": {
                  "type": "array",
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "number"
                    }
                  }
                }
              },
              "required": [. .]
            }
          },
          "required": [..]
        }
      },
      "required": [..]
    }
  },

  "required": [..]
}

次の例では、SDO_GCDR.ELOC_ROUTEファンクションを呼び出し、2つの地理座標間で自動車によって取得された最速のルートを計算します。ルート距離、移動時間およびルート・ジオメトリの出力値は、JSON_VALUEおよびJSON_QUERYファンクションを使用して結果のJSONオブジェクトから抽出されることに注意してください:

WITH x AS
(SELECT SDO_GCDR.ELOC_ROUTE('fastest', 'km', 'minute', -71.46439, 42.75875,-71.46278, 42.7553, 'auto') AS t FROM DUAL)
SELECT json_value(t, '$.routeResponse.route.time') AS TIME,
       json_value(t, '$.routeResponse.route.distance') AS DIST,
       json_query(t, '$.routeResponse.route.geometry' RETURNING CLOB
                  ) AS GEOM
FROM x;

TIME DIST GEOM                                                                                                
---- ---- ---------------------------------------------------------------------------------------------------
0.7  0.41 {"type":"LineString","coordinates":[[-71.4643900005,42.7587499999],[-71.46439,42.75875],
                                              [-71.46433,42.75862],[-71.46431,42.75858],[-71.46421,42.75837],
											  [-71.4641,42.75813],[-71.46397,42.75785],[-71.46375,42.75739],
											  [-71.4637,42.75728],[-71.46368,42.75724],[-71.46359,42.75706],
											  [-71.46351,42.75689],[-71.46333,42.75656],[-71.46326,42.75639],
											  [-71.46312,42.75605],[-71.46296,42.75568],[-71.46278,42.7553]]} 

25.9 SDO_GCDR.ELOC_ROUTE_DISTANCE

構文

SDO_GCDR.ELOC_ROUTE_DISTANCE(
  route_preference        IN  VARCHAR2,   
  distance_unit           IN  VARCHAR2,    
  start_address           IN  VARCHAR2,    
  end_address             IN  VARCHAR2,    
  country                 IN  VARCHAR2,    
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

または

SDO_GCDR.ELOC_ROUTE_DISTANCE(
  route_preference        IN  VARCHAR2,    
  distance_unit           IN  VARCHAR2,
  start_longitude         IN  NUMBER,
  start_latitude          IN  NUMBER,  
  end_longitude           IN  NUMBER,    
  end_latitude            IN  NUMBER,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

説明

2つの場所の間のルート距離を計算します。

入力場所は、単一行アドレスにすることも、地理座標で指定することもできます。

パラメータ

route_preference

ルーティング・プリファレンス。

サポートされる値は、shortestfastestおよびtrafficです。

distance_unit

距離の単位。

サポートされる値は、milekilometerkmおよびmeterです。

start_address

完全な開始住所(別々のフィールドに形式化されていません)。

end_address

完全な終了住所(別々のフィールドに形式化されていません)。

country

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

start_longitude

開始点の経度値。

start_latitude

開始点の緯度値。

end_longitude

終了点の経度値。

end_latitude

終了点の緯度値。

vehicle_type

距離の計算に考慮される車両のタイプ。

サポートされる値は、autoおよびtruckです

print_request_response

送信されたリクエストおよび受信したレスポンスを印刷するかどうかを決定します。

デフォルトでは、パラメータ値はFALSEです。

使用上のノート

ノート:

SDO_GCDR.ELOC_ROUTE_DISTANCEファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

SDO_GCDR.ELOC_ROUTE_DISTANCEファンクションは、次のパラメータ・セットのいずれかを受け入れて、2点の間の距離を計算できます:

  • 形式化されていない住所の使用: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、start_addressおよびend_addressパラメータを指定します。
  • 地理座標の使用: start_longitudestart_latitudeend_longitudeおよびend_latitudeパラメータを指定して、出発地と目的地を決定します。

各パラメータ入力には、表またはビューの列、または明示的な文字列または数値を指定できます。

次の例では、2つの住所位置間のトラックの最短ルート距離(マイル)を計算します。

SELECT SDO_GCDR.ELOC_ROUTE_DISTANCE('shortest', 'mile', '1 Oracle Dr, Nashua, NH', '77 Massachusetts Ave, Cambridge, MA', 'US', 'truck') route_dist FROM DUAL;

ROUTE_DIST
----------
     33.22

次の例では、経度座標と緯度座標を使用して、2点間の自動車の最速ルート距離(マイル)を計算します。

SELECT SDO_GCDR.ELOC_ROUTE_DISTANCE('fastest', 'mile', -122.39436, 37.79579, -122.40459, 37.74211,'auto') route_dist FROM DUAL;

ROUTE_DIST 
---------- 
      4.51 

25.10 SDO_GCDR.ELOC_ROUTE_GEOM

構文

SDO_GCDR.ELOC_ROUTE_GEOM(
  route_preference        IN  VARCHAR2,       
  start_address           IN  VARCHAR2,    
  end_address             IN  VARCHAR2,    
  country                 IN  VARCHAR2,    
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

または

SDO_GCDR.ELOC_ROUTE_GEOM(
  route_preference        IN  VARCHAR2,      
  start_longitude         IN  NUMBER,
  start_latitude          IN  NUMBER,    
  end_longitude           IN  NUMBER,    
  end_latitude            IN  NUMBER,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

説明

2つの場所の間のルートを計算し、ルートのジオメトリをSDO_GEOMETRY形式で返します。

入力場所は、単一行アドレスにすることも、地理座標で指定することもできます。

パラメータ

route_preference

ルーティング・プリファレンス。

サポートされる値は、shortestfastestおよびtrafficです。

start_address

完全な開始住所(別々のフィールドに形式化されていません)。

end_address

完全な終了住所(別々のフィールドに形式化されていません)。

country

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

start_longitude

開始点の経度値。

start_latitude

開始点の緯度値。

end_longitude

終了点の経度値。

end_latitude

終了点の緯度値。

vehicle_type

距離の計算に考慮される車両のタイプ。

サポートされる値は、autoおよびtruckです

print_request_response

送信されたリクエストおよび受信したレスポンスを印刷するかどうかを決定します。

デフォルトでは、パラメータ値はFALSEです。

使用上のノート

ノート:

SDO_GCDR.ELOC_ROUTE_GEOMファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

SDO_GCDR.ELOC_ROUTE_GEOMファンクションは、次のパラメータ・セットのいずれかを受け入れて、2つのポイント間のルート・ジオメトリを決定できます:

  • 形式化されていない住所の使用: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、start_addressおよびend_addressパラメータを指定します。
  • 地理座標の使用: start_longitudestart_latitudeend_longitudeおよびend_latitudeパラメータを指定して、出発地と目的地を決定します。

各パラメータ入力には、表またはビューの列、または明示的な文字列または数値を指定できます。

次の例では、2つの地理座標間のトラックで取得した最短ルート・ジオメトリを計算します。

SELECT SDO_GCDR.ELOC_ROUTE_GEOM('shortest', -71.46439, 42.75875,-71.46278, 42.7553, 'truck') route_geom FROM DUAL;

ROUTE_GEOM 
–-------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
MDSYS.SDO_GEOMETRY(2002, 4326, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(-71.4643900005, 42.7587499999,
    -71.46439, 42.75875, -71.46433, 42.75862, -71.46431, 42.75858, -71.46421, 42.75837, -71.4641, 42.75813, -71.46397, 42.75785,
	-71.46375, 42.75739, -71.4637, 42.75728, -71.46368, 42.75724, -71.46359, 42.75706, -71.46351, 42.75689, -71.46333, 42.75656,
	-71.46326, 42.75639, -71.46312, 42.75605, -71.46296, 42.75568, -71.46278, 42.7553, -71.46278, 42.7553))

25.11 SDO_GCDR.ELOC_ROUTE_TIME

構文

SDO_GCDR.ELOC_ROUTE_TIME(
  route_preference        IN  VARCHAR2,    
  time_unit               IN  VARCHAR2,    
  start_address           IN  VARCHAR2,    
  end_address             IN  VARCHAR2,    
  country                 IN  VARCHAR2,    
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

または

SDO_GCDR.ELOC_ROUTE_TIME(
  route_preference        IN  VARCHAR2,    
  time_unit               IN  VARCHAR2,
  start_longitude         IN  NUMBER,
  start_latitude          IN  NUMBER,    
  end_longitude           IN  NUMBER,    
  end_latitude            IN  NUMBER,
  vehicle_type            IN  VARCHAR2,    
  print_request_response  IN  VARCHAR2 DEFAULT 'FALSE');

説明

2つの場所の間の移動時間を計算します。

入力場所は、単一行アドレスにすることも、地理座標で指定することもできます。

パラメータ

route_preference

ルーティング・プリファレンス。

サポートされる値は、shortestfastestおよびtrafficです。

time_unit

時間の単位。

サポートされる値は、hourminuteおよびsecondです。

start_address

完全な開始住所(別々のフィールドに形式化されていません)。

end_address

完全な終了住所(別々のフィールドに形式化されていません)。

country

ISOの2文字の国コード。サポートされているコードのリストを表示するには、ISO Online Browsing Platform (OBP)Country codesを参照してください。

start_longitude

開始点の経度値。

start_latitude

開始点の緯度値。

end_longitude

終了点の経度値。

end_latitude

終了点の緯度値。

vehicle_type

距離の計算に考慮される車両のタイプ。

サポートされる値は、autoおよびtruckです

print_request_response

送信されたリクエストおよび受信したレスポンスを印刷するかどうかを決定します。

デフォルトでは、パラメータ値はFALSEです。

使用上のノート

ノート:

SDO_GCDR.ELOC_ROUTE_TIMEファンクションは、Oracle Autonomous Databaseサーバーレス・デプロイメントでのみサポートされています。

Autonomous Databaseインスタンスでこのファンクションを使用するには、必要な権限が付与されていることを確認してください。詳細は、SDO_GCDR.ELOC_GRANT_ACCESSを参照してください。

SDO_GCDR.ELOC_ROUTE_TIMEファンクションは、次のパラメータ・セットのいずれかを受け入れて、2点の間の移動時間を計算できます:

  • 形式化されていない住所の使用: 完全な住所が単一のフィールドに格納されている(つまり、形式化されていない)場合、start_addressおよびend_addressパラメータを指定します。
  • 地理座標の使用: start_longitudestart_latitudeend_longitudeおよびend_latitudeパラメータを指定して、出発地と目的地を決定します。

各パラメータ入力には、表またはビューの列、または明示的な文字列または数値を指定できます。

次の例では、地理座標によって決定された2つの場所間で自動車によって取得された最速ルートの移動時間(分)を計算します。

SELECT SDO_GCDR.ELOC_ROUTE_TIME('fastest', 'minute', -122.39436, 37.79579, -122.40459, 37.74211, 'auto') route_time FROM DUAL;

ROUTE_TIME 
---------- 
      8.02

次の例では、2つの住所の間でトラックによって取得された最速ルートの移動時間(分)を計算します。また、print_request_responseパラメータがTRUEに設定されているため、問合せによってリクエストおよびレスポンスの出力が生成されることに注意してください。

SELECT SDO_GCDR.ELOC_ROUTE_TIME('fastest', 'minute', '1 Oracle Dr, Nashua, NH', '45 Middlesex road, Tyngborough, MA', 'US', 'truck', 'TRUE') route_time FROM DUAL;

ROUTE_TIME
----------
     11.24

1 row selected.

REQUEST: xml_request=<route_request id="1" route_preference="fastest"
time_unit="minute" vehicle_type="truck"> <start_location> <input_location
id="1"> <input_address><unformatted country="US" > <address_line value="1 Oracle
Dr, Nashua, NH"/> </unformatted></input_address>
</input_location></start_location> <end_location> <input_location id="2">
<input_address><unformatted country="US" > <address_line value="45 Middlesex
road, Tyngborough, MA"/> </unformatted></input_address>
</input_location></end_location> </route_request>

RESPONSE: {
  "type" : "Feature",
  "geometry" :
{"type":"Polygon","coordinates":[]},
  "properties" : {
    "requestType" :
"route",
    "featureType" : "route",
    "stepCount" : "0",
    "dist" :
"6.3",
    "distUnit" : "mile",
    "time" : "11.24",
    "timeUnit" : "minute"

}
}

25.12 SDO_GCDR.GEOCODE

構文

SDO_GCDR.GEOCODE(
     username   IN VARCHAR2, 
     addr_lines IN SDO_KEYWORDARRAY, 
     country    IN VARCHAR2, 
     match_mode IN VARCHAR2 
     ) RETURN SDO_GEO_ADDR;

説明

形式化されていない住所をジオコードして、結果をSDO_GEO_ADDRオブジェクトとして戻します。

パラメータ

username

ジオコーディングを行うデータを含む表を所有するユーザー名を指定します。

addr_lines

ジオコード対象の形式化されていない住所を表す文字列の配列を、引用符で囲んで指定します。SDO_KEYWORDARRAY型の詳細は、「SDO_KEYWORDARRAY型」を参照してください。

country

国名またはISOの国コード。

match_mode

ジオコーディング操作の一致モードを指定します。一致モードの詳細は、「一致モード」を参照してください。

使用上のノート

このファンクションは、SDO_GEOR_ADDR型のオブジェクトを戻します(「SDO_GEO_ADDR型」を参照)。実行する操作はSDO_GCDR.GEOCODE_AS_GEOMETRYファンクションと同じですが、そのファンクションはSDO_GEOMETRYオブジェクトを戻します。

次の例では、RELAX_BASE_NAME一致モードを使用して、California州San Francisco市の市庁舎の住所をジオコードします。この場合、この住所の緯度と経度の座標が、それぞれ-122.41815および37.7784183として戻されます。

SELECT SDO_GCDR.GEOCODE('SCOTT', SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl',
   'San Francisco, CA  94102'), 'US', 'RELAX_BASE_NAME') FROM DUAL;
 
SDO_GCDR.GEOCODE('SCOTT',SDO_KEYWORDARRAY('1CARLTONBGOODLETTPL','SANFRANCISCO
--------------------------------------------------------------------------------
SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'CARLTON B GOODLETT PL', NULL, NULL, '
SAN FRANCISCO', NULL, 'CA', 'US', '94102', NULL, '94102', NULL, '1', 'CARLTON B
GOODLETT', 'PL', 'F', 'F', NULL, NULL, 'L', .01, 23614360, '????#ENUT?B281CP?',
1, 'RELAX_BASE_NAME', -122.41815, 37.7784183, '????0101010??000?')

25.13 SDO_GCDR.GEOCODE_ADDR

構文

SDO_GCDR.GEOCODE_ADDR(
     gc_username IN VARCHAR2, 
     address     IN SDO_GEO_ADDR 
     ) RETURN SDO_GEO_ADDR;

説明

SDO_GEO_ADDRオブジェクトの属性を使用して、入力された住所をジオコードし、最初に一致した住所をSDO_GEO_ADDRオブジェクトとして戻します。

パラメータ

gc_username

ジオコーディングを行うデータを含む表を所有するユーザー名を指定します。

address

1つ以上の属性セットを持つSDO_GEO_ADDRオブジェクトです。SDO_GEO_ADDR型の詳細は、「SDO_GEO_ADDR型」を参照してください。

使用上のノート

このファンクションでは、入力SDO_GEO_ADDRオブジェクトで設定可能な属性を必要に応じて指定できます。このファンクションは最初に一致する住所を検索し、可能な属性セットをすべて持つSDO_GEO_ADDRオブジェクトを戻します。

形式化されていない住所行で指定した入力住所をジオコードするSDO_GCDR.GEOCODEファンクションとは異なり、SDO_GCDR.GEOCODE_ADDRファンクションは、SDO_GEO_ADDRオブジェクトで定義した個々の住所フィールドで指定した入力住所をジオコードします。形式化されていない住所行を使用する場合、入力された住所を解析して個々の住所フィールドに分解するために、ジオコーディング・ソフトウェアを使用する必要があります。通常、この処理は問題なく実行されますが、入力された住所が十分に形式化されていない場合は、不適切な結果が生成されることがあります。これに対し、入力された住所の一部をSDO_GEO_ADDRオブジェクトの属性として指定すると、ジオコーディング・エラーの発生を減少させ、適切な結果を生成することができます。

SDO_GCDR.GEOCODE_ADDRファンクションの例については、「場所名からのジオコーディング」例12-2および例12-3を参照してください。

SDO_GCDR.GEOCODE_ADDR_ALLファンクションも参照してください(実行する操作はこのファンクションと同じですが、複数の住所を戻すことができます)。

次の例では、CALIFORNIA PACIFIC MEDICAL CTRという名前の対象点のジオコード結果を戻します。この例では、create_addr_from_placenameという名前のユーザー定義ファンクション(「場所名からのジオコーディング」例12-2で定義)を使用して入力SDO_GEO_ADDRオブジェクトを作成します。

SELECT sdo_gcdr.geocode_addr('SCOTT', 
  create_addr_from_placename('CALIFORNIA PACIFIC MEDICAL CTR', 'US')) 
FROM DUAL;

SDO_GCDR.GEOCODE_ADDR('SCOTT',CREATE_ADDR_FROM_PLACENAME('CALIFORNIAPACIFICME
--------------------------------------------------------------------------------
SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), 'CALIFORNIA PACIFIC MEDICAL CTR-SF', 'BUCHAN
AN ST', NULL, NULL, 'SAN FRANCISCO', NULL, 'CA', 'US', '94115', NULL, '94115', N
ULL, '2333', NULL, NULL, 'F', 'F', NULL, NULL, 'L', 0, 23599031, '??????????B281
CP?', 4, 'DEFAULT', -122.43097, 37.79138, '????4141114??404?')

25.14 SDO_GCDR.GEOCODE_ADDR_ALL

構文

SDO_GCDR.GEOCODE_ADDR_ALL(
     gc_username  IN VARCHAR2, 
     address      IN SDO_GEO_ADDR, 
     max_res_num  IN NUMBER DEFAULT 4000 
     ) RETURN SDO_ADDR_ARRAY;

説明

SDO_GEO_ADDRオブジェクトの属性を使用して、入力された住所をジオコードし、一致する住所をSDO_ADDR_ARRAYオブジェクトとして戻します(「SDO_ADDR_ARRAY型」を参照)。

パラメータ

gc_username

ジオコーディングを行うデータを含む表を所有するユーザー名を指定します。

address

1つ以上の属性セットを持つSDO_GEO_ADDRオブジェクトです。SDO_GEO_ADDR型の詳細は、「SDO_GEO_ADDR型」を参照してください。

max_res_num

SDO_ADDR_ARRAYオブジェクトで戻す結果の最大数を指定します。デフォルト値は4000です。

使用上のノート

このファンクションでは、入力SDO_GEO_ADDRオブジェクトで設定可能な属性を必要に応じて指定できます。このファンクションは一致する住所(最大4000またはmax_res_numパラメータで指定した上限まで)を検索し、SDO_ADDR_ARRAYオブジェクトを戻します。このオブジェクトでは、各ジオコード結果に可能な属性セットがすべて含まれます。

このファンクションは複数の住所を戻すことができますが、それ以外は、SDO_GCDR.GEOCODE_ADDRファンクションと同じ操作を実行します。詳細は、SDO_GCDR.GEOCODE_ADDRファンクションの「使用上のノート」を参照してください。

次の例では、CALIFORNIA PACIFIC MEDICAL CTRという名前の対象点のジオコード結果(最大3つ)を戻します。(ジオコーディング・データには、対象点に一致する住所が1つしか含まれないため、この場合に戻される結果は1つのみです。)この例では、create_addr_from_placenameという名前のユーザー定義ファンクション(「場所名からのジオコーディング」例12-2で定義)を使用して入力SDO_GEO_ADDRオブジェクトを作成します。

SELECT sdo_gcdr.geocode_addr_all('SCOTT', 
  create_addr_from_placename('CALIFORNIA PACIFIC MEDICAL CTR', 'US'), 3) 
FROM DUAL;

SDO_GCDR.GEOCODE_ADDR_ALL('SCOTT',CREATE_ADDR_FROM_PLACENAME('CALIFORNIAPACIF
--------------------------------------------------------------------------------
SDO_ADDR_ARRAY(SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), 'CALIFORNIA PACIFIC MEDICAL C
TR-SF', 'BUCHANAN ST', NULL, NULL, 'SAN FRANCISCO', NULL, 'CA', 'US', '94115', N
ULL, '94115', NULL, '2333', NULL, NULL, 'F', 'F', NULL, NULL, 'L', 0, 23599031,
'??????????B281CP?', 4, 'DEFAULT', -122.43097, 37.79138, '????4141114??404?'))

25.15 SDO_GCDR.GEOCODE_ALL

構文

SDO_GCDR.GEOCODE_ALL(
     gc_username  IN VARCHAR2, 
     addr_lines   IN SDO_KEYWORDARRAY, 
     country      IN VARCHAR2, 
     match_mode   IN VARCHAR2 
     ) RETURN SDO_ADDR_ARRAY;

説明

形式化されていない住所に関連付けられたすべての住所をジオコードして、結果をSDO_ADDR_ARRAYオブジェクトとして戻します。

パラメータ

gc_username

ジオコーディングを行うデータを含む表を所有するユーザー名を指定します。

addr_lines

ジオコード対象の形式化されていない住所を表す文字列の配列を、引用符で囲んで指定します。SDO_KEYWORDARRAY型の詳細は、「SDO_KEYWORDARRAY型」を参照してください。

country

国名またはISOの国コード。

match_mode

ジオコーディング操作の一致モードを指定します。一致モードの詳細は、「一致モード」を参照してください。

使用上のノート

このファンクションは、SDO_ADDR_ARRAY型のオブジェクトを戻します(「SDO_ADDR_ARRAY型」を参照)。実行する操作はSDO_GCDR.GEOCODEファンクションと同じですが、複数の住所に対する結果を戻すことができます。その場合、戻されるSDO_ADDR_ARRAYオブジェクトには、複数のSDO_GEO_ADDRオブジェクトが含まれます。アプリケーションの他の操作で住所を選択する必要がある場合、戻された各住所の情報を使用して、選択を簡単に行うことができます。

戻されるSDO_ADDR_ARRAY配列の各SDO_GEO_ADDRオブジェクトは、addr_linesパラメータの基準に一致する通りの各セグメントの中心点を示します。たとえば、大通りが2つの郵便番号の地区にまたがっている場合、または2つの別の郵便番号の地区内にそれぞれ大通りと呼ばれる通りがある場合に、このファンクションで大通り、都市および州を指定すると、戻されるSDO_ADDR_ARRAY配列には2つのSDO_GEO_ADDRオブジェクトが含まれます。各オブジェクトには、異なる郵便番号の地区にある大通りの中心点が反映されます。入力された住所に家または建物の番号が含まれていない場合、または存在しない番号が含まれている場合でも、各SDO_GEO_ADDRオブジェクトは家または建物の番号を示します。これは通りのセグメントの中心点に位置する家または建物の番号です。

次の例では、ジオコード結果の配列を戻します。各結果には、California州San Francisco市のClay通りを含むすべての郵便番号の地区について、その地区のClay通りの中心点が反映されます。結果の配列には4つのSDO_GEOR_ADDRオブジェクトが含まれます。各オブジェクトには、Clay通りを含む4つの地区の郵便番号(94108、94115、94118および94109)ごとに、Clay通りのセグメントの中心点に位置する家が反映されます。

SELECT SDO_GCDR.GEOCODE_ALL('SCOTT',
  SDO_KEYWORDARRAY('Clay St', 'San Francisco, CA'),
  'US', 'DEFAULT') FROM DUAL;
 
SDO_GCDR.GEOCODE_ALL('SCOTT',SDO_KEYWORDARRAY('CLAYST','SANFRANCISCO,CA'),'US
--------------------------------------------------------------------------------
SDO_ADDR_ARRAY(SDO_GEO_ADDR(1, SDO_KEYWORDARRAY(), NULL, 'CLAY ST', NULL, NULL,
'SAN FRANCISCO', NULL, 'CA', 'US', '94109', NULL, '94109', NULL, '1698', 'CLAY',
 'ST', 'F', 'F', NULL, NULL, 'L', 0, 23600700, '????#ENUT?B281CP?', 1, 'DEFAULT'
, -122.42093, 37.79236, '????4101010??004?'), SDO_GEO_ADDR(1, SDO_KEYWORDARRAY()
, NULL, 'CLAY ST', NULL, NULL, 'SAN FRANCISCO', NULL, 'CA', 'US', '94111', NULL,
 '94111', NULL, '398', 'CLAY', 'ST', 'F', 'F', NULL, NULL, 'L', 0, 23600678, '??
??#ENUT?B281CP?', 1, 'DEFAULT', -122.40027, 37.79499, '????4101010??004?'), SDO_
GEO_ADDR(1, SDO_KEYWORDARRAY(), NULL, 'CLAY ST', NULL, NULL, 'SAN FRANCISCO', NU
LL, 'CA', 'US', '94108', NULL, '94108', NULL, '978', 'CLAY', 'ST', 'F', 'F', NUL
L, NULL, 'L', 0, 23600689, '????#ENUT?B281CP?', 1, 'DEFAULT', -122.40904, 37.793
85, '????4101010??004?'), SDO_GEO_ADDR(1, SDO_KEYWORDARRAY(), NULL, 'CLAY ST', N
ULL, NULL, 'SAN FRANCISCO', NULL, 'CA', 'US', '94115', NULL, '94115', NULL, '279
8', 'CLAY', 'ST', 'F', 'F', NULL, NULL, 'L', 0, 23600709, '????#ENUT?B281CP?', 1
, 'DEFAULT', -122.43909, 37.79007, '????4101010??004?'), SDO_GEO_ADDR(1, SDO_KEY
WORDARRAY(), NULL, 'CLAY ST', NULL, NULL, 'SAN FRANCISCO', NULL, 'CA', 'US', '94
118', NULL, '94118', NULL, '3698', 'CLAY', 'ST', 'F', 'F', NULL, NULL, 'L', 0, 2
3600718, '????#ENUT?B281CP?', 1, 'DEFAULT', -122.45372, 37.78822, '????4101010??
004?'))

25.16 SDO_GCDR.GEOCODE_AS_GEOMETRY

構文

SDO_GCDR.GEOCODE_AS_GEOMETRY(
     username    IN VARCHAR2, 
     addr_lines  IN SDO_KEYWORDARRAY, 
     country     IN VARCHAR2 
     ) RETURN SDO_GEOMETRY;

説明

形式化されていない住所をジオコードして、結果をSDO_GEOMETRYオブジェクトとして戻します。

パラメータ

username

ジオコーディングを行うデータを含む表を所有するユーザー名を指定します。

addr_lines

ジオコード対象の形式化されていない住所を表す文字列の配列を、引用符で囲んで指定します。SDO_KEYWORDARRAY型の詳細は、「SDO_KEYWORDARRAY型」を参照してください。

country

国名またはISOの国コード。

使用上のノート

このファンクションは、SDO_GEOMETRY型のオブジェクトを戻します。実行する操作はSDO_GCDR.GEOCODEファンクションと同じですが、そのファンクションはSDO_GEOR_ADDRオブジェクトを戻します。

このファンクションでは、ジオコーディング操作の一致モードに'DEFAULT'を使用します。一致モードの詳細は、「一致モード」を参照してください。

次の例では、California州San Francisco市の市庁舎の住所をジオコードします。この場合に戻されるSDO_GEOMETRYオブジェクトでは、この住所の緯度と経度の座標がそれぞれ-122.41815および37.7784183となっています。

SELECT SDO_GCDR.GEOCODE_AS_GEOMETRY('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US') FROM DUAL;
 
SDO_GCDR.GEOCODE_AS_GEOMETRY('SCOTT',SDO_KEYWORDARRAY('1CARLTONBGOODLETTPL','
--------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-122.41815, 37.7784183, NULL), NULL, NUL
L)

25.17 SDO_GCDR.REVERSE_GEOCODE

構文

SDO_GCDR.REVERSE_GEOCODE(
     username IN VARCHAR2, 
     location IN SDO_GEOMETRY, 
     country  IN VARCHAR2 
     ) RETURN SDO_GEO_ADDR;

説明

空間ジオメトリ・オブジェクトと国で指定した位置を逆にジオコードし、結果をSDO_GEO_ADDRオブジェクトとして戻します。

パラメータ

username

ジオコーディングを行うデータを含む表を所有するユーザー名を指定します。

location

逆にジオコードする点の位置を指定するSDO_GEOMETRYオブジェクト。

country

国名またはISOの国コード。

使用上のノート

このファンクションは、SDO_GEOR_ADDR型のオブジェクトを戻します(「SDO_GEO_ADDR型」を参照)。

表GC_ROAD_SEGMENT_<table-suffix>には、空間索引を作成する必要があります。

次の例では、経度と緯度の値が(-122.41815, 37.7784183)の点を逆にジオコードします。この例の場合、空間索引は、GC_ROAD_SEGMENT_US表のGEOMETRY列に作成されています。

SELECT SDO_GCDR.REVERSE_GEOCODE('SCOTT',
  SDO_GEOMETRY(2001, 8307,
    SDO_POINT_TYPE(-122.41815, 37.7784183, NULL), NULL, NULL),
  'US') FROM DUAL;

SDO_GCDR.REVERSE_GEOCODE('SCOTT',SDO_GEOMETRY(2001,8307,SDO_POINT_TYPE(-122.4
--------------------------------------------------------------------------------
SDO_GEO_ADDR(0, SDO_KEYWORDARRAY(), NULL, 'POLK ST', NULL, NULL, 'SAN FRANCISCO'
, NULL, 'CA', 'US', '94102', NULL, '94102', NULL, '200', 'POLK', 'ST', 'F', 'F',
 NULL, NULL, 'R', .00966633, 23614360, '', 1, 'DEFAULT', -122.41815, 37.7784177,
 '????4141414??404?')