이 저장소에는 다음 두 가지가 포함됩니다.
(A) OSG(One Scotland Gazetteer) 웹 서비스 및 FTP 다운로드를 테스트하기 위한 Python 3.x 코드, 예제 및 스크립트.
(B) OSG 웹 서비스 및 FTP에 대한 일반 문서.
(A) 운영 체제(OS)에 Python 3.x가 설치되어 있습니다.
(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(Scottish Data Transfer Format) 형식의 CSV 파일로 제공될 수 있습니다. 내보내기는 미리 결정된 빈도로 실행되도록 예약됩니다. 귀하의 요구 사항에 맞게 데이터의 하위 집합이 제공될 수도 있습니다.
자세한 내용은 One Scotland Gazetteer 웹사이트를 참조하세요.
OSG 웹 서비스는 실제 데이터를 포함하는 필드를 포함하는 데이터 세트를 중심으로 구성됩니다. 각 웹 서비스 데이터 세트는 다양한 필드 및 데이터를 반환하며 다양한 기능을 지원할 수도 있습니다. OSG에는 쿼리에 사용할 수 있는 데이터 세트를 반환하는 sendNGListDataSetsMessage
(이후 list )와 해당 데이터 세트에 대한 쿼리를 수행할 수 있는 sendNGSearchMessage
(이후 search )라는 두 가지 웹 서비스가 있습니다. OSG 웹 서비스에서 반환되는 최대 레코드 수는 250개를 초과할 수 없습니다. OSG 서비스 설명은 각각 REST 및 SOAP에서 찾을 수 있습니다.
인증: 모든 OSG 웹 서비스에는 username
과 password
사용한 인증이 필요합니다. 웹 서비스로 전송되는 모든 요청에 대해 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 웹 서비스로 인증한다고 해서 사용 가능한 모든 OSG 데이터 세트에 액세스할 수 있다는 의미는 아닙니다. 데이터 세트에 대한 액세스는 OSG 관리인이 관리하며, 추가 데이터 세트에 대한 액세스가 필요한 경우 사용자는 One Scotland Gazetteer 웹 사이트를 방문하여 요청해야 합니다. 예를 들어 성공적으로 인증된 사용자는 EST_STANDARD_SEARCH
데이터세트가 아닌 ADDRESS_SEARCH
데이터세트를 통해서만 검색 웹 서비스( sendNGSearchMessage
)에 액세스할 수 있는 권한이 부여될 수 있습니다.
데이터 세트: 목록 웹 서비스는 사용 가능한 모든 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 데이터 쿼리에는 검색 웹 서비스와 필드 또는/및 형상 사용이 포함됩니다. 검색 웹 서비스는 다음 입력을 받을 수 있습니다.
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. 웹 서비스에 게시된 쿼리 내에 포함될 수 있는 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 in contains between 에 포함 not in not equal to |
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 | 성공의 경우 0, 실패의 경우 0이 아님(나중에 참조) | "오류 코드" 표를 참조하세요. |
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 |