문제

긴/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 인터페이스

테스트하려면 아래 쿼리를이 온라인 쿼리 편집기에 붙여 넣습니다.

http://dbpedia.org/sparql

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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top