2016-02-12 13 views
5

Generell möchte ich die Links (und Titel) aller Wikipedia-Artikel mit Koordinaten in London erhalten. Ich habe versucht, Google zu verwenden, bin aber leider nicht mit den richtigen Suchbegriffen gekommen. Irgendwelche Hinweise?Alle Wikipedia-Artikel mit Koordinaten innerhalb von London erhalten

London map

+0

Es gibt keine MediaWiki-API, mit der Sie in einer Form suchen können. Du musst alle geocodierten Artikel holen und dann überprüfen, welche Koordinaten in deinem Feature sind. – leo

Antwort

3

Das ist wirklich nur eine Sammlung von Ideen, die zu groß für einen Kommentar war.

Ihre beste Wette ist wahrscheinlich DBpedia. Es ist ein semantischer Spiegel von Wikipedia, mit viel ausgeklügelteren Abfragemöglichkeiten als Wikipedia's API. Wie Sie in this paper sehen können, kann es ziemlich komplexe räumliche Abfragen behandeln, aber Sie müssen in SPARQL gelangen. Hier ist eine Figur aus diesem Papier:

Example SPARQL query

Das heißt, Wikipedias API ein relativ neues Feature für räumliche Abfragen hat: Showing nearby wiki information. Ich glaube nicht, dass man in einem Polygon suchen kann, aber es ist ein guter Anfang.

Hier ist eine vorherige Antwort, die ich über die Verwendung mwclient geschrieben habe, um die Koordinaten von Artikeln zu erhalten, aber dieser Benutzer hatte den Vorteil, eine Liste von Artikeln zu haben, die zu kratzen waren.

Geonames.org kann möglicherweise helfen, die Suche auf geolocated Artikel einzugrenzen. Es wäre nicht schade, die 806.000 geolokalisierten Artikel in englischer Wikipedia zu überprüfen.

Aus Leistungsgründen und um Ärger mit den Servern von Wikipedia zu vermeiden, könnten Sie in Erwägung ziehen, von einem Speicherauszug Wikipedia oder DBpedia zu arbeiten.

2

Sieht aus wie eine Aufgabe für OpenStreetMap und Overpass API.

Für unsere Abfrage bauen wir auf overpass turbo (ein schönes Frontend für Überführung API) gehen, öffnen Sie den Assistenten und „wikipedia = * in London“ geben, weil wir in der wikipedia tag interessiert sind.

Die automatisch generierte und ausgeführte Abfrage wird diese sein.

[out:json][timeout:25]; 
// fetch area “London” to search in 
{{geocodeArea:London}}->.searchArea; 
// gather results 
(
    // query part for: “wikipedia=*” 
    node["wikipedia"](area.searchArea); 
    way["wikipedia"](area.searchArea); 
    relation["wikipedia"](area.searchArea); 
); 
// print results 
out body; 
>; 
out skel qt; 

Dies wird zu viele Elemente zurückgeben und Ihren Browser stark belasten. Und könnte aufgrund der zu geringen Zeitüberschreitung fehlschlagen.

Wir modifizieren es leicht. Wir erhöhen die Timeout und wir entfernen den Rekursionsschritt (>;), weil wir nur an den direkten Ergebnissen und nicht an verwandten Objekten interessiert sind. Die resultierende Abfrage wird diese:

[out:json][timeout:90]; 
// fetch area “London” to search in 
{{geocodeArea:London}}->.searchArea; 
// gather results 
(
    // query part for: “wikipedia=*” 
    node["wikipedia"](area.searchArea); 
    way["wikipedia"](area.searchArea); 
    relation["wikipedia"](area.searchArea); 
); 
// print results 
out body; 
out skel qt; 

Sie die result here anzeigen können.

Jetzt gibt es verschiedene Optionen, um es zu exportieren. Bei Überführungsturbo können Sie exportieren exportieren und entweder die Ergebnisse direkt in eine Datei sichern oder die rohe Abfrage abrufen, die an die Überbrückungs-API gesendet wird. Sie können diese Abfrage jetzt direkt aus Ihrem Python-Skript ausführen.

Beachten Sie, dass verschiedene output formats verfügbar sind: JSON, XML und CVS.Und neben dem wikipedia-Tag könnten Sie auch an der wikidata tag interessiert sein.

Beachten Sie auch, dass dies Sie nicht alle Wikipediaseiten mit Koordinaten in London, nur die, die in der OSM-Datenbank enthalten sind.

+1

Okay, im Allgemeinen bist du großartig und liebenswert. Das Problem ist, dass die Ergebnisse ein Witz sind. OpenStreetMap ist fantastisch, aber wenn es um dieses Tag geht, ist die Qualität wirklich niedrig. – marcus

+0

Ich habe nicht die Abdeckung des wikipedia-Tags verglichen, aber ich denke, Sie haben recht:/ – scai

+1

die gute Sache ist - die Qualität hat sich im letzten Jahr stark verbessert, und jetzt gibt es Tools, um sowohl Wikidata und Osm auf einmal abfragen - https://wiki.openstreetmap.org/wiki/Wikidata%2BOSM_SPARQL_query_service – Yurik