Jump to content
MediaWiki

API:Geosuche

From mediawiki.org
This page is a translated version of the page API:Geosearch and the translation is 76% complete.
Outdated translations are marked like this.
Diese Seite ist Teil der Dokumentation der MediaWiki action API.
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.

Dieses Modul wird durch die Erweiterung:GeoData unterstützt, die derzeit nicht auf MediaWiki installiert ist, aber auf Wikipedia. Daher nutzen wir in diesem Dokument die URL 2ドル bei allen API-Endpunkten. So, in this document, we will use the URL 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.geolocation object. 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.

Siehe auch

AltStyle によって変換されたページ (->オリジナル) /