ヘッダーをスキップ
Oracle Spatial開発者ガイド
11g リリース1(11.1)
E05682-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

11 住所データのジオコーディング

ジオコーディングとは、住所を空間位置(経度と緯度の座標)に関連付ける処理のことです。この章の内容は次のとおりです。

11.1 ジオコーディングの概念

この項では、Spatialのジオコーディング機能を使用する前に理解しておく必要がある概念について説明します。

11.1.1 住所の表現

ジオコードする住所は、形式化された住所または形式化されていない住所のいずれかとして表現できます。

形式化された住所は、住所の様々な部分に対する一連の属性で記述されます。住所には、表11-1に示す属性の一部またはすべてを含めることができます。

表11-1 正式な住所表現の属性

住所の属性 説明

Name

場所の名前(オプション)。

Intersecting street

交差する通りの名前(オプション)。

Street

通りの住所(家やビルの番号を含む)、通りの名前、通りの種類(Street、Road、Blvdなど)および他の情報。

今回のリリースでは、通り名の最初の4文字がジオコーディング・データ内の通り名と一致しないと、一致する可能性がある通り名として認識されません。

Settlement

住所が属する最低レベルの行政区域。ほとんどの場合、これは市です。ヨーロッパの一部の国では、Settlementが大都市の一部の区域である可能性があります。この場合、その大都市はMunicipalityになります。

Municipality

Settlementより1つ上の行政区域。Municipalityは米国の住所には使用されません。ヨーロッパの国では、市にSettlementが含まれ、その市がMunicipalityになります。

Region

Municipality(存在する場合)より1つ上の行政区域、Municipalityが存在しない場合はSettlementより1つ上の行政区域。米国ではRegionは州ですが、他の一部の国ではRegionは県です。

Postal code

郵便番号(行政区域情報が提供されている場合はオプション)。米国では、郵便番号は5桁です。

Postal add-on code

郵便番号に付随する文字列。米国では通常、Postal add-on codeは「5-4」形式で指定される9桁の郵便番号の末尾4桁の番号を示します。

Country

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


形式化された住所は、SDO_GEO_ADDRデータ型を使用して指定されます(11.2.1項を参照)。

形式化されていない住所は、該当する国の住所形式に情報が含まれる行で記述されます。住所の行には、ジオコーディングに必要な情報を含める必要があります。また、ジオコーディングに必要ない情報(処理されていない住所内の一般的な情報)が含まれる場合もあります。形式化されていない住所は、文字列の配列として格納されます。たとえば、住所が「22 Monument Square」や「Concord, MA 01742」などの文字列で構成される場合があります。

形式化されていない住所は、SDO_KEYWORDARRAYデータ型を使用して指定されます(11.2.3項を参照)。

11.1.2 一致モード

ジオコーディング操作の一致モードは、入力された住所の属性が、ジオコーディングに使用されているデータとどの程度一致する必要があるかを決定します。入力された住所では、同じものが異なる方法で表現されていてもかまいません(Streetと短縮形のStなど)。また、小さい間違いが含まれてもかまいません(通りの住所と市の名前が正しく、その市にその通りの住所が1つしか存在しない場合に、郵便番号を間違えるなど)。

入力された住所とジオコーディングに使用されるデータが完全に一致しないと、ジオコーディングが実行されないように要求できます。または、一部の属性に対して、入力された住所にある程度の不一致または誤りが含まれている場合でもジオコーディングが実行されるように、要件を緩和することもできます。表11-2に、一致モードとその意味を示します。SDO_GEO_ADDRデータ型(11.2.1項を参照)のMatchMode属性、およびジオコーディングのファンクションまたはプロシージャのmatch_modeパラメータには、この表の値を使用します。

表11-2 ジオコーディング操作の一致モード

一致モード 説明

EXACT

入力された住所のすべての属性が、ジオコーディングに使用されるデータと一致する必要があります。ただし、家やビルの番号、通りのベース名、通りの種類、通りの接頭辞および通りの接尾辞のいずれもジオコーディング・データと一致しない場合、郵便番号、市や町の名前(Settlement)、州の名前の順で最初に一致した位置が戻されます。たとえば、通りの名前が正しくない場合でも有効な郵便番号が指定されている場合は、その郵便番号の位置が戻されます。

RELAX_STREET_TYPE

通りの種類が、ジオコーディングに使用されるデータと異なっていてもかまいません。たとえば、ジオコーディングに使用されるデータにMain St が含まれている場合、Main Street も一致します。同様に、該当する区域にMain Blvd およびMain という名前の他の通りが存在しない場合は、Main Blvd も一致します。

RELAX_POI_NAME

対象点の名前が、ジオコーディングに使用されるデータと一致する必要がありません。たとえば、Jones State Park がジオコーディングに使用されるデータに含まれる場合、そのデータに類似した名前または他に一致する名前がなければ、Jones State Pk およびJones Park も一致します。

RELAX_HOUSE_NUMBER

家やビルの番号および通りの種類が、ジオコーディングに使用されるデータと異なっていてもかまいません。たとえば、123 Main St がジオコーディングに使用されるデータに含まれている場合、データに類似した名前または他に一致する名前がなければ、123 Main Lane および124 Main St も一致します。

RELAX_BASE_NAME

通りのベース名、家やビルの番号および通りの種類が、ジオコーディングに使用されるデータと異なっていてもかまいません。たとえば、Pleasant Valley という通りのベース名が、ジオコーディングに使用されるデータに含まれている場合、データに類似した名前または他に一致する名前がなければ、Pleasant Vale も一致します。

RELAX_POSTAL_CODE

郵便番号(提供されている場合)、通りのベース名、家やビルの番号および通りの種類が、ジオコーディングで使用されるデータと異なっていてもかまいません。

RELAX_BUILTUP_AREA

住所が、同じ郡内であれば、指定された市の外側であってもかまいません。このモードには、RELAX_POSTAL_CODEの説明も当てはまります。

RELAX_ALL

RELAX_BUILTUP_AREAと同じです。

DEFAULT

RELAX_POSTAL_CODEと同じです。


11.1.3 一致コード

一致コードは、入力された住所のどの属性がジオコーディングに使用されるデータと一致したかを示す番号です。一致コードは、出力されるSDO_GEO_ADDRオブジェクトのMatchCode属性に格納されます(11.2.1項を参照)。

表11-3に、一致コードのすべての値を示します。

表11-3 ジオコーディング操作の一致コード

一致コード 説明

1

完全に一致しています。市の名前、郵便番号、通りのベース名、通りの種類(該当する場合は、接尾辞または接頭辞(あるいはその両方)も含む)および家またはビルの番号が、ジオコーディングに使用されるデータと一致しています。

2

市の名前、郵便番号、通りのベース名、および家またはビルの番号がジオコーディングに使用されるデータと一致していますが、通りの種類、接尾辞または接頭辞が一致していません。

3

市の名前、郵便番号および通りのベース名がジオコーディングに使用されるデータと一致していますが、家またはビルの番号が一致していません。

4

市の名前および郵便番号がジオコーディングに使用されるデータと一致していますが、通りの住所が一致していません。

10

市の名前がジオコーディングに使用されるデータと一致していますが、郵便番号が一致していません。

11

郵便番号がジオコーディングに使用されているデータと一致していますが、市の名前が一致していません。


11.1.4 出力されたジオコード済住所のエラー・メッセージ


注意:

ErrorMessage属性(この項を参照)のかわりに、MatchVector属性(11.1.5項を参照)を使用することをお薦めします。

出力されたジオコード済住所では、SDO_GEO_ADDRオブジェクトのErrorMessage属性(11.2.1項を参照)に、ジオコーディングに使用されるデータと一致した住所の属性を示す文字列が含まれます。ジオコーディング操作の開始前、その文字列は値???????????281C??に設定されており、属性が一致すると、それを反映してその値が変更されます。

表11-4に、文字列内の文字位置、および各位置に対応する住所属性を示します。また、属性が一致した場合にその位置に設定される文字値も示します。

表11-4 ジオコードされた住所のエラー・メッセージの解釈

位置 属性 一致した場合の値

1-4

(将来使用するために予約されています)

????

5

家またはビルの番号

#


6

通りの接頭辞

E

7

通りのベース名

N

8

通りの接尾辞

U

9

通りの種類

T

10

補足情報

S

11

市街地または市

B

12-13

(Spatialでは使用していません)

(これらの位置にある値はすべて無視されます。)

14

地域

1

15

C

16

郵便番号

P

17

郵便付加番号

A


11.1.5 出力されたジオコード済住所の一致ベクトル

