API:Geosuche
| MediaWiki Action API |
|---|
| Grundlagen |
| Authentifizierung |
| Benutzerkonten und Benutzer |
| Seitenoperationen |
|
| Suche |
| Entwicklerwerkzeuge |
| Tutorials |
| v · d · e |
GET-Abfrage um nach Wikiseiten in der Nähe eines Ortes mit geografischen Koordinaten oder einem Seitennamen zu suchen.
en.wikipedia.org in all API endpoints.
API-Dokumentation
Sieh dir hier die vollständige Dokumentation und die Liste unterstützter Parameter an.
Beispiel 1: Koordinaten erhalten
GET-Abfrage
Erhalte Koordinaten des Hauptsitzes der Wikimedia Foundation durch Angabe des Artikeltitels:
Antwort
{ "batchcomplete":"", "query":{ "pages":{ "18618509":{ "pageid":18618509, "ns":0, "title":"Wikimedia Foundation", "coordinates":[ { "lat":37.7891838, "lon":-122.4033522, "primary":"", "globe":"earth" } ] } } } }
Beispielcode
Python
#!/usr/bin/python3 """ geocoordinates.py MediaWiki API Demos Demo of Geosearch module: Obtain coordinates for wiki pages nearby MIT License """ importrequests S = requests.Session() URL = "https://en.wikipedia.org/w/api.php" PARAMS = { "action": "query", "format": "json", "titles": "Wikimedia Foundation", "prop": "coordinates" } R = S.get(url=URL, params=PARAMS) DATA = R.json() PAGES = DATA['query']['pages'] for k, v in PAGES.items(): print("Latitute: " + str(v['coordinates'][0]['lat'])) print("Longitude: " + str(v['coordinates'][0]['lon']))
PHP
<?php /* geocoordinates.php MediaWiki API Demos Demo of `Geosearch` module: Obtain coordinates for wiki pages nearby MIT License */ $endPoint = "https://en.wikipedia.org/w/api.php"; $params = [ "action" => "query", "prop" => "coordinates", "titles" => "Wikimedia Foundation", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); foreach( $result["query"]["pages"] as $k => $v ) { echo("Latitute: " . $v["coordinates"][0]["lat"] . "\n" ); echo("Longitude: " . $v["coordinates"][0]["lon"] . "\n" ); }
JavaScript
/* geocoordinates.js MediaWiki API Demos Demo of `Geosearch` module: Obtain coordinates for wiki pages nearby MIT License */ varurl="https://en.wikipedia.org/w/api.php"; varparams={ action:"query", prop:"coordinates", titles:"Wikimedia Foundation", format:"json" }; url=url+"?origin=*"; Object.keys(params).forEach(function(key){url+="&"+key+"="+params[key];}); fetch(url) .then(function(response){returnresponse.json();}) .then(function(response){ varpages=response.query.pages; for(varpageinpages){ console.log("Latitute: "+pages[page].coordinates[0].lat); console.log("Longitude: "+pages[page].coordinates[0].lon); } }) .catch(function(error){console.log(error);});
MediaWiki JS
/* geocoordinates.js MediaWiki API Demos Demo of `Geosearch` module: Obtain coordinates for wiki pages nearby MIT License */ varparams={ action:'query', prop:'coordinates', titles:'Wikimedia Foundation', format:'json' }, api=newmw.Api(); api.get(params).done(function(data){ varpages=data.query.pages, page; for(pageinpages){ console.log('Latitute: '+pages[page].coordinates[0].lat); console.log('Longitude: '+pages[page].coordinates[0].lon); } });
Beispiel 2: Nach Seiten in der Nähe suchen
GET-Abfrage
Suche nach Seiten in der Nähe des Hauptsitzes der Wikimedia Foundation durch Angabe der geografischen Koordinaten des Ortes:
Antwort
| Antwort |
|---|
{ "batchcomplete":"", "query":{ "geosearch":[ { "pageid":18618509, "ns":0, "title":"Wikimedia Foundation", "lat":37.7891838, "lon":-122.4033522, "dist":0, "primary":"" }, { "pageid":42936625, "ns":0, "title":"Foxcroft Building", "lat":37.789166666667, "lon":-122.40333333333, "dist":2.5, "primary":"" } ... ] } } |
Beispielcode
| geosearch.py |
|---|
Python#!/usr/bin/python3 """ geosearch.py MediaWiki API Demos Demo of `Geosearch` module: Search for wiki pages nearby MIT License """ importrequests S = requests.Session() URL = "https://en.wikipedia.org/w/api.php" PARAMS = { "format": "json", "list": "geosearch", "gscoord": "37.7891838|-122.4033522", "gslimit": "10", "gsradius": "10000", "action": "query" } R = S.get(url=URL, params=PARAMS) DATA = R.json() PLACES = DATA['query']['geosearch'] for place in PLACES: print(place['title']) PHP<?php /* geosearch.php MediaWiki API Demos Demo of `Geosearch` module: Search for wiki pages nearby MIT License */ $endPoint = "https://en.wikipedia.org/w/api.php"; $params = [ "action" => "query", "list" => "geosearch", "gscoord" => "37.7891838|-122.4033522", "gsradius" => "10000", "gslimit" => "10", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); foreach( $result["query"]["geosearch"] as $place ){ echo( $place["title"] . "\n" ); } JavaScript/* geosearch.js MediaWiki API Demos Demo of `Geosearch` module: Search for wiki pages nearby MIT License */ varurl="https://en.wikipedia.org/w/api.php"; varparams={ action:"query", list:"geosearch", gscoord:"37.7891838|-122.4033522", gsradius:"10000", gslimit:"10", format:"json" }; url=url+"?origin=*"; Object.keys(params).forEach(function(key){url+="&"+key+"="+params[key];}); fetch(url) .then(function(response){returnresponse.json();}) .then(function(response){ varpages=response.query.geosearch; for(varplaceinpages){ console.log(pages[place].title); } }) .catch(function(error){console.log(error);}); MediaWiki JS/* geosearch.js MediaWiki API Demos Demo of `Geosearch` module: Search for wiki pages nearby MIT License */ varparams={ action:'query', list:'geosearch', gscoord:'37.7891838|-122.4033522', gsradius:'10000', gslimit:'10', format:'json' }, api=newmw.Api(); api.get(params).done(function(data){ varpages=data.query.geosearch, place; for(placeinpages){ console.log(pages[place].title); } }); |
Beispiel 3: Nach Seiten in der Nähe mit Bildern suchen
GET-Abfrage
Als Erweiterung des Beispiels 2 nutzen wir hier das Generator-Modul, um Suchergebnisse für Seiten in der Nähe des Hauptsitzes der Wikimedia Foundation mit Bildern zu erhalten. Parameter, die über einen Generator übergeben werden, müssen mit dem Präfix 3ドル versehen sein. Beachte, dass wir in der Abfrage unten die 4ドル-Koordinaten in 5ドル-Koordinaten geändert haben.
Parameters passed along with a generator must be prefixed with a g.
Note that in the query below, we've changed gs coord to ggs coord.
Antwort
| Antwort |
|---|
{ "batchcomplete":"", "query":{ "pages":{ "2608926":{ "pageid":2608926, "ns":0, "title":"San Francisco Mechanics' Institute", "index":0, "coordinates":[ { "lat":37.788844, "lon":-122.403042, "primary":"", "globe":"earth" } ], "thumbnail":{ "source":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/MechanicsInstituteSanFrancisco.jpg/32px-MechanicsInstituteSanFrancisco.jpg", "width":32, "height":50 }, "pageimage":"MechanicsInstituteSanFrancisco.jpg" }, } } |
Beispielcode
| geoimagesearch.py |
|---|
Python#!/usr/bin/python3 """ geoimagesearch.py MediaWiki API Demos Demo of `Geosearch` module: Use generator module to get search results for pages near Wikimedia HQ with images MIT License """ importrequests S = requests.Session() URL = "https://en.wikipedia.org/w/api.php" PARAMS = { "action": "query", "format": "json", "ggscoord": "37.7891838|-122.4033522", "generator": "geosearch", "prop": "coordinates|pageimages" } R = S.get(url=URL, params=PARAMS) DATA = R.json() PLACES = DATA['query']['pages'] for k, v in PLACES.items(): print(str(v['title']) + ": " + str(v['thumbnail']['source'])) PHP<?php /* geoimagesearch.php MediaWiki API Demos Demo of `Geosearch` module: Use generator module to get search results for pages near Wikimedia HQ with images MIT License */ $endPoint = "https://en.wikipedia.org/w/api.php"; $params = [ "action" => "query", "generator" => "geosearch", "prop" => "coordinates|pageimages", "ggscoord" => "37.7891838|-122.4033522", "format" => "json" ]; $url = $endPoint . "?" . http_build_query( $params ); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); $output = curl_exec( $ch ); curl_close( $ch ); $result = json_decode( $output, true ); foreach( $result["query"]["pages"] as $k => $v ) { echo( $v["title"] . ": " . $v["thumbnail"]["source"] . "\n" ); } JavaScript/* geoimagesearch.js MediaWiki API Demos Demo of `Geosearch` module: Use generator module to get search results for pages near Wikimedia HQ with images MIT License */ varurl="https://en.wikipedia.org/w/api.php"; varparams={ action:"query", generator:"geosearch", prop:"coordinates|pageimages", ggscoord:"37.7891838|-122.4033522", format:"json" }; url=url+"?origin=*"; Object.keys(params).forEach(function(key){url+="&"+key+"="+params[key];}); fetch(url) .then(function(response){returnresponse.json();}) .then(function(response){ varpages=response.query.pages; for(varpageinpages){ console.log(pages[page].title+": "+pages[page].thumbnail.source); } }) .catch(function(error){console.log(error);}); MediaWiki JS/* geoimagesearch.js MediaWiki API Demos Demo of `Geosearch` module: Use generator module to get search results for pages near Wikimedia HQ with images MIT License */ varparams={ action:'query', generator:'geosearch', prop:'coordinates|pageimages', ggscoord:'37.7891838|-122.4033522', format:'json' }, api=newmw.Api(); api.get(params).done(function(data){ varpages=data.query.pages, page; for(pageinpages){ console.log(pages[page].title+': '+pages[page].thumbnail.source); } }); |
Demo-App(s)
- Special:Nearby auf der englischsprachigen Wikipedia zeigt Artikel über Orte in deiner Nähe
Bildschirmfoto der Wikipedia-iOS-App - zeigt Orte in der Nähe des Hauptsitzes der Wikimedia Foundation - Wikipedia-Apps nutzen diese API, um nahegelegene Orte zu zeigen. Die API-Nutzung ist im Quellcode der Android- und iOS-App zu sehen
- Nearby ist eine App für die Pebble-Smartwatch, die Wikipedia-Artikel in deiner Nähe anzeigt.
Mögliche Fehler
| Code | Information |
|---|---|
| badcoord | Ungültige Koordinaten angegeben |
Zusätzliche Anmerkungen
- Dieses Modul wird durch die Erweiterung:GeoData unterstützt, die derzeit auf Wikimedia Commons, allen Wikipedias, allen Wikivoyage-Seiten und einigen anderen Wikis installiert ist. Du kannst in einem Wiki 2ドル nutzen, um zu prüfen, ob die Erweiterung dort aufgeführt ist. You can use Special:Version of a wiki to check if the extension is listed there.
- Zusätzlich zur Nutzung der API, um die Seiten-Koordinaten zu erhalten (wie in Beispiel 1 erklärt), sind hier einige weitere Möglichkeiten, um diese zu erhalten:
- Wenn du den derzeitigen Aufenthaltsort eines Benutzers erhalten möchtest, ist dieser über viele OS-spezifische APIs erhältlich. Aktuelle Browser haben als Opt-In ein 1ドル-Objekt. Siehe MDN-Dokumentation. Recent browsers have an opt-in
navigator.geolocationobject. See MDN docs. - Wenn du den Benutzer Koordinaten angeben lassen möchtest, gibt es einige Dienste, die den Benutzer diese auf einer Karte auswählen lassen. Siehe w:Wikipedia:Obtaining geographic coordinates.
- Wenn du den derzeitigen Aufenthaltsort eines Benutzers erhalten möchtest, ist dieser über viele OS-spezifische APIs erhältlich. Aktuelle Browser haben als Opt-In ein 1ドル-Objekt. Siehe MDN-Dokumentation. Recent browsers have an opt-in