GIS-LAB

Географические информационные системы и дистанционное зондирование

Почему WMS ≠ ?нтернет

Mavka, 13.03.2011

Давно обещанная статья, в которой хотел объяснить почему создание веб-карты не начинается с установки сервера WMS. Но так получилось, что разговор ушел в сторону WFS/WCS и на MapFish с MapBender места не нашлось :(. В итоге статья больше заинтересует разработчиков настольных программ, чем веб-программистов. Но и для обычных читателей как обзорно-ознакомительная сойдет.

?так, статья – “Сервисы OWS“.

Огромная благодарность тем, кто помог довести текст до качества, достойного к публикации – Максим Дубинин, Денис Рыков.

Замечания, полученные в процессе редактирования и не раскрытые в тексте статьи:

Один из рецензентов указал, что функция json_encode некорректно ведет себя при использовании с кириллицей.

Я не сталкивался с ошибками, но согласно документации она работает только с данными в кодировке UTF-8. Возможно, стоит это учитывать.

Второй вопрос касался сервиса WCS. Если для WFS возможность изменения данных, то есть передача данных от клиента на сервер, реализуется с помощью WFS-T, то как это осуществляется в WCS?

Расширение “Transaction operation” впервые было введено для WCS 1.1. Операция не относится к основным и сервер WCS не обязан ее поддерживать. (Как, впрочем, и сервер WFS в аналогичной ситуации.) Всего описано 5 операций с правом создания дополнительных:

  • Add/Delete – добавить новый или удалить существующий грид (покрытие)
  • UpdateAll/UpdateDataPart – обновить в указанном гриде все пиксели или их часть
  • UpdateMetadata – изменить метаданные такие как имя грида, географические границы (bbox), число пикселей, описание каналов, диапазоны значений и т.п.

Процесс выглядит так: клиент отправляет на сервер документ с описанием операции (запрос POST). Например, вы обработали грид и решили обновить исходное покрытие “MyGrid” на сервере целиком.

Составляется запрос:

<Transaction service="WCS" version="1.1">
  <InputCoverages>
    <Coverage>
      <ows:Identifier codeSpace="TBD">MyGrid</ows:Identifier>
      <ows:Reference xlink:href="http://server/Images/new_ixels"
                     xlink:role="urn:ogc:def:role:WCS:1.1:Pixels"/>
      <ows:Reference xlink:href="http://server/Images/new_etadata"
                     xlink:role="urn:ogc:def:role:WCS:1.1:CoverageDescription"/>
      <ows:Reference xlink:href="http://server/Images/proj_info"
                     xlink:role="urn:ogc:def:role:WCS:1.1:GeoreferencingTransformation"/>
      <Action>UpdateAll</Action>
    </Coverage>
  </InputCoverages>
</Transaction>

Указываются новые пиксели, обновленные метаданные и система координат. Здесь данные передаются не непосредственно, а только в виде ссылок на файлы. Но можно было их включить в само тело документа, через обычные внутренние ссылки XML.

После получения запроса сервер выполнит указанную операцию и ответит клиенту что “все ОК”. Вот так выглядят транзакции WCS в упрощенном виде.

Комментарии (5) к статье “Почему WMS ≠ ?нтернет”

  1. _DR_ says:

    Спасибо за статью! Небольшая ремарка – по ссылке на php доки – 404.

  2. Дмитрий says:

    Огромное спасибо за статью! Давно хотел увидеть что-то в этом роде: и коротко, и, в то же время, довольно полный подробно.

  3. […] описывалось в первой части («Сервисы OWS»), между двумя пунктами также нужно предусмотреть […]

  4. Mavka says:

    Обнаружил учебник по технологиям OGC: http://www.ogcnetwork.net/GeosciencesTutorial
    п. 3 “OGC Web Service standards” освещает вопросы аналогичные, затрагиваемым в данной статье. Материалы этого учебника являются практически официальной позицией OGC.

Оставтьте комментарий к Дмитрий


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter