Страница 1 из 2

Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 11 ноя 2010, 15:49
spacecadet
Здравствуйте!

Наша организация переходит с дорого, но хорошего ArcGIS на бесплатный GeoServer. В связи с этим возник вопрос следующего плана: можно ли получить через http-запрос параметы WMS-сервиса (какая проекция, начальный екстент, кэширован ли сервис и т.д.) ? Ранее мною использовался ArcGIS Server - там все это проходило просто: запрос вида

Код: Выделить всё

http://some_map_server_name/ArcGIS/rest/services/some_map_service/MapServer?f=json

возвращал в JSON-виде полную информацию об опубликованном сервисе, что-то вроде вот этого:

Код: Выделить всё

{
  "serviceDescription" : "", 
  "mapName" : "КРАСНОДАРСКИЙ КРАЙ", 
  "description" : "Цифровая модель местности на территорию Краснодарского края. включает слои:\nдорожные соорудения; дороги; улицы; отд. строения; грунты; рельеф; нас. пункты; кварт. и  прочие нас. пункты; растительность;гидрография; соц. эконом.;границы; текст.", 
  "copyrightText" : "", 
  "layers" : [
    {
      "id" : 0, 
      "name" : "1:10000", 
      "parentLayerId" : -1, 
      "defaultVisibility" : true, 
      "subLayerIds" : [1, 26, 30, 43, 48]
    }, 
... (тут перечисляются слои)
  ], 
  "spatialReference" : {
    "wkid" : 102100
  }, 
  "singleFusedMapCache" : false, 
  "initialExtent" : {
    "xmin" : 4422413.89639723, 
    "ymin" : 5367101.27538127, 
    "xmax" : 4500696.63257865, 
    "ymax" : 5427307.12852176, 
    "spatialReference" : {
      "wkid" : 102100
    }
  }, 
  "fullExtent" : {
    "xmin" : 4430726.91185294, 
    "ymin" : 5369672.04872473, 
    "xmax" : 4495416.41885532, 
    "ymax" : 5423978.1547452, 
    "spatialReference" : {
      "wkid" : 102100
    }
  }, 
  "units" : "esriMeters", 
  "supportedImageFormatTypes" : "PNG32,PNG24,PNG,JPG,DIB,TIFF,EMF,PS,PDF,GIF,SVG,SVGZ", 
  "documentInfo" : {
    "Title" : "KRASNODARSKIJ_KRAJ", 
    "Author" : "RAS", 
    "Comments" : "", 
    "Subject" : "", 
    "Category" : "", 
    "Keywords" : "", 
    "AntialiasingMode" : "Best", 
    "TextAntialiasingMode" : "Normal"
  }
}
Эту информацию в дальнейшем можно было парсить и настраивать поведение программы.
Интересует, в общем-то, можно ли получить подобную информацию о WMS-сервисе? Заранее спасибо за ответ.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 11 ноя 2010, 16:08
Mavka
с дорого, но хорошего ArcGIS на бесплатный GeoServer
Сразу пропало желание отвечать на вопрос. Читайте стандарт WMS, ищите GetCapabilities.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 11 ноя 2010, 16:58
spacecadet
Сразу пропало желание отвечать на вопрос.
Простите за любопытство, но чем Вам не угодил ArcGIS? Система действительно хорошая, поэтому и такая дорогая, думаю, отрицать это бессмысленно. Насчет GeoServer'а еще мнение не оформилось - только начинаю пользоваться, но пока все кажется нормальным и приемлемым. А если Вы считаете, что я имею что-то против GeoServer'а в частности и опенсорса вообще, то Вы глубоко заблуждаетесь.

