Question

Existe-t-il un moyen de répertorier par programme toutes les entrées Wikipedia géolocalisées dans un rayon d'un point long / lat? Je pense que cela est possible avec l'API Google Maps, mais je m'intéresse à n'importe quelle méthode. REMARQUE: je ne souhaite pas afficher de plan googlemap.

Était-ce utile?

La solution

Oui, c'est possible. La partie difficile est soit:

(1) Grattage d'écran Wikipedia (mauvaise idée, sauf si vous avez déjà une (petite) liste de pages cibles)

(2) Téléchargement et analyse des ensembles de données Wikipedia (meilleure idée)

Une fois que vous avez les coordonnées lat / long, qui, je suppose, sont au format de géolocalisation de la page wiki, vous pouvez utiliser le formule du grand cercle pour calculer les distances relatives et contourner entièrement l'API de Google.

La morale de cette histoire? Lorsque vous aurez affaire à des ensembles de données aussi volumineux, vous voudrez en faire le plus possible hors ligne.

Autres conseils

J'ai résolu un problème légèrement similaire en utilisant les services Web de GeoNames . .

Vous pouvez utiliser le service Web pour demander des villes, etc. Vous ne pouvez pas dépasser une limite par adresse IP.

J'ai cherché un peu plus loin et il y a quelque chose d'intéressant pour vous. Le service Web s'appelle findNearByWikipedia . C'est peut-être la chose que vous recherchez ...

Une autre option consiste à utiliser l'interface DbPedia SPARQL. Par exemple, la requête SPARQL suivante permet d’obtenir des articles wikipedia au sein d’un cadre de sélection limité par des coordonnées.

Bibliothèques SPARQL largement disponibles, par exemple pour interface de point de terminaison SPARQL vers Python

Pour le tester, collez simplement la requête ci-dessous dans cet éditeur de requêtes en ligne:

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

Obtient le résultat suivant:

"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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top