Repositori ini mencakup dua hal:
(A) Kode Python 3.x, contoh, dan skrip untuk menguji layanan web One Scotland Gazetteer (OSG) dan unduhan FTP.
(B) Dokumentasi umum untuk layanan web OSG dan FTP.
(A) Anda telah menginstal python 3.x di sistem operasi (OS) Anda
(B) Anda telah mendaftar pada One Scotland Gazetteer (OSG) dan dapatkah Anda diberi wewenang untuk menggunakan layanan web OSG atau OSG FTP. Untuk mempelajari lebih lanjut silakan kunjungi situs web One Scotland Gazetteer.
(A) Edit development.ini
:
Di folder root repositori ini, edit file development.ini dan tambahkan nama pengguna dan kata sandi Anda untuk OSG FTP dan layanan web OSG. Kredensial ini diberikan oleh One Scotland Gazetteer Custodian dan Anda mungkin memiliki kredensial berbeda untuk FTP dan layanan Web.
(B) Gunakan contoh layanan web:
python rest.py
(C) Gunakan fungsionalitas FTP dengan menjalankan yang berikut ini
python download_osg_using_ftp.py
Ikhtisar: Dokumentasi ini memberikan informasi tentang cara menggunakan dua layanan "One Scotland Gazetteer" (OSG) secara terprogram:
(1) Layanan web; Layanan web berkomunikasi langsung dengan database OSG dan memungkinkan Anda mengakses Gazetteer secara real time, memberikan informasi terkini. OSG mendukung dua jenis layanan; "Representational state transfer" (REST) dan "Simple Object Access Protocol" (SOAP).
(2) Ekspor file; Ekspor dapat diberikan dalam Scottish Data Transfer Format (SDTF) sebagai file CSV. Ekspor, akan dijadwalkan untuk dijalankan pada frekuensi yang telah ditentukan. Subset data juga dapat diberikan untuk memenuhi kebutuhan Anda.
Untuk informasi tambahan silakan kunjungi situs web One Scotland Gazetteer.
Layanan web OSG disusun berdasarkan kumpulan data , yang berisi bidang yang pada gilirannya berisi data aktual. Setiap kumpulan data layanan web mengembalikan bidang & data yang berbeda dan mungkin juga mendukung fungsi yang berbeda. OSG memiliki dua layanan web sendNGListDataSetsMessage
(selanjutnya list ) yang mengembalikan kumpulan data yang tersedia untuk kueri, dan sendNGSearchMessage
(selanjutnya search ) yang memungkinkan kueri dilakukan pada kumpulan data tersebut. Jumlah maksimum catatan yang dikembalikan oleh layanan web OSG tidak boleh melebihi 250 . Deskripsi layanan OSG masing-masing dapat ditemukan di REST dan SOAP.
Otentikasi: Semua layanan web OSG memerlukan otentikasi menggunakan username
dan password
. username
dan password
harus disediakan di HTTP request headers
untuk setiap permintaan yang dikirim ke layanan web. Contoh header permintaan otentikasi untuk REST dan SOAP menggunakan kredensial palsu dapat ditemukan di bawah:
ISTIRAHAT
Content-Type:application/json
Accept:application/json
username:Alice
password:secret
SABUN
<soapenv:Header>
<v0:HeaderLogin>
<username>Alice</username>
<password>secret</password>
</v0:HeaderLogin>
</soapenv:Header>
Otorisasi: Mengautentikasi dengan layanan web OSG menggunakan username
dan password
Anda tidak berarti Anda memiliki akses ke semua kumpulan data OSG yang tersedia. Akses ke kumpulan data dikelola oleh kustodian OSG dan jika akses diperlukan untuk kumpulan data tambahan, pengguna perlu mengunjungi situs web One Scotland Gazetteer dan mengajukan permintaan. Misalnya, pengguna yang berhasil diautentikasi mungkin diberi wewenang untuk mengakses layanan web pencarian ( sendNGSearchMessage
) hanya dengan kumpulan data EST_STANDARD_SEARCH
tetapi tidak dengan kumpulan data ADDRESS_SEARCH
.
Kumpulan data: Layanan web daftar dapat mengembalikan semua kumpulan data OSG yang tersedia. Daftar kumpulan data OSG bisa bersifat dinamis karena kustodian OSG dapat dengan mudah membuat kumpulan data baru jika ada manfaatnya. Untuk mendapatkan daftar semua kumpulan data yang tersedia termasuk bidang untuk setiap kumpulan data yang dapat ditanyakan, permintaan berikut dapat digunakan:
ISTIRAHAT
Permintaan tubuh
{"listdatasets":{}}
Badan respons
"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"]}
]
}
}
Kueri: Mengkueri data OSG termasuk menggunakan layanan web pencarian dan bidang atau/dan geometri. Layanan web pencarian dapat menerima input berikut:
Contoh SISA
(1) Kembalikan catatan OSG dari kumpulan data EST_STANDARD_SEARCH
.
Permintaan tubuh
{"query":{
"dataset":"EST_STANDARD_SEARCH",
"type":"full"
}}
Badan respons
{
"SearchResponseMessage": {
"NGSearchResponseData": {
"Header": {
"ResultCount": 3296208,
"ReturnCount": 250,
"ErrorCode": 0,
"ErrorMessage": "Success"
},
"Result": {
"any": [
[CONTENT OMITTED DUE TO DATA LENGTH]
]
}
}
}
}
Tabel 1. Data permintaan HTTP yang dapat disertakan dalam kueri yang diposting ke layanan web.
Nilai | Keterangan | Wajib | Jenis |
---|---|---|---|
dataset | Nama kumpulan data yang akan ditanyakan oleh layanan web | Ya | string |
attribute | Satu atau lebih atribut kumpulan data yang dapat digunakan untuk memfilter hasil yang akan dikembalikan. Atribut yang ditentukan harus berasal dari kolom dalam kumpulan data. Tipe pencocokan juga dapat ditentukan. Semua perbandingan tidak peka huruf besar-kecil. Untuk atribut yang ditentukan, nama (bidang) dan satu atau lebih nilai harus diberikan. Beberapa atribut diterapkan secara bergantian untuk menghasilkan kumpulan hasil yang lebih kecil untuk dikembalikan (yaitu atribut-atribut tersebut secara logis diberi merek bersama). | TIDAK | AttributeType |
area | Ini mengambil nama poligon yang dimuat sebelumnya yang dapat digunakan untuk membatasi hasil pada item dengan UPRN di wilayah geografis yang ditentukan oleh poligon tersebut. | TIDAK | string |
within | Jika elemen ini disuplai maka harus mengandung tiga sub-elemen, timur, utara, dan jarak. Elemen-elemen ini menentukan suatu area dan hanya item dengan UPRN di area tersebut yang dikembalikan. | TIDAK | WithinType |
sortField | Hal ini memungkinkan hasil diurutkan pada salah satu bidang dari kumpulan data. Nilai yang diberikan untuk ini harus berupa salah satu bidang dari kumpulan data. | TIDAK | string |
sortOrder | Diterapkan ke sortField | TIDAK | SortOrderType |
Tabel 2. Definisi AttributeType
Nilai | Jenis | Pilihan |
---|---|---|
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 |
Tabel 3. Definisi WithinType
Nilai | Jenis | Pilihan |
---|---|---|
easting | unsignedLong | 0 - 500000 |
northing | unsignedLong | 500000 - 1300000 |
distance | decimal |
Tabel 4. Definisi SortOrderType
Nilai | Jenis | Pilihan |
---|---|---|
asc | string | |
desc | string |
Tabel 5. Isi respons HTTP: Termasuk data yang dikembalikan dalam isi respons server.
Nilai | Keterangan | Pilihan |
---|---|---|
ResultCount | Jumlah item data yang ditemukan yang cocok dengan kueri | |
ReturnCount | Jumlah item data yang dikembalikan oleh layanan web (minimal ResultCount dan 250) | |
ErrorCode | Nol untuk sukses atau bukan nol untuk kegagalan (lihat nanti) | Lihat tabel "Kode kesalahan". |
ErrorMessage | Pesan yang menjelaskan kesalahan yang terjadi (lihat nanti) | Lihat tabel "Kode kesalahan". |
Result | Item data yang cocok dengan kueri. Format sebenarnya akan bergantung pada kumpulan data yang dikueri, namun format tersebut akan terdiri dari kumpulan elemen yang diberi nama sama dengan kumpulan data, setiap elemen berisi elemen untuk setiap bidang dalam kumpulan data (yang diberi nama sama dengan bidang tersebut). |
Tabel 6. Kode kesalahan respons HTTP: Mencakup semua kemungkinan kode kesalahan yang dikembalikan oleh server di isi respons
Layanan web dapat mengembalikan empat kemungkinan kode kesalahan sebagai berikut:
Kode | Penjelasan | Pesan |
---|---|---|
0 | Pengiriman berhasil ke layanan web | |
1 | Kesalahan dengan data yang diposting ke layanan web | Invalid Value - Schema validation error : <error msg> |
2 | Masalah terjadi saat pemrosesan permintaan (misalnya meminta kumpulan data yang tidak ada) | 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 | Kesalahan autentikasi/otorisasi | 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 |