API:Geosuche
Diese Seite ist Teil der Dokumentation der MediaWiki action API. |
GET-Abfrage um nach Wikiseiten in der NĂ€he eines Ortes mit geografischen Koordinaten oder einem Seitennamen zu suchen.
en.wikipedia.org
bei allen API-Endpunkten.
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
"""
import requests
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
*/
var url = "https://en.wikipedia.org/w/api.php";
var params = {
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){return response.json();})
.then(function(response) {
var pages = response.query.pages;
for (var page in pages) {
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
*/
var params = {
action: 'query',
prop: 'coordinates',
titles: 'Wikimedia Foundation',
format: 'json'
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
var pages = data.query.pages,
page;
for ( page in pages ) {
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
"""
import requests
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
*/
var url = "https://en.wikipedia.org/w/api.php";
var params = {
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){return response.json();})
.then(function(response) {
var pages = response.query.geosearch;
for (var place in pages) {
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
*/
var params = {
action: 'query',
list: 'geosearch',
gscoord: '37.7891838|-122.4033522',
gsradius: '10000',
gslimit: '10',
format: 'json'
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
var pages = data.query.geosearch,
place;
for ( place in pages ) {
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 g
versehen sein. Beachte, dass wir in der Abfrage unten die gs
-Koordinaten in ggs
-Koordinaten geÀndert haben.
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
"""
import requests
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
*/
var url = "https://en.wikipedia.org/w/api.php";
var params = {
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){return response.json();})
.then(function(response) {
var pages = response.query.pages;
for (var page in pages) {
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
*/
var params = {
action: 'query',
generator: 'geosearch',
prop: 'coordinates|pageimages',
ggscoord: '37.7891838|-122.4033522',
format: 'json'
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
var pages = data.query.pages,
page;
for ( page in pages ) {
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
- 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 Special:Version nutzen, um zu prĂŒfen, ob die Erweiterung dort aufgefĂŒhrt ist.
- 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
navigator.geolocation
-Objekt. Siehe MDN-Dokumentation. - 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