2014-06-02 2 views
6

Я бы хотел получить изображения из Викисклада для отображения на карте. Это означает, что, учитывая пару (широту, долготу), я хотел бы найти фотографии вокруг этой точки. После дня поиска и попытки я до сих пор не знаю, возможно ли это или нет. В частности, я прочитал MediaWiki API Main page, API reference и some examples.Wikimedia Commons API поиск изображений по (широта, долгота)

Итак, мой вопрос: возможно ли получить изображения с двумя географическими координатами? Если да, то как?

ответ

9

Да, это возможно. В Commons установлен Extension:GeoData. Используйте action=query&list=geosearch&gscoord=lat|lon&gsradius=meters&gsnamespace=6&gsprimary=all

Выдержка из документации API

gscoord    - Coordinate around which to search: two floating-point values separated by pipe (|) 
    gspage    - Title of page around which to search 
    gsradius   - Search radius in meters 
         This parameter is required 
         The value must be between 10 and 10000 
    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 
    gsnamespace   - Namespace(s) to search 
         Values (separate with '|'): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 100, 101, 102, 103, 104, 105, 106, 107, 460, 
          461, 490, 491, 1198, 1199, 828, 829 
         Maximum number of values 50 (500 for bots) 
         Default: 0 
    gsprop    - What additional coordinate properties to return 
         Values (separate with '|'): type, name, dim, country, region, globe 
         Default: globe 

имен файлов является NS 6 в MediaWiki по умолчанию.

Пример: https://commons.wikimedia.org/w/api.php?format=jsonfm&action=query&list=geosearch&gsprimary=all&gsnamespace=6&gsradius=500&gscoord=51.5|11.95

Результат:

{ 
    "query": { 
     "geosearch": [ 
      { 
       "pageid": 28971703, 
       "ns": 6, 
       "title": "File:RiveuferHerbst.JPG", 
       "lat": 51.501042, 
       "lon": 11.948794, 
       "dist": 142.8 
      }, 
      { 
       "pageid": 32760810, 
       "ns": 6, 
       "title": "File:Pei\u00dfnitznordspitze4.JPG", 
       "lat": 51.499675, 
       "lon": 11.947992, 
       "dist": 143.6 
      } 
     ] 
    } 
} 

Если вы дополнительно хотите optain URLs уменьшенных с запросом API, используйте list=geosearch в качестве генератора:

Пример: https://commons.wikimedia.org/w/api.php?format=jsonfm&action=query&generator=geosearch&ggsprimary=all&ggsnamespace=6&ggsradius=500&ggscoord=51.5|11.95&ggslimit=1&prop=imageinfo&iilimit=1&iiprop=url&iiurlwidth=200&iiurlheight=200

Результат:

+1

Спасибо за отличный ответ. Я просто хочу добавить '& iiprop = url | extmetadata' для извлечения (lat, lon) для каждого изображения. – Flavio

Смежные вопросы