このリポジトリには次の 2 つのものが含まれています。
(A) One Scotland Gazetteer (OSG) Web サービスと FTP ダウンロードをテストするための Python 3.x コード、例、およびスクリプト。
(B) OSG Web サービスおよび FTP に関する一般的なドキュメント。
(A)オペレーティング システム (OS) に Python 3.x がインストールされている
(B) One Scotland Gazetteer (OSG) に登録していますが、OSG Web サービスまたは OSG FTP の使用を許可されていますか。詳細については、One Scotland Gazetteer の Web サイトをご覧ください。
(A) development.ini
を編集します。
このリポジトリのルート フォルダで、development.ini ファイルを編集し、OSG FTP および OSG Web サービスのユーザー名とパスワードを追加します。これらの資格情報は One Scotland Gazetteer Custodian によって提供され、FTP サービスと Web サービスでは異なる場合があります。
(B) Web サービスの例を使用します。
python rest.py
(C)以下を実行して FTP 機能を使用します。
python download_osg_using_ftp.py
概要:このドキュメントでは、次の 2 つの「One Scotland Gazetteer」(OSG) サービスをプログラムで使用する方法について説明します。
(1)ウェブサービス。この Web サービスは OSG データベースと直接通信し、リアルタイムで地名辞典にアクセスして最新の情報を提供することができます。 OSG は 2 種類のサービスをサポートしています。 「Representational state transfer」(REST)と「Simple Object Access Protocol」(SOAP)です。
(2)ファイルをエクスポートします。エクスポートは、Scottish Data Transfer Format (SDTF) で CSV ファイルとして提供される場合があります。エクスポートは、所定の頻度で実行されるようにスケジュールされます。要件に合わせてデータのサブセットも提供される場合があります。
詳細については、One Scotland Gazetteer の Web サイトをご覧ください。
OSG Web サービスは、実際のデータを含むフィールドを含むデータセットを中心に構造化されています。各 Web サービス データセットは異なるフィールドとデータを返し、異なる機能をサポートする場合もあります。 OSG には、クエリに使用できるデータセットを返すsendNGListDataSetsMessage
(以降、 list ) と、それらのデータセットに対してクエリを実行できるようにするsendNGSearchMessage
(以降、 search ) の 2 つの Web サービスがあります。 OSG Web サービスによって返されるレコードの最大数は250 を超えることはできません。 OSG サービスの説明は、それぞれ REST と SOAP にあります。
認証:すべての OSG Web サービスでは、 username
とpassword
使用した認証が必要です。 Web サービスに送信されるすべてのリクエストのHTTP request headers
にusername
とpassword
両方を指定する必要があります。偽の資格情報を使用した REST と SOAP の両方の認証リクエスト ヘッダーの例を以下に示します。
休む
Content-Type:application/json
Accept:application/json
username:Alice
password:secret
石鹸
<soapenv:Header>
<v0:HeaderLogin>
<username>Alice</username>
<password>secret</password>
</v0:HeaderLogin>
</soapenv:Header>
認可: username
とpassword
使用して OSG Web サービスで認証しても、利用可能なすべての OSG データセットにアクセスできるわけではありません。データセットへのアクセスは OSG 管理者によって管理され、追加のデータセットへのアクセスが必要な場合、ユーザーは One Scotland Gazetteer Web サイトにアクセスしてリクエストを行う必要があります。たとえば、認証に成功したユーザーには、 ADDRESS_SEARCH
データセットではなく、 EST_STANDARD_SEARCH
データセットを使用した検索Web サービス ( sendNGSearchMessage
) へのアクセスが許可される場合があります。
データセット:リストWeb サービスは、利用可能なすべての OSG データセットを返すことができます。 OSG データセット リストは、価値がある場合に OSG 管理者が簡単に新しいデータセットを作成できるため、動的にすることができます。クエリ可能な各データセットのフィールドを含む、利用可能なすべてのデータセットのリストを取得するには、次のリクエストを使用できます。
休む
リクエストボディ
{"listdatasets":{}}
レスポンスボディ
"ListDataSetsResponseMessage":{
"Header":{
"ResultCount":8,
"ReturnCount":8,
"ErrorCode":0,
"ErrorMessage":"Success"
},
"NGListDataSetsResponseData":[
{"DataSet":"EST_STANDARD_SEARCH","Col":["Address_One_Line","Custodian","Easting","Northing","Parent_UPRN","Postcode","Search_Building_Name","Search_Building_No","Search_Postcode_No_Space","Search_Street_Name","Search_Town","Status","UPRN","USRN"]},
{"DataSet":"FVGIS_STANDARD_SEARCH","Col":["Address_One_Line","address_one_line_custom","County_Name","Custodian","Easting","Locality_Name","Northing","paon","PAO_NO","Postcode","Post_Town","p_text","record_type_id","saon","SAO_NO","search_building","search_building_name","search_building_no","search_street_name","search_town","Status","s_text","Street_Descriptor","Town","uprn","usrn","x_coordinate","y_coordinate"]},
{"DataSet":"FVGIS_STREET_SEARCH","Col":["Custodian","End_Easting","End_Northing","Local_Authority","Locality","search_street_name","search_street_town","Start_Easting","Start_Northing","Street_Name","street_one_line","Town","usrn"]},
{"DataSet":"GLASGOW_ACCESS_SAP","Col":["ADDRESS_ONE_LINE","ADR03","ADR04","FLOOR","LAND1","LOCALITY","ORT01","ORT02","PAO_NO","PSTLZ","P_TEXT","SAO_NO","search_line_one","search_postcode_no_space","STATE","S_TEXT","STREET_DESCRIPTOR","UPRN"]},
{"DataSet":"STANDARD_SEARCH","Col":["ADDRESS_ONE_LINE","Custodian","Easting","Northing","Postcode","search_building_name","search_building_no","search_street_name","search_town","Status","UPRN"]},
{"DataSet":"STANDARD_SEARCH_OLDP","Col":["address_one_line","Custodian","Easting","Northing","Postcode","search_building_name","search_building_no","search_postcode_no_space","search_street_name","search_town","Status","uprn"]},
{"DataSet":"STD_ADDRESS_SEARCH","Col":["ADD_LINE_1","ADD_LINE_2","ADD_LINE_3","address_string","la_code","POST_CODE","start_date","TOWN","UPRN","USRN","x_coord","y_coord"]},
{"DataSet":"WLC_SEARCH","Col":["Address_One_Line","address_one_line_custom","County_Name","Custodian","Easting","Locality_Name","Northing","paon","PAO_NO","Postcode","Post_Town","p_text","record_type_id","saon","SAO_NO","search_building","search_building_name","search_building_no","search_street_name","search_town","Status","s_text","Street_Descriptor","Town","uprn","usrn","x_coordinate","y_coordinate"]}
]
}
}
クエリ: OSG データのクエリには、検索Web サービスとフィールドまたはジオメトリの使用が含まれます。検索Web サービスは次の入力を受け取ることができます。
RESTの例
(1) EST_STANDARD_SEARCH
データセットから OSG レコードを返します。
リクエストボディ
{"query":{
"dataset":"EST_STANDARD_SEARCH",
"type":"full"
}}
レスポンスボディ
{
"SearchResponseMessage": {
"NGSearchResponseData": {
"Header": {
"ResultCount": 3296208,
"ReturnCount": 250,
"ErrorCode": 0,
"ErrorMessage": "Success"
},
"Result": {
"any": [
[CONTENT OMITTED DUE TO DATA LENGTH]
]
}
}
}
}
表 1. Web サービスに送信されるクエリ内に含めることができる HTTP リクエスト データ。
価値 | 説明 | 必須 | タイプ |
---|---|---|---|
dataset | Web サービスによってクエリされるデータセットの名前 | はい | string |
attribute | 返される結果をフィルタリングするために使用できるデータセットの 1 つ以上の属性。指定する属性は、データセット内のフィールドからのものである必要があります。マッチタイプも指定できます。すべての比較では大文字と小文字が区別されません。指定する属性には、(フィールドの) 名前と 1 つ以上の値を指定する必要があります。複数の属性が順番に適用されて、返される結果の小さなセットが生成されます (つまり、それらは論理的に一緒にブランド化されます)。 | いいえ | AttributeType |
area | これは、事前に読み込まれたポリゴンの名前を取得します。これを使用して、結果を、そのポリゴンで定義された地理的領域内の UPRN を持つアイテムに制限できます。 | いいえ | string |
within | この要素を指定する場合は、東距、北距、距離の 3 つのサブ要素を含める必要があります。これらの要素はエリアを定義し、そのエリア内に UPRN を持つアイテムのみが返されます。 | いいえ | WithinType |
sortField | これにより、データセットのいずれかのフィールドに基づいて結果を並べ替えることができます。これに指定される値は、データセットのフィールドの 1 つである必要があります。 | いいえ | string |
sortOrder | sortField に適用される | いいえ | SortOrderType |
表 2. AttributeType
の定義
価値 | タイプ | オプション |
---|---|---|
matchtype | string | equal to (default) greater than greater than or equal to less than less than or equal to contains between in 含まれるnot equal to not in |
name | string | |
value | string |
表 3. WithinType
の定義
価値 | タイプ | オプション |
---|---|---|
easting | unsignedLong | 0 - 500000 |
northing | unsignedLong | 500000 - 1300000 |
distance | decimal |
表 4. SortOrderType
の定義
価値 | タイプ | オプション |
---|---|---|
asc | string | |
desc | string |
表 5. HTTP 応答本文:サーバーの応答本文で返されるデータが含まれます。
価値 | 説明 | オプション |
---|---|---|
ResultCount | クエリに一致するデータ項目の数 | |
ReturnCount | Web サービスによって返されるデータ項目の数 (ResultCount と 250 の最小値) | |
ErrorCode | 成功の場合は 0、失敗の場合は 0 以外 (後述) | 「エラーコード」表を参照してください。 |
ErrorMessage | 発生したエラーを説明するメッセージ (後述) | 「エラーコード」表を参照してください。 |
Result | クエリに一致するデータ項目。実際の形式はクエリ対象のデータセットによって異なりますが、データセットと同じ名前の一連の要素で構成され、各要素にはデータセット内の各フィールドの要素 (そのフィールドと同じ名前) が含まれます。 |
表 6. HTTP 応答エラー コード:サーバーから返される可能性のあるすべてのエラー コードを応答本文に含めます。
Web サービスは、次の 4 つのエラー コードを返す可能性があります。
コード | 説明 | メッセージ |
---|---|---|
0 | Webサービスへの送信に成功しました | |
1 | Web サービスに投稿されたデータでエラーが発生しました | Invalid Value - Schema validation error : <error msg> |
2 | リクエストの処理中に問題が発生しました (たとえば、存在しないデータセットのリクエストなど) | Invalid dataset [<dataset>] Invalid attribute name for dataset <dataset> [<attr_name>] <attr_name>: Invalid Date [<value>] expected format YYYY-MM-DD <attr_name>: Invalid Number [<value>] Invalid area [<area>] The dataset <dataset> does not support filtering on area polygon (<area>) awaiting initial index build - please try again later Invalid sort_field for dataset <dataset> [<sort_field>] |
3 | 認証・認可エラー | Invalid Username/Password The address your computer is accessing this site from (xxx.xxx.xxx.xxx) has been blocked due to excessive failed login attempts. To have this block removed, please contact <contact email>. Alternatively, the block will be automatically removed in two hours time An unknown login failure occurred. The administrators have been notified of the event You do not have permission to use this service Missing authentication header in soap request |