พื้นที่เก็บข้อมูลนี้ประกอบด้วยสองสิ่ง:
(A) โค้ด Python 3.x ตัวอย่าง และสคริปต์เพื่อทดสอบบริการเว็บ One Scotland Gazetteer (OSG) และการดาวน์โหลด FTP
(B) เอกสารทั่วไปสำหรับบริการเว็บ OSG และ FTP
(A) คุณได้ติดตั้ง python 3.x ในระบบปฏิบัติการ (OS) ของคุณ
(B) คุณได้ลงทะเบียนกับ One Scotland Gazetteer (OSG) และคุณได้รับอนุญาตให้ใช้บริการเว็บ OSG หรือ OSG FTP ได้หรือไม่ หากต้องการเรียนรู้เพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ One Scotland Gazetteer
(A) แก้ไข development.ini
:
ในโฟลเดอร์รูทของที่เก็บนี้ ให้แก้ไขไฟล์ development.ini และเพิ่มชื่อผู้ใช้และรหัสผ่านของคุณสำหรับ OSG FTP และบริการเว็บ OSG ข้อมูลรับรองเหล่านี้จัดทำโดย One Scotland Gazetteer Custodian และคุณอาจมีข้อมูลที่แตกต่างกันสำหรับ FTP และบริการบนเว็บ
(B) ใช้ตัวอย่างบริการเว็บ:
python rest.py
(C) ใช้ฟังก์ชัน FTP โดยเรียกใช้สิ่งต่อไปนี้
python download_osg_using_ftp.py
ภาพรวม: เอกสารนี้ให้ข้อมูลเกี่ยวกับวิธีการใช้บริการ "One Scotland Gazetteer" (OSG) สองรายการโดยทางโปรแกรม:
(1) บริการบนเว็บ บริการเว็บสื่อสารโดยตรงกับฐานข้อมูล OSG และช่วยให้คุณเข้าถึงราชกิจจานุเบกษาแบบเรียลไทม์ โดยให้ข้อมูลที่ทันสมัยที่สุด OSG รองรับบริการสองประเภท "การถ่ายโอนสถานะการเป็นตัวแทน" (REST) และ "Simple Object Access Protocol" (SOAP)
(2) ส่งออกไฟล์; การส่งออกอาจมีให้ในรูปแบบการถ่ายโอนข้อมูลของสกอตแลนด์ (SDTF) ในรูปแบบไฟล์ CSV การส่งออกจะถูกกำหนดให้ดำเนินการตามความถี่ที่กำหนดไว้ล่วงหน้า ชุดย่อยของข้อมูลอาจถูกจัดเตรียมให้ตรงกับความต้องการของคุณ
สำหรับข้อมูลเพิ่มเติม กรุณาเยี่ยมชมเว็บไซต์ One Scotland Gazetteer
บริการเว็บ OSG มีโครงสร้างตามชุด ข้อมูล ซึ่งมี ฟิลด์ ซึ่งจะมี ข้อมูล จริงตามลำดับ ชุดข้อมูลบริการเว็บแต่ละชุดส่งคืนฟิลด์และข้อมูลที่แตกต่างกัน และอาจรองรับฟังก์ชันการทำงานที่แตกต่างกันด้วย OSG มีบริการเว็บสองรายการ sendNGListDataSetsMessage
(ต่อจากนี้ ไป list ) ซึ่งส่งคืนชุดข้อมูลที่พร้อมใช้งานสำหรับการสืบค้น และ sendNGSearchMessage
(ต่อจากนี้ ไป การค้นหา ) ซึ่งอนุญาตให้ดำเนินการสืบค้นในชุดข้อมูลเหล่านั้น จำนวนบันทึกสูงสุดที่ส่งคืนโดยบริการเว็บ OSG จะต้องไม่เกิน 250 คำอธิบายบริการ OSG สามารถพบได้ที่ REST และ SOAP ตามลำดับ
การตรวจสอบสิทธิ์: บริการเว็บ OSG ทั้งหมดจำเป็นต้องมีการตรวจสอบสิทธิ์โดยใช้ username
และ password
ควรระบุทั้ง username
และ password
ใน HTTP request headers
สำหรับทุกคำขอที่ส่งไปยังบริการเว็บ ตัวอย่างของส่วนหัวคำขอตรวจสอบสิทธิ์สำหรับทั้ง 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>
การอนุญาต: การรับรองความถูกต้องกับบริการเว็บ OSG โดยใช้ username
และ password
ของคุณไม่ได้หมายความว่าคุณสามารถเข้าถึงชุดข้อมูล OSG ที่มีอยู่ทั้งหมด การเข้าถึงชุดข้อมูลได้รับการดูแลโดยผู้ดูแล OSG และหากจำเป็นต้องมีการเข้าถึงชุดข้อมูลเพิ่มเติม ผู้ใช้จำเป็นต้องไปที่เว็บไซต์ One Scotland Gazetteer และยื่นคำขอ ตัวอย่างเช่น ผู้ใช้ที่ผ่านการรับรองความถูกต้องเรียบร้อยแล้วอาจได้รับอนุญาตให้เข้าถึงบริการเว็บ การค้นหา ( sendNGSearchMessage
) ด้วยชุดข้อมูล EST_STANDARD_SEARCH
เท่านั้น แต่ไม่ใช่ชุดข้อมูล ADDRESS_SEARCH
ชุดข้อมูล: รายการ บริการเว็บสามารถส่งคืนชุดข้อมูล 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 รวมถึงการใช้บริการเว็บ การค้นหา และฟิลด์หรือ/และรูปทรงเรขาคณิต บริการเว็บ ค้นหา สามารถรับอินพุตต่อไปนี้:
ตัวอย่างส่วนที่เหลือ
(1) ส่งคืนบันทึก OSG จากชุดข้อมูล EST_STANDARD_SEARCH
ขอร่างกาย
{"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. ข้อมูลคำร้องขอ HTTP ซึ่งสามารถรวมไว้ภายในเคียวรีที่โพสต์ไปยังเว็บเซอร์วิส
ค่า | คำอธิบาย | บังคับ | พิมพ์ |
---|---|---|---|
dataset | ชื่อของชุดข้อมูลที่จะสอบถามโดยบริการเว็บ | ใช่ | 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 between in 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 | จำนวนรายการข้อมูลที่ส่งคืนโดยบริการเว็บ (ขั้นต่ำ ResultCount และ 250) | |
ErrorCode | ศูนย์สำหรับความสำเร็จหรือไม่เป็นศูนย์สำหรับความล้มเหลว (ดูภายหลัง) | ดูตาราง "รหัสข้อผิดพลาด" |
ErrorMessage | ข้อความอธิบายข้อผิดพลาดที่เกิดขึ้น (ดูภายหลัง) | ดูตาราง "รหัสข้อผิดพลาด" |
Result | รายการข้อมูลที่ตรงกับแบบสอบถาม รูปแบบที่แท้จริงจะขึ้นอยู่กับชุดข้อมูลที่กำลังสืบค้น แต่จะประกอบด้วยชุดขององค์ประกอบที่มีชื่อเหมือนกับชุดข้อมูล โดยแต่ละองค์ประกอบจะมีองค์ประกอบสำหรับแต่ละฟิลด์ในชุดข้อมูล (ชื่อเหมือนกับฟิลด์นั้น) |
ตารางที่ 6. รหัสข้อผิดพลาดการตอบสนอง HTTP: รวมรหัสข้อผิดพลาดที่เป็นไปได้ทั้งหมดที่ส่งคืนโดยเซิร์ฟเวอร์ในเนื้อหาการตอบสนอง
บริการบนเว็บสามารถส่งคืนรหัสข้อผิดพลาดที่เป็นไปได้สี่รหัสซึ่งมีดังต่อไปนี้:
รหัส | คำอธิบาย | ข้อความ |
---|---|---|
0 | ส่งไปยังบริการเว็บสำเร็จ | |
1 | เกิดข้อผิดพลาดกับข้อมูลที่โพสต์ไปยังบริการบนเว็บ | 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 |