Jump to content

API:Geosearch/fr

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.

Requête GET pour rechercher des articles wiki à proximité d'un lieu à l'aide de coordonnées géographiques ou d'un nom de page.

Ce module est pris en charge au travers de l'Extension:GeoData qui actuellement n'est pas installée dans MediaWiki mais dans Wikipedia. Donc, dans ce document, nous utiliserons l'URL $2 pour tous les points d'accès de l'API. So, in this document, we will use the URL en.wikipedia.org in all API endpoints.

Documentation de l'API

Voir ici, la documentation complète et la liste des paramètres pris en charge..

Exemple 1 : obtenir des coordonnées géographiques

Requête GET

Obtenir les coordonnées géographiques du siège de la Fondation Wikimedia en fournissant le titre de l'article :

Réponse

{
    "batchcomplete": "",
    "query": {
        "pages": {
            "18618509": {
                "pageid": 18618509,
                "ns": 0,
                "title": "Wikimedia Foundation",
                "coordinates": [
                    {
                        "lat": 37.7891838,
                        "lon": -122.4033522,
                        "primary": "",
                        "globe": "earth"
                    }
                ]
            }
        }
    }
}

Exemple de code

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 );
	}
} );

Exemple 2 : rechercher des articles à proximité

Requête GET

Rechercher les pages à côté du siège de la Fondation Wikimedia en fournissant les coordonnées géographiques de sa situation :

Réponse

Réponse
{
    "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": ""
            }
            ...
        ]
    }
}

Exemple de code

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 );
	}
} );

Exemple 3 : recherche d'articles du voisinage avec des images

Requête GET

Comme extension de l'exemple 2, nous utilisons ici le module générateur pour obtenir les résultats de la recherche pour les pages proches du siège de la Fondation Wikimedia comportant des images. Les paramètres passés avec un générateur doivent être préfixés avec un $3. Notez-bien que dans la requête ci-dessous, nous avons changé $4coord en $5coord. 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.

Réponse

Réponse
{
    "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"
            },
      }
}

Exemple de code

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 );
	}
} );

Applications de démonstration

  • Special:Nearby sur la Wikipedia anglophone affiche les articles concernant les lieux qui vous entourent
    Ecran de l'application iOS Wikipedia affichant les lieux autour du siège de la Fondation Wikimedia
  • Les applications pour mobile Wikipedia utilisent cette API pour afficher les lieux du voisinage. Vous pouvez voir l'utilisation de l'API dans le code source des applications Android et iOS
  • Nearby est une application pour la montre intelligente Pebble qui recherche les articles Wikipedia de votre voisinage.

Erreurs éventuelles

Code Informations
badcoord Coordonnées soumises non valides

Notes supplémentaires

  • Ce module est pris en charge par l'Extension:GeoData , actuellement installé sur Wikimedia Commons, sur toutes les Wikipedias, et tous les sites Wikivoyage, ainsi que quelques autres wikis. Vous pouvez utiliser $2 d'un wiki pour vérifier si l'extension y figure. You can use Special:Version of a wiki to check if the extension is listed there.
  • Outre le fait de passer par l'API pour demander les cordonnées d'une page (comme expliqué dans l'exemple 1), voici quelques autre manières de les obtenir :
    • Si vous voulez connaître la localisation actuelle de votre utilisateur, elle est disponible au travers de nombreuses API dépendant de votre système d'exploitation. Les navigateurs récents on un objet $1 activable. Voir les documents MDN. Recent browsers have an opt-in navigator.geolocation object. See MDN docs.
    • Si vous voulez que ce soit l'utilisateur qui rentre ses coordonnées lui-même, il existe des services variés qui lui pemettent de les indiquer à partir d'une carte. Voir Obtenir les coordonnées génographiques.

Voir aussi