Jump to content

Extension:GeoData

From mediawiki.org
This page is a translated version of the page Extension:GeoData and the translation is 100% complete.
Manuel des extensions MediaWiki
GeoData
État de la version : stable
Implémentation API , Fonction d'analyseur
Description Ajoute les fonctionnalités de stockage et de récupération des coordonnées géographiques.
Auteur(s) Max Semenik (MaxSemdiscussion)
Politique de compatibilité Versions ponctuelles alignées avec MediaWiki. Le master n'est pas compatible arrière.
MediaWiki 1.25+
Modifie la base
de données
Oui
Tables geo_tags
Licence WTFPL v2.0
Téléchargement
  • $wgGlobes
  • $wgMaxCoordinatesPerPage
  • $wgGeoDataIndexGranularity
  • $wgMaxGeoSearchRadius
  • $wgGeoDataRadiusScoreOverrides
  • $wgDefaultDim
  • $wgGeoDataWarningLevel
  • $wgGeoDataInJS
  • $wgGeoDataUseCirrusSearch
  • $wgTypeToDim
  • $wgGeoDataDebug
  • $wgGeoDataBackend
Téléchargements trimestriels 51 (Ranked 85th)
Traduire l’extension GeoData sur translatewiki.net si elle y est disponible
Problèmes Tâches ouvertes · Signaler un bogue

L’extension GeoData permet aux articles de fournir leurs coordonnées géographiques et de les publier via l’API HTTP.

Installation

Moteurs de recherche

D'abord il faut décider du moteur à utiliser pour la recherche :

  • MySQL (par défaut) : est adapté pour les installations de petites et moyennes dimensions. Ne nécessite pas de configuration. Il n’utilise pas les index spatiaux intégrés de MySQL parce que quand l’extension a été développée, SPATIAL n’était pris en charge que par le moteur de stockage MyISAM, qui est pire que rien du tout. Au lieu de cela, il utilise des tuiles de 0,1 × 0,1 degrés pour les recherches, ce qui produit des entrées/sorties un peu plus élevées, mais des mises à jour plus rapides.
  • ElasticSearch est un moteur de recherche puissant. Lors de l’utilisation d’ElasticSearch en tant que moteur, GeoData fonctionne comme un greffon pour CirrusSearch qui ajoute la recherche de texte ES au wiki.

Processus

  • Téléchargez et placez le(s) fichier(s) dans un répertoire appelé GeoData dans votre dossier extensions/.
    Les développeurs et les contributeurs au code doivent à la place installer l'extension à partir de Git en utilisant:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/GeoData
  • Ajoutez le code suivant à la fin de votre fichier LocalSettings.php  :
    wfLoadExtension( 'GeoData' );
    
  • Exécutez le script de mise à jour qui va créer automatiquement les tables de base de données dont cette extension a besoin.
  • If you're about to use GeoData with ElasticSearch, install CirrusSearch then add
    $wgGeoDataBackend = 'elastic';
    
    to LocalSettings.php, below the GeoData loading.
  • Yes Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.

Utilisation