出力されたジオコード済住所では、SDO_GEO_ADDRオブジェクトのMatchVector属性(11.2.1項を参照)に、各住所の属性がジオコーディングに使用されるデータとどのように一致したかを示す文字列が含まれます。この属性では、ErrorMessage属性(11.1.4項を参照)に比べて、各住所の属性の一致ステータスに関して、より正確で詳細な情報が提供されます。ジオコーディング操作の開始前、その文字列は値?????????????????に設定されています。この文字列の各文字は、住所属性の一致ステータスを示しています。

表11-5に、文字列内の文字位置、および各位置に対応する住所属性を示します。次の表では、それぞれの文字位置の値が示す内容について説明します。

表11-5 ジオコードされた住所の一致ベクトルの解釈

位置 属性

1-4

(将来使用するために予約されています)

5

家またはビルの番号

6

通りの接頭辞

7

通りのベース名

8

通りの接尾辞

9

通りの種類

10

補足情報

11

市街地または市

14

地域

15

16

郵便番号

17

郵便付加番号


表11-5の各文字位置には、次の可能な数値のいずれかを含めることができます。

  • 0: 入力属性がNULL以外で、NULL以外の値に一致します。

  • 1: 入力属性がNULLで、NULL値に一致します。

  • 2: 入力属性がNULL以外で、異なるNULL以外の値に置き換えられます。

  • 3: 入力属性がNULL以外で、NULL値に置き換えられます。

  • 4: 入力属性がNULLで、NULL以外の値に置き換えられます。

11.2 ジオコーディングのデータ型

この項では、ジオコーディングのファンクションおよびプロシージャ固有のデータ型について説明します。

11.2.1 SDO_GEO_ADDR型

SDO_GEO_ADDRオブジェクト型は、住所を記述するために使用されます。ジオコードされた住所がSDO_GCDRファンクションまたはSDO_GCDRプロシージャで出力された場合、SDO_GEO_ADDR型のオブジェクトとして格納されます。

表11-6に、SDO_GEO_ADDR型の属性を示します。属性が関連しない場合があることに注意してください。ジオコードされた住所の出力に使用される属性は、入力された住所の地理的な内容(特に国)によって異なります。

表11-6 SDO_GEO_ADDR型の属性

属性 データ型 説明

Id

NUMBER

(未使用。)

AddressLines

SDO_KEYWORDARRAY

住所の行(SDO_KEYWORDARRAY型の詳細は、11.2.3項を参照)。

PlaceName

VARCHAR2(200)

対象点(POI)の名前(たとえば、CALIFORNIA PACIFIC MEDICAL CTR)。

StreetName

VARCHAR2(200)

通りの種類を含む通りの名前(たとえば、MAIN ST)。

IntersectStreet

VARCHAR2(200)

交差する通り。

SecUnit

VARCHAR2(200)

アパートやビルの番号などの補足情報。

Settlement

VARCHAR2(200)

住所が属する最低レベルの行政区域 (表11-1を参照)。

Municipality

VARCHAR2(200)

Settlementより1つ上の行政区域 (表11-1を参照)。

Region

VARCHAR2(200)

Municipality(存在する場合)より1つ上の行政区域。Municipalityが存在しない場合はSettlementより1つ上の行政区域 (表11-1を参照)。

Country

VARCHAR2(100)

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

PostalCode

VARCHAR2(20)

郵便番号(行政区域情報が提供されている場合はオプション)。米国では、郵便番号は5桁です。

PostalAddOnCode

VARCHAR2(20)

郵便番号に付随する文字列。米国では通常、Postal add-on codeは「5-4」形式で指定される9桁の郵便番号の末尾4桁の番号を示します。

FullPostalCode

VARCHAR2(20)

郵便番号と郵便付加番号を含む完全な郵便番号。

POBox

VARCHAR2(100)

私書箱番号。

HouseNumber

VARCHAR2(100)

家またはビルの番号(たとえば、123 MAIN ST123)。

BaseName

VARCHAR2(200)

通りのベース名(たとえば、123 MAIN STMAIN)。

StreetType

VARCHAR2(20)

通りの種類(たとえば、123 MAIN STのST)。

StreetTypeBefore

VARCHAR2(1)

(未使用。)

StreetTypeAttached

VARCHAR2(1)

(未使用。)

StreetPrefix

VARCHAR2(20)

通りの接頭辞(たとえば、123 S MAIN STS)。

StreetSuffix

VARCHAR2(20)

通りの接尾辞(たとえば、123 MAIN ST NENE)。

Side

VARCHAR2(1)

道路セグメントをその方向に従って(つまり、道路セグメントの開始ノードから終了ノードに向かって)移動すると想定した場合に、家が建っている通りの側(左側はL、右側はR)。住居番号は、増加していくことも、減少していくこともあります。

Percent

NUMBER

0から1の数値(パーセント値を求めるには100を掛けます)で、道路セグメントの方向に従って通りを移動した距離を示します。

EdgeID

NUMBER

道路区画の端のID。

ErrorMessage

VARCHAR2(20)

エラー・メッセージ(11.1.4項を参照)。
注意: ErrorMessage属性のかわりに、MatchVector属性を使用することをお薦めします。

MatchCode

NUMBER

一致コード(11.1.3項を参照)。

MatchMode

VARCHAR2(30)

一致モード(11.1.2項を参照)。

Longitude

NUMBER

経度値。

Latitude

NUMBER

緯度値。

MatchVector

VARCHAR2(20)

各住所の属性がジオコーディングに使用されるデータとどのように一致したかを示す文字列(11.1.5項を参照)。


SDO_GEO_ADDRオブジェクト全体を戻すか、またはドット表記法を使用して属性を指定できます。例11-1に、San Francisco市庁舎の住所をジオコードする文を示します。最初の文はSDO_GEO_ADDRオブジェクト全体を戻し、残りの文はいくつかの特定の属性を戻します。

例11-1 ジオコーディング、および住所オブジェクトと特定の属性の取得

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?')

SELECT SDO_GCDR.GEOCODE('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US', 'RELAX_BASE_NAME').StreetType  FROM DUAL;

