Давно обещанная статья, в которой хотел объяснить почему создание веб-карты не начинается с установки сервера 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 в упрощенном виде.
Спасибо за статью! Небольшая ремарка – по ссылке на php доки – 404.
Это тебе спасибо. Ссылку поправил
Огромное спасибо за статью! Давно хотел увидеть что-то в этом роде: и коротко, и, в то же время, довольно полный подробно.
[…] описывалось в первой части («Сервисы OWS»), между двумя пунктами также нужно предусмотреть […]
Обнаружил учебник по технологиям OGC: http://www.ogcnetwork.net/GeosciencesTutorial
п. 3 “OGC Web Service standards” освещает вопросы аналогичные, затрагиваемым в данной статье. Материалы этого учебника являются практически официальной позицией OGC.