Google은 Wikipedia 레이어를지도합니다
-
03-07-2019 - |
문제
긴/LAT 포인트의 반경 내에 모든 Geo-Tagged Wikipedia 항목을 프로그래밍 방식으로 나열하는 방법이 있습니까? Google Maps API에서는 이것이 가능하다고 생각하지만 모든 방법에 관심이 있습니다. 참고 : Googlemap을 표시하고 싶지 않습니다.
해결책
예, 가능합니다. 어려운 부분은 다음 중 하나입니다.
(1) 화면 스크래핑 위키 백과 (이미 대상 페이지의 작은 목록이없는 한 나쁜 아이디어)
(2) 거대한 다운로드 및 파싱 Wikipedia 데이터 세트 (더 나은 아이디어)
위기/긴 좌표가 있으면 Wiki Page의 Geotag 형식에 있다고 가정하면 훌륭한 원 공식 상대 거리를 계산하고 Google의 API를 완전히 우회합니다.
이 이야기의 도덕? 이 거대한 데이터 세트를 다룰 때 가능한 한 오프라인으로 많은 일을하고 싶을 것입니다.
다른 팁
사용하여 약간 유사한 문제를 해결했습니다 geonames webservices.
웹 서비스를 사용하여 도시 등을 요청할 수 있습니다. 당신이 초과하지 않을 수있는 IP- 제한이 있습니다.
나는 조금 더 검색했고 당신에게 흥미로운 것이 있습니다. 웹 서비스가 호출됩니다 findNearByWikipedia
. 당신이 찾고있는 것일 수 있습니다 ...
또 다른 옵션은 dbpedia sparql 인터페이스를 사용하는 것입니다. 예를 들어, 다음 SPARQL 쿼리는 좌표로 제한된 Bounding Box 내에서 Wikipedia 기사를 가져옵니다.
예를 들어 SPARQL 라이브러리를 광범위하게 사용할 수 있습니다 Python에 대한 SPARQL Endpoint 인터페이스
테스트하려면 아래 쿼리를이 온라인 쿼리 편집기에 붙여 넣습니다.
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX onto: <http://dbpedia.org/ontology/>
SELECT * WHERE {
?s a onto:Place .
?s geo:lat ?lat .
?s geo:long ?long .
FILTER ( ?long > 30.3 && ?long < 30.5 && ?lat > 50.4 && ?lat < 50.5)
}
LIMIT 100
다음 결과를 얻습니다.
"s","lat","long"
"http://dbpedia.org/resource/Kotsiubynske","50.48972320556641","30.32888793945312"
"http://dbpedia.org/resource/Akademmistechko_%28Kiev_Metro%29","50.46555709838867","30.35499954223633"
"http://dbpedia.org/resource/Zhytomyrska_%28Kiev_Metro%29","50.45583343505859","30.36416625976562"
"http://dbpedia.org/resource/Sviatoshyn_Airfield","50.47833251953125","30.38500022888184"