SDO_GCDR.GEOCODE('SCOTT',SDO_KEYWORDARRAY('1CARLTONBGOODLETTPL','SANFRANCISCO
--------------------------------------------------------------------------------
PL

SELECT SDO_GCDR.GEOCODE('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US', 'RELAX_BASE_NAME').Side  RROM DUAL;

S
-
L

SELECT SDO_GCDR.GEOCODE('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US', 'RELAX_BASE_NAME').Percent  FROM DUAL;

SDO_GCDR.GEOCODE('SCOTT',SDO_KEYWORDARRAY('1CARLTONBGOODLETTPL','SANFRANCISCO
--------------------------------------------------------------------------------
                                                                             .01

SELECT SDO_GCDR.GEOCODE('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US', 'RELAX_BASE_NAME').EdgeID  FROM DUAL;

SDO_GCDR.GEOCODE('SCOTT',SDO_KEYWORDARRAY('1CARLTONBGOODLETTPL','SANFRANCISCO
--------------------------------------------------------------------------------
                                                                        23614360

SELECT SDO_GCDR.GEOCODE('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US', 'RELAX_BASE_NAME').MatchCode  FROM DUAL;

SDO_GCDR.GEOCODE('SCOTT',SDO_KEYWORDARRAY('1CARLTONBGOODLETTPL','SANFRANCISCO
--------------------------------------------------------------------------------
                                                                               1

SELECT SDO_GCDR.GEOCODE('SCOTT',
  SDO_KEYWORDARRAY('1 Carlton B Goodlett Pl', 'San Francisco, CA  94102'),
  'US', 'RELAX_BASE_NAME').MatchVector  FROM DUAL;

SDO_GCDR.GEOCODE('SC
--------------------
????0101010??000?

11.2.2 SDO_ADDR_ARRAY型

SDO_ADDR_ARRAY型は、住所のジオコード結果を格納するために使用されるSDO_GEO_ADDRオブジェクト(11.2.1項を参照)のVARRAYです。ジオコーディング操作の結果、複数の住所アドレスが一致すると、複数の住所オブジェクトが戻される可能性があります。

SDO_ADDR_ARRAY型は、次のとおり定義されます。

CREATE TYPE sdo_addr_array AS VARRAY(1000) OF sdo_geo_addr;

11.2.3 SDO_KEYWORDARRAY型

SDO_KEYWORDARRAY型は、形式化されていない住所の住所行を格納するために使用されるVARCHAR2文字列のVARRAYです。(形式化された住所と形式化されていない住所については、11.1.1項を参照してください。)

SDO_KEYWORDARRAY型は、次のとおり定義されます。

CREATE TYPE sdo_keywordarray AS VARRAY(10000) OF VARCHAR2(9000);

11.3 ジオコーディング機能の使用

Oracle Spatialのジオコーディング機能を使用するには、ジオコーディングのベンダーから提供されるデータを使用する必要があります。また、そのデータは、Oracle Spatialのジオコーディング機能でサポートされる形式である必要があります。このデータの取得およびロードについては、Oracle Technology Network(OTN)のSpatialに関するページを参照してください。

http://www.oracle.com/technology/products/spatial/

ジオコーディングのリンクにアクセスして、その説明に従ってください。

ジオコーディング・データを使用して住所をジオコードするには、SDO_GCDR PL/SQLパッケージ・サブプログラム(第23章を参照)を使用します。

11.4 場所名からのジオコーディング

場所の名前(対象点)はわかっていても、その位置の詳細情報がわからない場合は、例11-2に示すように、入力パラメータのplacenamecountryからSDO_GEO_ADDRオブジェクトを作成するPL/SQLファンクションを作成できます。この例では、create_addr_from_placenameというファンクションが作成されます。この例のSELECT文は、create_addr_from_placenameファンクションで作成した住所を、SDO_GCDR.GEOCODE_ADDRファンクションを使用してジオコードしています。

例11-2 場所名と国からのジオコーディング

create or replace function create_addr_from_placename(
placename varchar2,
country varchar2)
return sdo_geo_addr
as
  addr sdo_geo_addr ;
  begin
  addr := sdo_geo_addr() ;
  addr.country := country ;
  addr.placename := placename ;
  addr.matchmode := 'default' ;
  return addr ;
  end;
  /

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

いくつかの位置情報(行政区域、郵便番号など)がわかっている場合、それらの情報を指定すると、より優れたパフォーマンスが得られます。例11-3には、追加のパラメータに対応するcreate_addr_from_placenameファンクションの別バージョンを示しています。このバージョンのファンクションをコールするには、placenameおよびcountryパラメータに実際の値を指定し、他の入力パラメータについては実際の値またはNULLを指定します。

例11-3 場所名、国および他のフィールドからのジオコーディング

create or replace function create_addr_from_placename(
placename varchar2,
city varchar2,
state varchar2,
postalcode varchar2,
country varchar2)
return sdo_geo_addr
as
  addr sdo_geo_addr ;
  begin
  addr := sdo_geo_addr() ;
  addr.settlement := city ;
  addr.region := state ;
  addr.postalcode := postalcode ;
  addr.country := country ;
  addr.placename := placename ;
  addr.matchmode := 'default' ;
  return addr ;
  end;
  /

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

11.5 ジオコーディングのデータ構造

Oracleでは、次の表を使用してジオコーディングを行います。

GC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表には、サポートされるすべての国の住所形式の定義が格納されています。これらの表は、内部の住所パーサーが住所フィールドに住所を解析する際に使用されます。この2つの表のデータは、データ・プロバイダまたはOracleから提供されます。(これらの表がデータ・プロバイダから提供されていない場合は、11.6項に示すようにインストールしてから移入を行う必要があります。)他の表には、データ・ベンダーから提供されるジオコーディング・データが格納されます。

ジオコーディング・データが含まれる表を所有する各ユーザー(SDO_GCDRサブプログラムをコールする際にusernameパラメータで指定可能なユーザー)は、GC_PARSER_PROFILES表、GC_PARSER_PROFILEAFS表およびGC_COUNTRY_PROFILE表をそれぞれ1つずつ所有している必要があります。このユーザーは、他の表(GC_xxx_<接尾辞>)については、複数のセットを所有できます。表名の末尾の接尾辞が同じ表のセットには、それぞれ1つの国のジオコーディング・データが格納されます。たとえば、次の表のセットを使用すると、米国のジオコーディング・データを格納できます。

1つの国のジオコーディング・データを、複数の表セットに格納することはできません。表の接尾辞は、データ・ベンダーによって定義され、GC_COUNTRY_PROFILE表のGC_TABLE_SUFFIX列に規定されています(11.5.2項を参照)。

これ以降の項では、ベンダーが提供する、ジオコーディング・データが格納される表について、表名のアルファベット順に説明します。

11.5.8項では、ジオコーディングにこれらの表を使用するために作成する必要のある索引について説明します。

11.5.1 GC_AREA_<接尾辞>表

GC_AREA_<接尾辞>表(たとえば、CG_AREA_US)には、その表名の接尾辞に関連付けられた国の管理領域情報が格納されます。 この表には、管理領域ごとに行が1つ含まれ、表11-7に示す列があります。

表11-7 GC_AREA_<接尾辞>表

列名 データ型 説明

AREA_ID

NUMBER(10)

領域ID番号。(必須)

AREA_NAME

VARCHAR2(64)

領域名。(必須)

LANG_CODE

VARCHAR2(3)

領域に関連付けられている言語の、3文字のISO各国語コード。(必須)

ADMIN_LEVEL

NUMBER(1)

領域の管理階層レベル。(必須)

LEVEL1_AREA_ID

NUMBER(10)

領域が属するレベル1領域のID。管理階層のレベル1領域は国です。(必須)

LEVEL2_AREA_ID

NUMBER(10)

領域が属するレベル2領域のID(該当する場合)。この領域が属する管理階層のレベルごとに領域IDを指定する必要があります。(オプション)

LEVEL3_AREA_ID

NUMBER(10)

領域が属するレベル3領域のID(該当する場合)。この領域が属する管理階層のレベルごとに領域IDを指定する必要があります。(オプション)

LEVEL4_AREA_ID

NUMBER(10)

領域が属するレベル4領域のID(該当する場合)。この領域が属する管理階層のレベルごとに領域IDを指定する必要があります。(オプション)

LEVEL5_AREA_ID

NUMBER(10)

領域が属するレベル5領域のID(該当する場合)。この領域が属する管理階層のレベルごとに領域IDを指定する必要があります。(オプション)

LEVEL6_AREA_ID

NUMBER(10)

領域が属するレベル6領域のID(該当する場合)。この領域が属する管理階層のレベルごとに領域IDを指定する必要があります。(オプション)

LEVEL7_AREA_ID

NUMBER(10)

領域が属するレベル7領域のID(該当する場合)。この領域が属する管理階層のレベルごとに領域IDを指定する必要があります。(オプション)

CENTER_LONG

NUMBER

領域の中心の経度値。中心は、中心の経度および緯度の値に最も近い道路セグメントに設定されます。この2つの属性は、適切に設定することをお薦めします。これらの値が設定されていない場合、領域をジオコードして得られる経度および緯度の座標は、(0,0)になります。(オプション)

CENTER_LAT

NUMBER

領域の中心の緯度値。(CENTER_LONG列の説明を参照)。(オプション)

ROAD_SEGMENT_ID

NUMBER(10)

領域の中心が設定される道路セグメントのID。ジオコーダをOracle Spatialルーティング・エンジン(第13章を参照)と連携させるには、この値を正しく設定する必要があります。連携させる必要がない場合は、0(ゼロ)以外の任意の値に設定できます(NULLにはできません)。(必須)

POSTAL_CODE

VARCHAR2(16)

領域の中心の郵便番号。この属性は、正しく設定することをお薦めします。この値がNULLの場合、領域をジオコードした結果の郵便番号属性はNULLになります。(オプション)

COUNTRY_CODE_2

VARCHAR2(2)

領域が属する国の2文字のISO国コード。(必須)

PARTITION_ID

NUMBER

ジオコーダ・データを地理的な境界でパーティション化する際に使用されるパーティション・キー。データがパーティション化されていない場合は、値を1に設定します。(必須)

REAL_NAME

VARCHAR2(64)

現地の言語で綴られた、領域の実際の名前。この列は、領域名が英語以外の場合に有効です。たとえば、MUNICHのドイツ語名はMÜNCHENです。MUNCHENと綴ることもできますが、REAL_NAMEの値は、MÜNCHENにする必要があります。ドイツ用の領域表では、MÜNCHENという名前とMUNCHENという名前の領域は同じ領域を指し、実際の名前は両方ともMÜNCHENです。領域名に英語以外の文字が含まれない場合は、AREA_NAMEと同じ名前をREAL_NAMEに設定してください。(必須)

IS_ALIAS

VARCHAR2(1)

この領域が、正式な管理領域として認められている領域の別名である場合はT、そうでない場合はFです。たとえば、Manhattanは正式に認められた管理領域ではありませんが、New York市の一部として一般に通用しています。このような場合、ManhattanNew York Cityの別名です。(必須)

NUM_STREETS

NUMBER

この領域内の通りの番号。(オプション)


11.5.2 GC_COUNTRY_PROFILE表

GC_COUNTRY_PROFILE表には、ジオコーダで使用する国プロファイルの情報が格納されます。 この表には、サポートされている国ごとに行が1つ含まれ、表11-8に示す列があります。

表11-8 GC_COUNTRY_PROFILE表

列名 データ型 説明

COUNTRY_NAME

VARCHAR2(60)

国名。(必須)

COUNTRY_CODE_3

VARCHAR2(3)

3文字のISO国コード。(必須)

COUNTRY_CODE_2

VARCHAR2(2)

2文字のISO国コード。(必須)

LANG_CODE_1

VARCHAR2(3)

3文字のISO各国語コード。一部の国では、言語が複数あることがあります。その場合は、LANG_CODE_2などの列にも値が入ります。(必須)

LANG_CODE_2

VARCHAR2(3)

3文字のISO各国語コード。(オプション)

LANG_CODE_3

VARCHAR2(3)

3文字のISO各国語コード。(オプション)

LANG_CODE_4

VARCHAR2(3)

3文字のISO各国語コード。(オプション)

NUMBER_ADMIN_LEVELS

NUMBER(1)

管理階層レベルの数。1つの国には、1から7の最大7つの管理領域レベルを設定できます。最高レベルの領域(国)は、レベル1です。米国の場合の管理階層は、レベル1が国、レベル2が州、レベル3が郡、レベル4が市です。(必須)

SETTLEMENT_LEVEL

NUMBER(1)

Settlementの管理階層レベル。これは、住所処理で使用する最下位の領域レベルです。米国の場合、これは市レベルです。(必須)

MUNICIPALITY_LEVEL

NUMBER(1)

Municipalityの管理階層レベル。これは、住所処理で使用する下から2番目の領域レベルです。米国の場合、これは郡レベルです。(オプション)

REGION_LEVEL

NUMBER(1)

住所処理で使用するRegionレベルの管理階層レベル。(オプション)

SETTLEMENT_IS_OPTIONAL

VARCHAR2(1)

住所データにSettlement情報が必要な場合はT、不要な場合はFです。(必須)

MUNICIPALITY_IS_OPTIONAL

VARCHAR2(1)

住所データにMunicipality情報が必要な場合はT、不要な場合はFです。(必須)

REGION_IS_OPTIONAL

VARCHAR2(1)

住所データにRegion情報が必要な場合はT、不要な場合はFです。(必須)

POSTCODE_IN_SETTLEMENT

VARCHAR(1)

各郵便番号が1つのSettlement領域内のみに含まれることが必要な場合はT、複数のSettlement領域にまたがる場合はFです。(必須)

SETTLEMENT_AS_CITY

VARCHAR(1)

市の名前によってMunicipalityとSettlementの両方が識別できる場合はT、Settlementのみが識別できる場合はFです。たとえば、イギリスではLondonを、Municipality領域の名前とSettlement領域の名前(LondonというMunicipality領域に含まれる)の両方に使用できます。ヨーロッパの一部の国(イギリス、ベルギーなど)の大都市では、このようなことがよくあります。(必須)

CACHED_ADMIN_AREA_LEVEL

NUMBER

(将来使用するために予約されています。)

GC_TABLE_SUFFIX

VARCHAR2(5)

国を識別する表名の接尾辞。たとえば、GC_TABLE_SUFFIXの値がUSの場合、その国のジオコーディング・データを持つ表の名前の末尾は_US(たとえば、CG_AREA_US)になります。(必須)

CENTER_LONG

NUMBER

領域の中心の経度値。(オプション)

CENTER_LAT

NUMBER

領域の中心の緯度値。(オプション)

SEPARATE_PREFIX

VARCHAR2(1)

通りの名前の接頭辞が通りの名前とは別の語になる場合はT、通りの名前と同じ語に含まれる場合はFです。たとえば、米国での通りの住所が123 N Main Stの場合、接頭辞はNで、通りの名前Mainと別になっています。(オプション、現在Oracleでは非使用)

SEPARATE_SUFFIX

VARCHAR2(1)

通りの名前の接尾辞が通りの名前とは別の語になる場合はT、通りの名前と同じ語に含まれる場合はFです。たとえば、米国での通りの住所が123 Main St NWの場合、接尾辞はNWで、通りの名前Mainおよび通りの種類Stとは別になっています。(オプション、現在Oracleでは非使用)

SEPARATE_STYPE

VARCHAR2(1)

通りの種類が通りの名前とは別の語になる場合はT、通りの名前と同じ語に含まれる場合はFです。たとえば、ドイツでの通りの住所が123 Beethovenstrassの場合、種類はstrassで、通りの名前Beethovenと同じ語の中に含まれています。(オプション、現在Oracleでは非使用)

AREA_ID

NUMBER

現在、Oracleでは使用していません。(オプション)

VERSION

VARCHAR2(10)

データのバージョン。最初のバージョンは、1.0です。(必須)


11.5.3 GC_INTERSECTION_<接尾辞>表

GC_INTERSECTION_<接尾辞>表(たとえば、GC_INTERSECTION_US)には、道路の交差点の情報が格納されます。通常、交差点は複数の道路に関連付けられます。各行は、交差点と、その交差点で交わっている2つの道路を表します。この表に含まれる列を、表11-9に示します。

表11-9 GC_INTERSECTION_<接尾辞>表

列名 データ型 説明

ROAD_ID_1

NUMBER

交差点に位置する1つ目の道路のID番号。(必須)

ROAD_SEGMENT_ID_1

NUMBER

交差点に位置する1つ目の道路の道路セグメントのID番号。(必須)

ROAD_ID_2

NUMBER

交差点に位置する2つ目の道路のID番号。(必須)

ROAD_SEGMENT_ID_2

NUMBER

交差点に位置する2つ目の道路の道路セグメントのID番号。(必須)

INTS_LONG

NUMBER

交差点の経度値。(必須)

INTS_LAT

NUMBER

交差点の緯度値。(必須)

HOUSE_NUMBER

NUMBER

交差点の住居番号の先頭の数字の部分(11.5.7項表11-13の後に示す住居番号の説明を参照してください)。(必須)

HOUSE_NUMBER_2

VARCHAR2(10)

交差点の住居番号の2番目の部分(11.5.7項表11-13の後に示す住居番号の説明を参照してください)。(必須)

SIDE

VARCHAR2(1)

交差点にある家屋が位置する通りの側。可能な値はL(左側)またはR(右側)です。(必須)

COUNTRY_CODE_2

VARCHAR2(2)

交差点にある家屋が属する国の2文字のISO国コード。(必須)

PARTITION_ID

NUMBER

ジオコーダ・データを地理的な境界でパーティション化する際に使用されるパーティション・キー。データがパーティション化されていない場合は、値を1に設定します。(必須)


11.5.4 GC_POI_<接尾辞>表

GC_POI_<接尾辞>表(たとえば、GC_POI_US)には、その表名の接尾辞に関連付けられた国の対象点(POI)情報が格納されます。この表には、対象点ごとに1つ以上の行が含まれます。たとえば、1つのPOIに関連付けられているSettlementが複数ある場合は、そのPOIに対して複数行を格納できます。GC_POI_<接尾辞>表に含まれる列を、表11-10に示します。

表11-10 GC_POI_<接尾辞>表

列名 データ型 説明

POI_ID

NUMBER

POIのID番号。(必須)

POI_NAME

VARCHAR2(64)

POIの名前。(必須)

LANG_CODE

VARCHAR2(3)

POI名に使用する言語の、3文字のISO各国語コード。(必須)

FEATURE_CODE

NUMBER

POIのフィーチャ・コード(データ・ベンダーがカテゴリ別にPOIを分類している場合)。(オプション)

HOUSE_NUMBER

VARCHAR2(10)

POIの住居番号(数字以外の文字を含むことも可能)。(必須)

STREET_NAME

VARCHAR2(80)

POIの通りの名前。(必須)

SETTLEMENT_ID

NUMBER(10)

POIが属するSettlementのID番号。(POIがSettlementに関連付けられている場合は必須)

MUNICIPALITY_ID

NUMBER(10)

POIが属するMunicipalityのID番号。(POIがMunicipalityに関連付けられている場合は必須)

REGION_ID

NUMBER(10)

POIが属するRegionのID番号。(POIがRegionに関連付けられている場合は必須)

SETTLEMENT_NAME

VARCHAR2(64)

POIが属するSettlementの名前。(POIがSettlementに関連付けられている場合は必須)

MUNICIPALITY_NAME

VARCHAR2(64)

POIが属するMunicipalityの名前。(POIがMunicipalityに関連付けられている場合は必須)

REGION_NAME

VARCHAR2(64)

POIが属するRegionの名前。(POIがRegionに関連付けられている場合は必須)

POSTAL_CODE

VARCHAR2(16)

POIの郵便番号の名前。(必須)

VANITY_CITY

VARCHAR2(35)

一般的にPOIに関連付けられている市の名前(その市が、POIが含まれる実際の市とは異なる場合)。たとえば、London Heathrow空港は、実際にはグレーター・ロンドンの一部のHayesという町にありますが、この空港は、一般的にLondonのみに関連付けられる傾向があります。このような場合、VANITY_CITYの値はLondonです。(オプション)

ROAD_SEGMENT_ID

NUMBER

POIが位置する道路セグメントのID。(必須)

SIDE

VARCHAR2(1)

POIが位置する通りの側。可能な値はL(左側)またはR(右側)です。(必須)

PERCENT

NUMBER

道路に対するPOIの位置の割合値。これは、通りセグメントの開始点からPOIまでの距離を通りセグメントの長さで除算して求められます。(必須)

TELEPHONE_NUMBER

VARCHAR2(20)

POIの電話番号。(オプション)

LOC_LONG

NUMBER

POIの経度値。(必須)

LOC_LAT

NUMBER

POIの緯度値。(必須)

COUNTRY_CODE_2

VARCHAR2(2)

POIが属する国の2文字のISO国コード。(必須)

PARTITION_ID

NUMBER

ジオコーダ・データを地理的な境界でパーティション化する際に使用されるパーティション・キー。データがパーティション化されていない場合は、値を1に設定します。(必須)


11.5.5 GC_POSTAL_CODE_<接尾辞>表

GC_POSTAL_CODE_<接尾辞>表(たとえば、GC_POSTAL_CODE_US)には、その表名の接尾辞に関連付けられた国の郵便番号情報が格納されます。この表には、郵便番号ごとに1つ以上の行が含まれます。(たとえば、1つの郵便番号に関連付けられているSettlementが複数ある場合は、その郵便番号に対して複数行を格納できます。)GC_POSTAL_CODE_<接尾辞>表に含まれる列を、表11-11に示します。

表11-11 GC_POSTAL_CODE_<接尾辞>表

列名 データ型 説明

POSTAL_CODE

VARCHAR2(16)

郵便番号。(必須)

SETTLEMENT_NAME

VARCHAR2(64)

郵便番号が属するSettlementの名前。(郵便番号がSettlementに関連付けられている場合は必須)

MUNICIPALITY_NAME

VARCHAR2(64)

郵便番号が属するMunicipalityの名前。(郵便番号がMunicipalityに関連付けられている場合は必須)

REGION_NAME

VARCHAR2(64)

郵便番号が属するRegionの名前。(郵便番号がRegionに関連付けられている場合は必須)

LANG_CODE

VARCHAR2(3)

領域に関連付けられている言語の、3文字のISO各国語コード。(必須)

SETTLEMENT_ID

NUMBER(10)

郵便番号が属するSettlementのID番号。(郵便番号がSettlementに関連付けられている場合は必須)

MUNICIPALITY_ID

NUMBER(10)

郵便番号が属するMunicipalityのID番号。(郵便番号がMunicipalityに関連付けられている場合は必須)

REGION_ID

NUMBER(10)

郵便番号が属するRegionのID番号。(郵便番号がRegionに関連付けられている場合は必須)

CENTER_LONG

NUMBER

領域の中心の経度値。中心は、中心の経度および緯度の値に最も近い道路セグメントに設定されます。この2つの属性は、適切に設定することをお薦めします。これらの値が設定されていない場合、領域をジオコードして得られる経度および緯度の座標は、(0,0)になります。(オプション)

CENTER_LAT

NUMBER

領域の中心の緯度値。(CENTER_LONG列の説明を参照)。(オプション)

ROAD_SEGMENT_ID

NUMBER(10)

領域の中心が設定される道路セグメントのID。ジオコーダをOracle Spatialルーティング・エンジン(第13章を参照)と連携させるには、この値を正しく設定する必要があります。連携させる必要がない場合は、0(ゼロ)以外の任意の値に設定できます(NULLにはできません)。(必須)

COUNTRY_CODE_2

VARCHAR2(2)

領域が属する国の2文字のISO国コード。(必須)

PARTITION_ID

NUMBER

ジオコーダ・データを地理的な境界でパーティション化する際に使用されるパーティション・キー。データがパーティション化されていない場合は、値を1に設定します。(必須)

NUM_STREETS

NUMBER

この領域内の通りの番号。(オプション)


11.5.6 GC_ROAD_<接尾辞>表

GC_ROAD_<接尾辞>表(たとえば、GC_ROAD_US)には、その表名の接尾辞に関連付けられた国の道路情報が格納されます。道路は、同じSettlement領域内の同じ名前の道路セグメントの集合です。道路セグメント(GC_ROAD_SEGMENT_<接尾辞>表で定義)は、2つの連続する交差点の間にある道路のセグメントです。GC_ROAD_<接尾辞>表には、道路ごとに1つ以上の行が含まれます。(たとえば、1つの道路に関連付けられているSettlementが複数ある場合は、その道路に対して複数行を格納できます。)GC_ROAD_<接尾辞>表に含まれる列を、表11-12に示します。

表11-12 GC_ROAD_<接尾辞>表

列名 データ型 説明

ROAD_ID

NUMBER

道路のID番号。(必須)

SETTLEMENT_ID

NUMBER(10)

道路が属するSettlementのID番号。(道路がSettlementに関連付けられている場合は必須)

MUNICIPALITY_ID

NUMBER(10)

道路が属するMunicipalityのID番号。(道路がMunicipalityに関連付けられている場合は必須)

PARENT_AREA_ID

NUMBER(10)

道路が属するMunicipalityの親領域のID番号。(道路が親領域に関連付けられている場合は必須)

LANG_CODE

VARCHAR2(3)

道路名に使用する言語の、3文字のISO各国語コード。(必須)

NAME

VARCHAR2(64)

道路の名前。種類、接頭辞、接尾辞がある場合は、それらも含みます。たとえば、NAMEがN Main Stの場合、BASE_NAMEはMainです。(必須)

BASE_NAME

VARCHAR2(64)

道路の名前。種類、接頭辞、接尾辞がある場合は、それらを除外した名前です。たとえば、NAMEがN Main Stの場合、BASE_NAMEはMainです。(必須)

PREFIX

VARCHAR2(32)

道路名の接頭辞。たとえば、NAMEがN Main Stの場合、PREFIXはNです。(道路名に接頭辞がある場合は必須)

SUFFIX

VARCHAR2(32)

道路名の接尾辞。たとえば、NAMEがMain St NWの場合、SUFFIXはNWです。(道路名に接尾辞がある場合は必須)

STYPE_BEFORE

VARCHAR2(32)

ベース名の前に記述される通りの種類。たとえば、NAMEがAvenue Victor Hugoの場合、STYPE_BEFOREはAvenue、BASE_NAMEはVictor Hugoです。(ベース名の前に道路の種類がある場合は必須)

STYPE_AFTER

VARCHAR2(32)

ベース名の後ろに記述される通りの種類。たとえば、NAMEがMain Stの場合、STYPE_AFTERはSt、BASE_NAMEはMainです。(ベース名の後ろに道路の種類がある場合は必須)

STYPE_ATTACHED

VARCHAR2(1)

通りの種類が通りの名前と同じ語に含まれる場合はT、通りの名前とは別の語になる場合はFです。たとえば、ドイツでの通りの住所が123 Beethovenstrassの場合、通りの種類はstrassで、通りの名前Beethovenと同じ語の中に含まれています。(必須)

START_HN

NUMBER(5)

(CENTER_HNと同じ値が設定されます。現在、Oracleでは使用していません)

CENTER_HN

NUMBER(5)

中心住居番号の先頭の数字の部分。中心住居番号とは、道路セグメントの中央(道路全体の中央)の開始点の左側にある住居番号です。(11.5.7項表11-13の後に示す住居番号の説明を参照してください)。(必須)

END_HN

NUMBER(5)

(CENTER_HNと同じ値が設定されます。現在、Oracleでは使用していません)

START_HN_SIDE

VARCHAR2(1)

(CENTER_HN_SIDEと同じ値が設定されます。現在、Oracleでは使用していません)

CENTER_HN_SIDE

VARCHAR2(1)

中心住居番号の道路の一方の側(左側はL、右側はR)。中心住居番号とは、道路セグメントの中央(道路全体の中央)の開始点の左側にある住居番号です。(11.5.7項表11-13の後に示す住居番号の説明を参照してください)。(必須)

END_HN_SIDE

VARCHAR2(1)

(CENTER_HN_SIDEと同じ値が設定されます。現在、Oracleでは使用していません)

START_LONG

NUMBER

(CENTER_LONGと同じ値が設定されます。現在、Oracleでは使用していません)

START_LAT

NUMBER

(CENTER_LATと同じ値が設定されます。現在、Oracleでは使用していません)

CENTER_LONG

NUMBER

中心住居番号の経度値。中心住居番号とは、道路セグメントの中央(道路全体の中央)の開始点の左側にある住居番号です。(11.5.7項表11-13の後に示す住居番号の説明を参照してください)。(必須)

CENTER_LAT

NUMBER

中心住居番号の緯度値(CENTER_LONG列の説明も参照)。(必須)

END_LONG

NUMBER

(CENTER_LONGと同じ値が設定されます。現在、Oracleでは使用していません)

END_LAT

NUMBER

(CENTER_LATと同じ値が設定されます。現在、Oracleでは使用していません)

START_ROAD_SEG_ID

NUMBER(5)

(CENTER_ROAD_SEG_IDと同じ値が設定されます。現在、Oracleでは使用していません)

CENTER_ROAD_SEG_ID

NUMBER(5)

道路の中心点の道路セグメントのID番号。(必須)

END_ROAD_SEG_ID

NUMBER(5)

(CENTER_ROAD_SEG_IDと同じ値が設定されます。現在、Oracleでは使用していません)

POSTAL_CODE

VARCHAR2(16)

道路の郵便番号。(必須)

COUNTRY_CODE_2

VARCHAR2(2)

道路が属する国の2文字のISO国コード。(必須)

PARTITION_ID

NUMBER

ジオコーダ・データを地理的な境界でパーティション化する際に使用されるパーティション・キー。データがパーティション化されていない場合は、値を1に設定します。(必須)

CENTER_HN2

VARCHAR2(10)

中心住居番号の2番目の部分(11.5.7項表11-13の後に示す住居番号の説明を参照してください)。(必須)


11.5.7 GC_ROAD_SEGMENT_<接尾辞>表

GC_ROAD_SEGMENT_<接尾辞>表(たとえば、GC_ROAD_SEGMENT_US)には、その表名の接尾辞に関連付けられた国の道路セグメント情報が格納されます。道路セグメントは、2つの連続する交差点の間にある道路のセグメントです。また、道路(GC_ROAD_<接尾辞>表で定義)とは、同じSettlement領域内の同じ名前の道路セグメントの集合です。GC_ROAD_SEGMENT_<接尾辞>表には、道路セグメントごとに行が1つ含まれ、表11-13に示す列があります。

表11-13 GC_ROAD_SEGMENT_<接尾辞>表

列名 データ型 説明

ROAD_SEGMENT_ID

NUMBER

道路セグメントのID番号。(必須)

ROAD_ID

NUMBER

この道路セグメントが含まれる道路のID番号。(必須)

L_ADDR_FORMAT

VARCHAR2(1)

左側の住所形式。道路セグメントの左側に住居番号が1つ以上ある場合は、Nを指定します。ない場合は、NULLのままにしておきます。(必須)

R_ADDR_FORMAT

VARCHAR2(1)

右側の住所形式。道路セグメントの右側に住居番号が1つ以上ある場合は、Nを指定します。ない場合は、NULLのままにしておきます。(必須)

L_ADDR_SCHEME

VARCHAR2(1)

道路セグメントの左側の住居番号の付与方法。O(すべて奇数)、E(すべて偶数)またはM(奇数と偶数の混在)を指定します。(必須)

R_ADDR_SCHEME

VARCHAR2(1)

道路セグメントの右側の住居番号の付与方法。O(すべて奇数)、E(すべて偶数)またはM(奇数と偶数の混在)を指定します。(必須)

START_HN

NUMBER(5)

この道路セグメント上の最も小さい住居番号。(必須)

END_HN

NUMBER(5)

この道路セグメント上の最も大きい住居番号。(必須)

L_START_HN

NUMBER(5)

左側の開始住居番号の先頭の数字部分(この表の後ろに示す住居番号の説明を参照)。(必須)

L_END_HN

NUMBER(5)

左側の終了住居番号の先頭の数字部分(この表の後ろに示す住居番号の説明を参照)。(必須)

R_START_HN

NUMBER(5)

右側の開始住居番号の先頭の数字部分(この表の後ろに示す住居番号の説明を参照)。(必須)

R_END_HN

NUMBER(5)

右側の終了住居番号の先頭の数字部分(この表の後ろに示す住居番号の説明を参照)。(必須)

POSTAL_CODE

VARCHAR2(16)

道路セグメントの郵便番号。道路セグメントの左側と右側で郵便番号が異なる場合は、POSTAL_CODE列を除くすべての列の値と一致する道路セグメントの行を2つ作成します。(必須)

GEOMETRY

SDO_GEOMETRY

道路セグメントを表す空間ジオメトリ・オブジェクト。(必須)

COUNTRY_CODE_2

VARCHAR2(2)

道路セグメントが属する国の2文字のISO国コード。(必須)

PARTITION_ID

NUMBER

ジオコーダ・データを地理的な境界でパーティション化する際に使用されるパーティション・キー。データがパーティション化されていない場合は、値を1に設定します。(必須)

L_START_HN2

VARCHAR2(10)

左側の開始住居番号の2番目の部分(この表の後ろに示す住居番号の説明を参照)。(左側の開始住居番号に2番目の部分がある場合は必須)

L_END_HN2

VARCHAR2(10)

左側の終了住居番号の2番目の部分(この表の後ろに示す住居番号の説明を参照)。(左側の終了住居番号に2番目の部分がある場合は必須)

R_START_HN2

VARCHAR2(10)

右側の開始住居番号の2番目の部分(この表の後ろに示す住居番号の説明を参照)。(右側の開始住居番号に2番目の部分がある場合は必須)

R_END_HN2

VARCHAR2(10)

右側の終了住居番号の2番目の部分(この表の後ろに示す住居番号の説明を参照)。(右側の終了住居番号に2番目の部分がある場合は必須)


開始住居番号とは、通りセグメントの開始点の住居番号のことで、道路セグメント・ジオメトリ(GEOMETRY列)の最初の形状点です。また、終了住居番号とは、通りセグメントの終了点の住居番号のことで、道路セグメント・ジオメトリの最後の形状点です。左側と右側の開始住居番号は、左側と右側の終了住居番号より大きくてもかまいません。

住居番号は、2つの要素(先頭の数字部分とそれ以外の2番目の部分)に分けられます。先頭の数字部分は、住居番号の文字列全体の最初から始まり、数字以外の最初の文字の直前で終了する(数字以外の文字がある場合)、住居番号の数字の部分です。住居番号に数字以外の文字が含まれる場合は、数字以外の最初の文字から最後の文字までが、住居番号の2番目の部分になります。たとえば、住居番号が123の場合は、先頭の数字部分は123で、2番目の部分はNULLですが、住居番号が123A23の場合は、先頭の数字部分は123で、2番目の部分はA23です。

11.5.8 ジオコーディングを行うための表の索引

ベンダーから提供される表を使用してジオコーディングを行うには、多くの表で索引を作成する必要があり、これらの索引の名前は特定の要件に従う必要があります。

例11-4に、必要な索引を作成するCREATE INDEX文の形式を示します。各文では、<suffix>で示されているすべての接尾辞を適切な文字列と置き換える(たとえば、米国の場合はUSと置き換える)必要があることを除いて、例11-4に示すように、索引名、表名、列名、および列名の順序(複数の列に索引が付けられている場合)を使用する必要があります。この例の最初の索引は空間索引であることに注意してください。オプションで、他の有効なキーワードや句をCREATE INDEX文に含めることもできます。

例11-4 ジオコーディングを行うための表に必要な索引

CREATE INDEX idx_<suffix>_road_geom ON gc_road_segment_<suffix> (geometry) INDEXTYPE IS mdsys.spatial_index;
CREATE INDEX idx_<suffix>_road_seg_rid ON gc_road_segment_<suffix> (road_id, start_hn, end_hn);
CREATE INDEX idx_<suffix>_road_id ON gc_road_<suffix> (road_id);
CREATE INDEX idx_<suffix>_road_setbn ON gc_road_<suffix> (settlement_id, base_name);
CREATE INDEX idx_<suffix>_road_munbn ON gc_road_<suffix> (municipality_id, base_name);
CREATE INDEX idx_<suffix>_road_parbn ON gc_road_<suffix> (parent_area_id, country_code_2, base_name);
CREATE INDEX idx_<suffix>_road_setbnsd ON gc_road_<suffix> (settlement_id, soundex(base_name));
CREATE INDEX idx_<suffix>_road_munbnsd ON gc_road_<suffix> (municipality_id, soundex(base_name));
CREATE INDEX idx_<suffix>_road_parbnsd ON gc_road_<suffix> (parent_area_id, country_code_2, soundex(base_name));
CREATE INDEX idx_<suffix>_inters ON gc_intersection_<suffix> (country_code_2, road_id_1, road_id_2);
CREATE INDEX idx_<suffix>_area_name_id ON gc_area_<suffix> (country_code_2, area_name, admin_level);
CREATE INDEX idx_<suffix>_area_id_name ON gc_area_<suffix> (area_id, area_name, country_code_2);
CREATE INDEX idx_<suffix>_poi_name ON gc_poi_<suffix> (country_code_2, name);
CREATE INDEX idx_<suffix>_poi_setnm ON gc_poi_<suffix> (country_code_2, settlement_id, name);
CREATE INDEX idx_<suffix>_poi_ munnm ON gc_poi_<suffix> (country_code_2, municipality_id, name);
CREATE INDEX idx_<suffix>_poi_ regnm ON gc_poi_<suffix> (country_code_2, region_id, name);
CREATE INDEX idx_<suffix>_ postcode ON gc_postal_code_<suffix> (country_code_2, postal_code);

11.6 パーサー・プロファイル表のインストール

通常、Oracle Geocoderプロファイル表は、データ・プロバイダから提供されます。データ・プロバイダのプロファイル表が利用可能であれば、ジオコーディングにはそれを使用してください。ジオコーダ・スキーマを独自に作成するユーザーに対しては、OracleのGC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表が用意されています。ただし、このようなOracle提供のプロファイル表をインストールする必要があるのは、プロファイル表のデータ表がデータ・プロバイダから提供されていない場合(その場合だけ)です。

Oracle提供の表には、一部の国のパーサー・プロファイルのみ含まれています。必要なプロファイルがOracle提供の表に含まれている場合は、それをそのまま使用するか、必要に応じて更新します。対象となる国(または国のグループ)のプロファイルが含まれていない場合は、手動で追加する必要があります。ただし簡単な手法として、対象となる国と住所形式が似ている国のプロファイルをOracle提供のプロファイルからコピーし、それを必要に応じて編集することもできます。

Oracle提供のプロファイル表をインストールして問い合せるには、次の手順を実行します。

  1. ジオコーダ・ユーザーとしてデータベースにログオンします。ジオコーダ・ユーザーは、ジオコーダ・スキーマがロードされるスキーマの所有者です。

  2. SDO_GCDR.CREATE_PROFILE_TABLESプロシージャを実行して、GC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表を作成します。

    SQL> EXECUTE SDO_GCDR.CREATE_PROFILE_TABLES;
    
  3. $ORACLE_HOME/md/admin/ディレクトリにあるsdogcprs.sqlスクリプトを使用して、GC_PARSER_PROFILES表およびGC_PARSER_PROFILEAFS表にデータを挿入します。次に例を示します。

    SQL> @$ORACLE_HOME/md/admin/sdogcprs.sql
    
  4. プロファイル表を問い合せて、対象となる国のパーサー・プロファイルがあるかどうかを確認します。これを行うには、その国のコードが次の文の出力に含まれているかどうかを確認します。

    SQL> SELECT DISTINCT(country_code) FROM gc_parser_profiles;
    SQL> SELECT DISTINCT(country_code) FROM gc_parser_profileafs;
    

11.7 ジオコーディング・サービス(XML API)の使用

SQL APIの他に、Oracle Spatialではジオコーディング・サービスのXML APIも提供され、これを使用して住所をジオコードすることができます。Javaジオコーダ・アプリケーション・エンジンでは、Oracle Databaseに格納されたジオコーダ・データを問い合せることによって、住所の国際標準化、ジオコーディング、およびPOIの一致が行われます。未解析の住所のサポートにより、顧客アプリケーションに柔軟性と利便性が追加されます。

このジオコーディング・サービスは、Java 2 Enterprise Edition(J2EE)のWebアプリケーションとして実装され、Oracle Application ServerまたはスタンドアロンのOracle Application Server Containers for J2EE(OC4J)環境のいずれかにデプロイできます。

図11-1に、ジオコーディング・サービスを使用する基本的なアクション・フローを示します。クライアントは、リモートのジオコーディング・サービス・インスタンスを探してジオコーディング・リクエストを送信し、ジオコーディング・サービス・インスタンスから戻されたレスポンスを処理します。

図11-1 Spatialジオコーディング・サービスを使用した基本的なアクション・フロー

図11-1の説明が続きます。
図11-1「Spatialジオコーディング・サービスを使用した基本的なアクション・フロー」の説明

次に、図11-1について説明します。

  1. クライアントは、ジオコードする1つ以上の入力住所を含むXMLジオコーディング・リクエストを、HTTPプロトコルを使用してジオコーディング・サービスに送信します。

  2. ジオコーディング・サービスは、入力リクエストを解析して、入力住所をデータベース内で検索します。

  3. ジオコーディング・サービスは、ジオコードされた結果をXML形式で、HTTPプロトコルを使用してクライアントに送信します。

11.7.1 ジオコーディング・サービスのデプロイおよび構成

ジオコーディング・リクエストの処理およびレスポンスの生成を行うために、ジオコーディング・サービスを有効にするには、OC4JまたはOracle Application Serverを使用して($ORACLE_HOME/md/jlibにある)geocoder.earファイルをデプロイする必要があります。ここでは、基本的な手順を示します。

  1. 次の要素を、OC4Jのhttp-web-site.xmlまたはdefault-web-site.xmlファイルの<web-site>要素内に追加します。

    <web-app application="geocoder"
              name="web"
              load-on-startup="true"
              root="/geocoder" />
    
  2. Oracle Application Serverコンソールを使用して、geocoder.earファイルをデプロイするか、または次の要素をOC4Jのserver.xmlファイルの<application-server>要素内に追加します(これに応じて、<ROUTE_SERVER_HOME>を置換します)。

    <application name="geocoder"
                 path="../applications/geocoder.ear"
                 parent="default"
                 start="true" />
    
  3. 次の要素を、OC4Jのserver.xmlファイルの<application-server>要素内に追加します。

    <max-http-connections value="10" />
    

    ジオコーディング・サービスがjava.lang.OutOfMemoryErrorエラーを発生することなく、常に処理できる同時リクエスト数を制限することは重要です。

  4. geocodercfg.xmlファイルを構成します(11.7.1.1項を参照)。

  5. 次のコマンド・オプションを使用して、OC4Jを起動します。

    -server
    -Xms<HEAP_SIZE>
    -Xmx<HEAP_SIZE>
    -XX:NewSize=<YOUNG_GENERATION_SIZE>
    -XX:MaxNewSize=<YOUNG_GENERATION_SIZE>
    -Dsun.rmi.dgc.server.gcInterval=3600000
    -Dsun.rmi.dgc.client.gcInterval=3600000
    -verbose:gc  (optional)
    

    <HEAP_SIZE>は、512MB以上である必要があります。推奨サイズは、1024MB(1GB)以上です。このメモリーは仮想メモリーではなく、物理メモリーであることに注意してください。

    <YOUNG_GENERATION_SIZE>は、<HEAP_SIZE>値の1/4(25%)である必要があります。

    -verbose:gcは、マイナーおよびメジャーのJavaガベージ・コレクションをすべて出力します。これらの統計を監視すると、メモリー・リソース計画に役立ちます。ガベージ・コレクションが頻繁に発生したり、数秒間にわたり継続する場合は、Java VMに物理メモリーをさらに割り当てる必要がある可能性があります。


    注意:

    Java VMに必要となるメモリー量は、主に2つのパラメータによって決定されます。1つは、server.xml<application-server>要素の<max-http-connections value="..." />要素、もう1つは、geocodercfg.xmlpartition_cache_size_limitパラメータです。

    次のコマンドは、OC4Jを起動する例です。-configフラグは、OC4Jコマンドライン・パラメータであり、VMオプションではないことに注意してください。

    c:\jdk1.5.0_06\bin\java -server
                            -Xms1024m
                            -Xmx1024m
                            -XX:NewSize=256m
                            -XX:MaxNewSize=256m
                            -Dsun.rmi.dgc.server.gcInterval=3600000
                            -Dsun.rmi.dgc.client.gcInterval=3600000
                            -verbose:gc
                            -jar c:\oc4j\j2ee\home\oc4j.jar
                            -config c:\oc4j\j2ee\home\config\server.xml
    
  6. 次の書式でURLにアクセスし、デプロイメントを確認します。

    http://<hostname>:<port>/geocoder
    

    ようこそページが表示されます。また、OC4Jを起動したコンソール・ウィンドウには、Oracle Spatialジオコーディング・サービスが正常に初期化されたことを示すメッセージが表示されます。

    ようこそのメッセージが表示されない場合、ジオコーディング・サービスは、ご使用の環境で適切に動作するように構成されていない可能性があります。このような場合は、<J2EE_HOME>/applications/geocoder/web/WEB-INF/config/geocodercfg.xmlファイルを編集して、ご使用の環境とプリファレンスを反映します。(geocodercfg.xmlファイルは、geocoder.earファイル内にあり、OC4Jがこれを<J2EE_HOME>の下のジオコーダ・ディレクトリ構造に展開するまでは表示されません。)編集が終了したら、OC4Jを再起動して、デプロイメントを確認します。

  7. 提示される例を参照します。http://<hostname>:<port>/geocoder/のページには、テスト・サンプルというセクションの下部にリンクがあります。これらの例では、ジオコーディング・サービスの様々な機能を実例を使用して説明します。 これは、XML API(11.7.2項を参照)の学習に適しています。

11.7.1.1 geocodercfg.xmlファイルの構成

Spatialに付属するデフォルトのgeocodercfg.xmlファイルの<database>要素を編集して、ジオコーディング・データがロードされるデータベースとスキーマを指定する必要があります。例11-5は、変更されたgeocodercfg.xmlファイルからの抜粋です。

例11-5 変更されたgeocodercfg.xmlファイル

. . .
   <database name="local"
             host="sdolnx2"
             port="1523"
             sid="orcl"
             mode="thin"
             user="geocoder_wld"
             password="!password" />
. . .

geocodercfg.xmlファイルの<database>要素の構成は次のとおりです。

  • nameは、データベース接続の記述名です。

  • hostportおよびsidにより、データベースを識別します。

  • modeにより、使用するJDBCドライバを識別します。

  • userおよびpasswordは、ジオコーディング・データが格納されているスキーマに対する、データベース・ユーザーのユーザー名とパスワードです。

  • passwordには、パスワード値の前に感嘆符(!)を配置します。こうすることで、OC4Jの次回の再起動時に、クリアテキスト・パスワードが自動的に不明瞭化され置換されます。

11.7.2 ジオコーディング・リクエストのDTDおよび例

ジオコーディング・リクエスト(HTTP GETまたはPOSTメソッド)の場合、そのリクエストには、xml_requestというパラメータがあり、その値は、リクエストのXML文書が含まれる文字列であると想定されます。入力XML文書には、ジオコードを行うために必要な入力住所が記述されます。1つのXMLリクエストには、1つ以上の入力住所を含めることができます。いくつかの国際化された住所形式は、入力住所の記述に使用できます。(また、入力XML APIでは、経度/緯度で通りの住所を指定する、逆ジオコードもサポートされています。)

ジオコーディング・リクエストのDTDは、次のとおりです。

<!-- geocode_request DTD includes the GML Feature DTD as an external entity reference. The complete URL for the DTD: http://www.opengis.org/techno/specs/00-029/gmlfeature.dtd  -->
<!ENTITY % GMLFEATUREDTD SYSTEM "gmlfeature.dtd" %GMLFEATUREDTD; <!ELEMENT geocode_request (address_list)>
<!ATTLIST geocode_request >
<!ELEMENT address_list (input_location+)>
<!ELEMENT input_location (Point │input_address)>
<!ATTLIST input_location
  id CDATA #IMPLIED
  multimatch_number CDATA "4">
<!ELEMENT input_address (us_form1 │ us_form2 │ gdf_form │ gen_form │ unformatted)>
<!ATTLIST input_address match_mode CDATA #IMPLIED >
<!ELEMENT gdf_form EMPTY>
<!ATTLIST gdf_form
  name CDATA #IMPLIED
  street CDATA #IMPLIED
  intersecting_street CDATA #IMPLIED
  builtup_area CDATA #IMPLIED
  order8_area CDATA #IMPLIED
  order2_area CDATA #IMPLIED
  order1_area CDATA #IMPLIED
  country CDATA #IMPLIED
  postal_code CDATA #IMPLIED
  postal_addon_code CDATA #IMPLIED
>
<!ELEMENT gen_form EMPTY>
<!ATTLIST gen_form
  name CDATA #IMPLIED
  street CDATA #IMPLIED
  intersecting_street CDATA #IMPLIED
  sub_area CDATA #IMPLIED
  city CDATA #IMPLIED
  region CDATA #IMPLIED
  country CDATA #IMPLIED
  postal_code CDATA #IMPLIED
  postal_addon_code CDATA #IMPLIED
>
<!ELEMENT us_form1 EMPTY>
<!ATTLIST us_form1
  name CDATA #IMPLIED
  street CDATA #IMPLIED
  intersecting_street CDATA #IMPLIED
  lastline CDATA #IMPLIED
>
<!ELEMENT us_form2 EMPTY>
<!ATTLIST us_form2
  name CDATA #IMPLIED
  street CDATA #IMPLIED
  intersecting_street CDATA #IMPLIED
  city CDATA #IMPLIED
  state CDATA #IMPLIED
  zip_code CDATA #IMPLIED
>
<!ELEMENT unformatted (address_line) >
<!ATTLIST unformatted country CDATA #IMPLIED >
<!ELEMENT address_line EMPTY >
<!ATTLIST value #REQUIRED >

例11-6に、異なる住所形式および形式化されていない住所を使用した、4つの住所(2つの異なる実際の物理的な住所を示す)をジオコードするリクエストを示します。

例11-6 ジオコーディング・リクエスト(XML API)

<?xml version="1.0" encoding="UTF-8" ?>
<geocode_request>
  <address_list>
    <input_location id="1">
      <input_address>
        <us_form2 name="Oracle" street="500 Oracle Parkway" city="Redwood City" state="CA" zip_code="94021" />
      </input_address>
    </input_location>
    <input_location id="2">
       <input_address>
         <gdf_form street="1 Oracle Drive" builtup_area="Nashua" order1_area="NH" postal_code="03062" country="US" />
       </input_address>
    </input_location>
    <input_location id="3">
       <input_address>
         <gen_form street="1 Oracle Drive" city="Nashua" region="NH" postal_code="03062" country="US" />
       </input_address>
    </input_location>
    <input_location id="4">
       <input_address>
         <unformatted country="UNITED STATES">
           <address_line value ="Oracle NEDC"/>
           <address_line value ="1 Oracle drive "/>
           <address_line value ="Nashua "/>
           <address_line value ="NH"/>
         </unformatted >
       </input_address>
     </input_location>
  </address_list>
</geocode_request>

11.7.3 ジオコーディング・レスポンスのDTDおよび例

ジオコーディング・レスポンスには、経度/緯度の点、一致コード、複数の一致の可能性と一致なしの表示、エラー・メッセージなど、1つ以上の標準化された住所が含まれます。

ジオコーディング・レスポンスのDTDは、次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT geocode_response (geocode+)>
<!ELEMENT geocode (match*)>
<!ATTLIST geocode id CDATA #REQUIRED
  match_count CDATA #IMPLIED
>
<!ELEMENT match (output_address)>
<!ATTLIST match sequence CDATA #REQUIRED
  longitude CDATA #REQUIRED
  latitude CDATA #REQUIRED
  match_code CDATA #REQUIRED
  error_message CDATA #IMPLIED >
<!ELEMENT output_address EMPTY>
<!ATTLIST output_address
  name CDATA #IMPLIED
  house_number CDATA #IMPLIED
  street CDATA #IMPLIED
  builtup_area CDATA #IMPLIED
  order1_area CDATA #IMPLIED
  order8_area CDATA #IMPLIED
  country CDATA #IMPLIED
  postal_code CDATA #IMPLIED
  postal_addon_code CDATA #IMPLIED
  side CDATA #IMPLIED
  percent CDATA #IMPLIED
  edge_id CDATA #IMPLIED>

例11-7に、11.7.2項例11-6のリクエストに対するレスポンスを示します。

例11-7 ジオコーディング・レスポンス(XML API)

<?xml version="1.0" encoding="UTF-8" ?>
<geocode_response>
  <geocode id="1" match_count="1">
    <match sequence="0" longitude="-122.26193971893862" latitude="37.53195483966782" match_code="10" error_message="????#ENUT?B281C??">
      <output_address name="" house_number="500" street="ORACLE PKY" builtup_area="REDWOOD CITY" order1_area="CA" order8_area="" country="US" postal_code="94065" postal_addon_code="" side="L" percent="0.33166666666666667" edge_id="28503563" />
    </match>
  </geocode>
  <geocode id="2" match_count="1">
    <match sequence="0" longitude="-71.45937299307225" latitude="42.70784494226865" match_code="1" error_message="????#ENUT?B281CP?">
      <output_address name="" house_number="1" street="ORACLE DR" builtup_area="NASHUA" order1_area="NH" order8_area="" country="US" postal_code="03062" postal_addon_code="" side="L" percent="0.01" edge_id="22325991" />
    </match>
  </geocode>
  <geocode id="3" match_count="1">
    <match sequence="0" longitude="-71.45937299307225" latitude="42.70784494226865" match_code="1" error_message="????#ENUT?B281CP?">
      <output_address name="" house_number="1" street="ORACLE DR" builtup_area="NASHUA" order1_area="NH" order8_area="" country="US" postal_code="03062" postal_addon_code="" side="L" percent="0.01" edge_id="22325991" />
    </match>
  </geocode>
  <geocode id="4" match_count="1">
    <match sequence="0" longitude="-71.45937299307225" latitude="42.70784494226865" match_code="1" error_message="????#ENUT?B281CP?">
      <output_address name="" house_number="1" street="ORACLE DR" builtup_area="NASHUA" order1_area="NH" order8_area="" country="US" postal_code="03062" postal_addon_code="" side="L" percent="0.01" edge_id="22325991" />
    </match>
  </geocode>
</geocode_response>