這個儲存庫包括兩件事:
(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。要了解更多信息,請訪問蘇格蘭地名詞典網站。
(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
概述:本文檔提供有關如何以程式設計方式使用兩項「One Scotland Gazetteer」(OSG) 服務的資訊:
(1)網路服務; Web 服務直接與 OSG 資料庫通信,讓您可以即時存取地名詞典,提供最新資訊。 OSG支援兩種類型的服務; 「表述性狀態傳輸」(REST) 與「簡單物件存取協定」(SOAP)。
(2)導出文件;可以以蘇格蘭資料傳輸格式 (SDTF) 以 CSV 檔案匯出。出口將按預定頻率運作。還可以提供資料子集以滿足您的要求。
欲了解更多信息,請訪問 One Scotland Gazetteer 網站。
OSG Web 服務是圍繞資料集建構的,資料集包含字段,而字段又包含實際資料。每個 Web 服務資料集會傳回不同的欄位和數據,也可能支援不同的功能。 OSG 有兩個 Web 服務sendNGListDataSetsMessage
(以下稱為list ),它傳回可用於查詢的資料集;以及sendNGSearchMessage
(以下稱為search ),它允許對這些資料集執行查詢。 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 地名詞典網站並提出請求。例如,成功通過驗證的使用者可能被授權僅使用EST_STANDARD_SEARCH
資料集而不是ADDRESS_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 服務可以接收以下輸入:
休息範例
(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 | 資料集的一個或多個屬性,可用於過濾要傳回的結果。指定的屬性必須來自資料集中的欄位。也可以指定匹配類型。所有比較都不區分大小寫。對於指定的屬性,必須提供(欄位的)名稱和一個或多個值。依序套用多個屬性以產生要傳回的較小結果集(即,它們在邏輯上被標記在一起)。 | 不 | AttributeType |
area | 這採用預先載入多邊形的名稱,可用於將結果限制為在該多邊形定義的地理區域中具有 UPRN 的項目。 | 不 | string |
within | 如果提供此元素,則它必須包含三個子元素:東距、北距和距離。這些元素定義一個區域,並且僅傳回具有該區域中的 UPRN 的項目。 | 不 | WithinType |
sortField | 這允許根據資料集中的字段之一對結果進行排序。為此提供的值必須是資料集中的欄位之一。 | 不 | 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 not equal to contains in between 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 | 零表示成功,非零表示失敗(見下文) | 請參閱“錯誤代碼”表 |
ErrorMessage | 描述發生的錯誤的訊息(見下文) | 請參閱“錯誤代碼”表 |
Result | 與查詢相符的資料項。實際格式將取決於所查詢的資料集,但它將由一組與資料集命名相同的元素組成,每個元素包含資料集中每個欄位的元素(與該欄位命名相同)。 |
表 6. HTTP 回應錯誤代碼:包括伺服器在回應正文中傳回的所有可能的錯誤代碼
Web 服務可以傳回四種可能的錯誤代碼,如下所示:
程式碼 | 解釋 | 訊息 |
---|---|---|
0 | 成功提交至網路服務 | |
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 |