Extension:GeoData(地理数据)
发行状态: 稳定版 |
|
|---|---|
| 实现 | API, 解析器函数 |
| 描述 | |
| 作者 | Max Semenik (MaxSem留言) |
| 兼容性政策 | 快照跟随MediaWiki发布。 master分支不向后兼容。 |
| MediaWiki | 1.25+ |
| 数据库更改 | 是 |
| 表 | geo_tags |
| 许可协议 | WTFPL 2.0 |
| 下載 | |
|
|
| 前往translatewiki.net翻譯GeoData扩展 | |
| 問題 | 开启的任务 · 报告错误 |
GeoData扩展允许條目指定其地理坐标,并通过HTTP API发佈这些坐标。
安裝
搜索后端
首先,决定使用哪个搜索后端:
- MySQL(默认):适合中小型安装。 无需任何配置。 它不使用 MySQL 内置的空间索引,因为在开发该扩展时,SPATIAL 仅受 MyISAM 存储引擎的支持,这比什么都不支持还要糟糕。 取而代之的是,它使用0.1x0.1度的磁贴进行搜索,这导致I/O稍高,但更新速度更快。
- ElasticSearch是一个强大的搜索引擎。 在使用ElasticSearch作为后端时,GeoData可作为CirrusSearch的插件,为维基添加ES文本搜索。
流程
- 下载文件,并解压
GeoData文件夹到extensions/目录中。
开发者和代码贡献人员应改从Git安装此扩展,输入:cd extensions/ git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/GeoData
- 請新增下列代码到您的LocalSettings.php文件的底部:
wfLoadExtension( 'GeoData' );
- 請运行更新脚本,它将自动创建此扩展所必须的数据库表。
- If you're about to use GeoData with ElasticSearch, install CirrusSearch then add to LocalSettings.php, below the GeoData loading.
$wgGeoDataBackend = 'elastic';
完成 – 請导航至您的wiki上的Special:Version,以验证此扩展已成功安装。
用法
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.
詞彙表
- 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,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
kmsuffix 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.
解析器函数
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.
- As formatted number in the content language. Use
- Degrees/minutes or degrees/minutes/seconds, e.g.
37|47.2183|-122|23.9807or37|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|W37|47.2183|N|122|23.9807|W37|47|13.1|N|-122|23|58.84|W
- Direct signed input in degrees, e.g.
- 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.
| 类型 | 描述 | 尺寸 |
|---|---|---|
| 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.
示例
Note how extra parameters are specified:
{{#coordinates:primary|40.775114|-73.968802|type:landmark_region:US-NY|name=Loeb Central Park Boathouse}}
在模板中嵌入
出错条件
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:
| Name | Description | Default |
|---|---|---|
| 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 | 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. | 10 |
| gsglobe | Globe to search on. | earth
|
| gsnamespace | Namespace(s) to search. | 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).
|
primary
|
Example:
- Search around the point with coordinates 37° 47′ 13.1″ N, 122° 23′ 58.84″ W:
| 扩展內容 |
|---|
{
"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:
| Name | Description | Default |
|---|---|---|
| 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).
|
primary
|
Examples:
- Get a list of coordinates of the Wikimedia Foundation article:
| 扩展內容 |
|---|
{
"batchcomplete": "",
"query": {
"pages": {
"18618509": {
"pageid": 18618509,
"ns": 0,
"title": "Wikimedia Foundation",
"coordinates": [
{
"lat": 37.78916667,
"lon": -122.40333333,
"primary": "",
"globe": "earth"
}
]
}
}
}
}
|
- More qualified results (this is the query that Pywikibot uses.):
| 扩展內容 |
|---|
{
"batchcomplete": "",
"query": {
"pages": {
"18618509": {
"pageid": 18618509,
"ns": 0,
"title": "Wikimedia Foundation",
"coordinates": [
{
"lat": 37.78916667,
"lon": -122.40333333,
"primary": "",
"type": "landmark",
"dim": "1000"
}
]
}
}
}
}
|
列举有坐标或无坐标的页面
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.
配置
| 设置 | 类型 | 默认 | 有什麼作用 |
|---|---|---|---|
$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:
|
$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. |
| 此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
See also
- Extension:Maps(地图) - Extension to visualize and work with geographical information.
- Semantic Result Formats - Various visualization formats for Extension:Semantic MediaWiki(语义 MediaWiki)
- Extension:Kartographer - Allows displaying GeoJSON (so do recent versions of Maps)
- Extension:MultiMaps - Allows users to display maps and coordinate data using multiple mapping services
- Extension:VisualData/Geolocation - Allows displaying Maptiler maps in forms with reverse geocoding and draggable markers
| 此扩展在以下wiki农场/托管网站和/或软件包中提供: |
- Stable extensions/zh
- API extensions/zh
- Parser function extensions/zh
- Pages using deprecated NoteTA template
- WTFPL licensed extensions/zh
- Extensions in Wikimedia version control/zh
- ArticleDeleteComplete extensions/zh
- CirrusSearchAddQueryFeatures extensions/zh
- FileUpload extensions/zh
- LinksUpdateComplete extensions/zh
- LoadExtensionSchemaUpdates extensions/zh
- OutputPageParserOutput extensions/zh
- ParserFirstCallInit extensions/zh
- SearchDataForIndex extensions/zh
- SearchDataForIndex2 extensions/zh
- SearchIndexFields extensions/zh
- All extensions/zh
- Extensions used on Wikimedia/zh
- Extensions included in Miraheze/zh
- Extensions included in MyWikis/zh
- Extensions included in ProWiki/zh