За ссылку и наводку на GetCapabilities Вам преогромное спасибо, информация оказалась очень полезной. Как я понял, GetCapabilities-запрос возвращает краткое описание всех опубликованных слоев и еще параметры самого WMS-сервера, из этого можно вытащить необходимое. Но есть ли способы получать информацию именно по конкретному слою (группе слоев), чтобы не тащить весь исполинский xml? И как все-таки получить информацию о кешированном слое ( в частности очень интересует количество уровней кэширования и масштаб на каждом из них) ?

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 11 ноя 2010, 17:53
Mavka
Хороший. Только они отказались участвовать в соревновании :wink: (Erdas и Oracle там были 8)). Но это оффтопик.
получать информацию именно по конкретному слою
Насколько я знаю, нет. Параметр format в GeoServer не принимается, поэтому только xml. Информация по слою есть еще в DescribeLayer, но это из другой оперы (из стандарта SLD).
информацию о кешированном слое
Коэширование относится к сервисам WMS-C и WTMS, они в GeoServer в общем виде отсутствуют. А в частности, там встроен GeoWebCache. Вот у него и надо поспрашивать.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 11 ноя 2010, 18:00
Mavka

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 12:21
spacecadet
Спасибо Вам за информацию, вопрос можно считать закрытым.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 12:30
Mavka
Можно еще поставить REST extension, написать скрипт и получать информацию через него.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 14:16
spacecadet
О, REST я уважаю вполне! Но даст ли это что-либо помимо той информации, что содержится в xml-ответах на GetCapabilities, не знаете случайно?

UPD: Установил расширение, посмотрел. По REST еще меньше данных можно вытянуть чем по GetCapabilities :( . Зато можно удобно управлять опубликованными слоями, воркспейсами и хранилищами. Но мне пока этого не нужно.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 14:54
Mavka
Извините, я его пристально не разглядывал. Думал, он на уровне MapScript по возможностям.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 14:55
spacecadet
И еще вопрос - насколько я понял, понятие о количестве уровней кеширования для GeoWebCache не имеет смысла, так как недостающие тайлы генерируются на лету при соответствующем запросе, это так?

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 15:08
Mavka
К сожалению, с GeoServer и GWC я не работал больше года. В документации вопрос не освещен.

Если GeoWebCache установлен как отдельное приложение, то уровни кэша прописываются в файле конфигурации (раньше так было). Из автоматически настраивающихся кэшей я знаю GeoJazzy.

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 15:15
spacecadet
Mavka писал(а):то уровни кэша прописываются в файле конфигурации
Да, полностью согласен, но этот файл через http не вытянешь, он хранится локально на диске.
spacecadet писал(а):насколько я понял, понятие о количестве уровней кеширования для GeoWebCache не имеет смысла, так как недостающие тайлы генерируются на лету при соответствующем запросе
Такой вывод я сделал, ознакомившись с документацией на вашем же прекрасном ресурсе (http://gis-lab.info/qa/geowebcache.html предпоследний абзац), может быть я не так понял... :?

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 15:45
Mavka
Я писал статью про версию 1.1. С выходом 1.2 программа капитально изменилась. Там полностью переработали механизм сеток, масштабов и зумов. И, как я уже говорил, мне больше года не приходилось пользовался GWC.

Предпоследний абзац: тайлы - генерируются автоматически при первом запросе, но количество зумов и соответствующие масштабы задаются жестко в конфигурации.

В GeoServer есть спец. библиотека, которая полностью заменяет файл настроек у standalone-версии. И вот ее возможности я совершенно не исследовал. Насколько она умная? Рассчитана на систему тайлов Google и 22 зума, использует жестко вшитые или подстраивающиеся параметры?

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 15:52
Mavka
А из "WMTS 1.0.0 GetCapabilities document" получить нужные вам данные не получается?

Например, первый слой - "geosample:admin" / TileMatrixSet: "EPSG:900913"
Спускаемся ниже, находим соответствующий TileMatrixSet.
Видим 30 уровней зума, в каждом прописан масштаб (ScaleDenominator).

Re: Как получить информацию о параметрах WMS (GeoServer) ?

Добавлено: 12 ноя 2010, 16:06
spacecadet
Да, я смотрел и этот запрос. Но полученная информация же совсем не означает, что слой "geosample:admin" кеширован на 30 уровней зума. Может он кеширован на два уровня, а я пользователю предоставлю ползунок с 30 позициями - и что он в итоге будет наблюдать?
В общем, я в замешательстве. Скорее всего придется для моего веб-проекта создавать xml-файл конфигурации и в нем вручную пробивать все нужные параметры WMS-сервиса. Жаль, думал все получится так же просто как с ArcGIS-сервисами..