This extension adds a new parser function , {{#coordinates:}}, that saves coordinates to the database. Function's input format is made as compatible as possible with GeoHack.

Glossaire

  • Coordinates - see w:geographical coordinates
  • Globe - terrestrial body on which the coordinate resides. By default, Earth is assumed. Internally, globe is represented as lowercase strings. The following globes are supported: earth, mercury, venus, moon, mars, phobos, deimos, ganymede, callisto, io, europa, mimas, enceladus, tethys, dione, rhea, titan, hyperion, iapetus, phoebe, miranda, ariel, umbriel, titania, oberon, triton and pluto. Globes not mentioned in this list will be assumed to have generic characteristics: longitude range 0-360°, Eastern longitude is positive. Longitude sign for known globes is taken according to IAU's conventions.
  • dim - approximate size of an object. Used by GeoData to restrict search and by GeoHack for determining appropriate map zoom. The default unit of measurement is metres, although the km suffix may be appended to indicate kilometres.
  • Primary vs. secondary coordinates: primary coordinates define article subject's location, while secondary coordinates are other coordinates mentioned in the article. There can be only one primary coordinate per article, but as many secondaries as you like barring technical restrictions.

Fonctions d'analyse

Function format:

{{#coordinates:latitude|longitude|[primary|][GeoHack parameters|][extra parameters]}}
Empty parameters (e.g. || or | |) are always ignored.
  • latitude and longitude can be specified in several formats:
    • Direct signed input in degrees, e.g. 37.786971|-122.399677, which corresponds to 37° 47′ 13.1″ N, 122° 23′ 58.84″ W.
      As formatted number in the content language. Use {{formatnum:}}, to format a number of a expression.
    • Degrees/minutes or degrees/minutes/seconds, e.g. 37|47.2183|-122|23.9807 or 37|47|13.1|-122|23|58.84.
    • Either of the above, but with sign specified by N/E/S/W letters:
      37.786971|N|122.399677|W
      37|47.2183|N|122|23.9807|W
      37|47|13.1|N|-122|23|58.84|W
You should use either negative sign or N/E/S/W, but not both
  • primary keyword specifies that these coordinates are primary (see #Glossary).
  • Extra parameters are any combination of the following named parameters:
    • dim: approximate size of the object.
    • scale: Scale of map display for this object, e.g. scale of 300 is 1:300. Gets converted into dim internally using formula dim = scale / 10. If both scale and dim are set, dim has precedence.
    • globe, see #Glossary.
    • name: name of this point, up to 255 bytes (UTF-8).
    • region: ISO 3166-1 alpha-2 country code (e.g. US or RU) or an ISO 3166-2 region code (e.g. US-FL or RU-MOS). This parameter is always capitalised internally.
    • type: type of object with these coordinates, can be one of the following: country, satellite, state, adm1st, adm2nd, adm3rd, city, isle, mountain, river, waterbody, event, forest, glacier, airport, railwaystation, edu, pass, camera, landmark.
type Description Dim
country (e.g. "type:country") 1,000,000
satellite geo-stationary satellites 1,000,000
adm1st Administrative unit of country, 1st level (province, state), e.g. U.S. states 1,000,000
adm2nd Administrative unit of country, 2nd level, e.g. US county 30,000
adm3rd Administrative unit of country, 3rd level 10,000
city(pop) cities, towns, villages, hamlets, suburbs, subdivisions, neighborhoods, and other human settlements (including unincorporated and/or abandoned ones) with known population
(optional population in braces is ignored)
10,000
airport airports and airbases 3,000
mountain peaks, mountain ranges, hills, submerged reefs, and seamounts 10,000
isle islands and isles 10,000
waterbody bays, fjords, lakes, reservoirs, ponds, lochs, loughs, meres, lagoons, estuaries, inland seas, and waterfalls 10,000
forest forests and woodlands 5,000
river rivers, canals, creeks, brooks, and streams, including intermittent ones 10,000
glacier glaciers and icecaps 5,000
event one-time or regular events and incidents that occurred at a specific location, including battles, earthquakes, festivals, and shipwrecks 5,000
edu schools, colleges, and universities 1,000
pass mountain passes 1,000
railwaystation stations, stops, and maintenance areas of railways and trains, including railroad, metro, rapid transit, underground, subway, elevated railway, etc. 1,000
landmark buildings (including churches, factories, museums, theatres, and power plants but excluding schools and railway stations), caves, cemeteries, cultural landmarks, geologic faults, headlands, intersections, mines, ranches, roads, structures (including antennas, bridges, castles, dams, lighthouses, monuments, and stadiums), tourist attractions, valleys, and other points of interest 1,000
Default dim: if no type is used or the type is unknown to this extension 1,000
  • GeoHack parameters: one or more pairs in format parameter:value, delimited by underscores (_) or spaces (e.g. dim:1000_type:city). No spaces are allowed between parameter and colon or between colon and value. The parameters are the same as extra parameters above. If a parameter exists in both GeoHack parameters and extra parameters, extra parameters always have precedence. This input is needed only for compatibility with preexisting {{coord}} templates - if your wiki is only designing a geographical coordinates template, it is best if you not used raw GeoHack parameters at all.

Exemples

Note how extra parameters are specified:

{{#coordinates:primary|40.775114|-73.968802|type:landmark_region:US-NY|name=Loeb Central Park Boathouse}}

Inclusion dans les modèles

Conditions d’erreur

GeoData checks the data it receives for a number of error conditions.

The following conditions result in coordinates being outright rejected and added to tracking category (the name of it is defined by MediaWiki:Geodata-broken-tags-category):

  • Coordinates out of range:
{{#coordinates:56|04|N|190|00|E}}
{{#coordinates:76|61|03|N|37|25|30|W}} 
  • Mixing coordinate signs and hemisphere letters:
{{#coordinates:primary|-26|04|N|178|46|E}}
{{#coordinates:primary|26.16|N|-178.76|E}} 
  • More than one primary coordinate on page:
{{#coordinates:primary|26|04|N|178|46|E}}{{#coordinates:primary|26|04|N|178|46|E}}
  • Too many coordinates on page: by default 500, 2000 on WMF.

The following errors are non-fatal by default:

  • Unrecognised coordinate type:
{{#coordinates:primary|26|04|N|178|46|E|type=New York}}
{{#coordinates:primary|26|04|N|178|46|E|type:village}}

API

GeoData has two API modules that perform search around a given point and coordinates for a given article(s).

list=geosearch

Searches for articles around the given point (determined either by coordinates, bounding box, or by article name).

Parameters:

gscoord
Coordinate around which to search: two floating-point values separated by pipe (|)
gsradius
Search radius in meters (10-10000). This parameter is required with the use of gscoord.
gsbbox
Bounding box to search in: pipe (|) separated coordinates of the corners in top|left|bottom|right order.
gspage
Title of page around which to search
gsmaxdim
Restrict search to objects no larger than this, in meters
gslimit
Maximum number of pages to return. No more than 500 (5000 for bots) allowed. Default: 10.
gsglobe
Globe to search on (by default earth).
gsnamespace
Namespace(s) to search. Default: main namespace.
gsprop
What additional coordinate properties to return. Values (separate with '|'): type, name, country, region.
gsprimary
Whether to return only primary coordinates (primary), secondary (secondary) or both (all). Default: primary.

Example:

{
    "batchcomplete": "",
    "query": {
        "geosearch": [
            {
                "pageid": 9292891,
                "ns": 0,
                "title": "140 New Montgomery",
                "lat": 37.7868194444444,
                "lon": -122.399905555556,
                "dist": 26.2,
                "primary": ""
            },
            {
                "pageid": 40377676,
                "ns": 0,
                "title": "New Montgomery Street",
                "lat": 37.78729,
                "lon": -122.40033,
                "dist": 67.5,
                "primary": ""
            },
            {
                "pageid": 1544800,
                "ns": 0,
                "title": "Cartoon Art Museum",
                "lat": 37.787088,
                "lon": -122.40094,
                "dist": 111.7,
                "primary": ""
            },
            {
                "pageid": 2183989,
                "ns": 0,
                "title": "Academy of Art University",
                "lat": 37.78785,
                "lon": -122.40065,
                "dist": 129.9,
                "primary": ""
            },
            {
                "pageid": 24801569,
                "ns": 0,
                "title": "SPUR (San Francisco organization)",
                "lat": 37.78716,
                "lon": -122.4012,
                "dist": 135.5,
                "primary": ""
            },
            {
                "pageid": 9297181,
                "ns": 0,
                "title": "101 Second Street",
                "lat": 37.788139,
                "lon": -122.399056,
                "dist": 140.9,
                "primary": ""
            },
            {
                "pageid": 40413203,
                "ns": 0,
                "title": "222 Second Street",
                "lat": 37.78635,
                "lon": -122.39825,
                "dist": 143.2,
                "primary": ""
            },
            {
                "pageid": 20004112,
                "ns": 0,
                "title": "The Montgomery (San Francisco)",
                "lat": 37.78762,
                "lon": -122.40112,
                "dist": 145.9,
                "primary": ""
            },
            {
                "pageid": 18679821,
                "ns": 0,
                "title": "California Historical Society",
                "lat": 37.78684444444444,
                "lon": -122.40148055555557,
                "dist": 159.1,
                "primary": ""
            },
            {
                "pageid": 71882190,
                "ns": 0,
                "title": "St. Regis Museum Tower",
                "lat": 37.7863,
                "lon": -122.4013,
                "dist": 161,
                "primary": ""
            }
        ]
    }
}

prop=coordinates

Returns coordinates of the given page(s)

Parameters:

colimit
How many coordinates to return.
cocontinue
When more results are available, use this to continue.
coprop
What additional coordinate properties to return. Values (separate with '|'): type, name, dim, country, region.
coprimary
Whether to return only primary coordinates (primary), secondary (secondary) or both (all). Default: primary.

Examples:

{
    "batchcomplete": "",
    "query": {
        "pages": {
            "18618509": {
                "pageid": 18618509,
                "ns": 0,
                "title": "Wikimedia Foundation",
                "coordinates": [
                    {
                        "lat": 37.78916667,
                        "lon": -122.40333333,
                        "primary": "",
                        "globe": "earth"
                    }
                ]
            }
        }
    }
}
{
    "batchcomplete": "",
    "query": {
        "pages": {
            "18618509": {
                "pageid": 18618509,
                "ns": 0,
                "title": "Wikimedia Foundation",
                "coordinates": [
                    {
                        "lat": 37.78916667,
                        "lon": -122.40333333,
                        "primary": "",
                        "type": "landmark",
                        "dim": "1000"
                    }
                ]
            }
        }
    }
}


Enumérer les pages avec ou sans les coordonnées

This functionality is not enabled on Wikimedia sites yet

GeoData extends two core API modules, list=allpages and list=categorymembers . The extended modules are called geopages and geopagesincategory. It adds two mutually exclusive parameters, withcoordinates and withoutcoordinates.

Configuration

Paramètres Type Valeur par défaut Action
$wgMaxGeoSearchRadius int 10000 Maximum radius for geospatial searches, in meters. Reducing this value reduces server load
$wgMaxCoordinatesPerPage int 500 Maximum number of coordinates per page, -1 means no limit
$wgTypeToDim array Long array, see the sources Conversion table type --> dim
$wgDefaultDim array 1000 Default value of dim if it is unknown
$wgGlobes array Long array, see the sources Defines parameters of every globe
$wgGeoDataWarningLevel array
array(
	'unknown type' => 'none',
	'unknown globe' => 'none',
	'invalid region' => 'none',
)
Controls what GeoData should do when it encounters some problem. Reaction type:
  • warn - Add tracking category
  • fail - Consider the tag invalid, display message and add tracking category
  • none - Do nothing
$wgGeoDataIndexGranularity int 10 How many integer units per degree to use with database-only search. Influences performance. Run updateIndexGranularity.php after changing this setting.
$wgGeoDataBackend string 'db' Which backend should be used by spatial searches: 'db' or 'elastic'. Note if you're planning to change it, do so before creating the database tables.