Поскольку на форуме в последние дни прошла лавина однотипных сообщений о проблемах с веб-приложениями, то решил осветить вопрос разработки и отладки веб-карт.
Разговор пойдет про: MapServer, OpenLayers, PostGIS и “вообще” (с).
Примечание: программ с названием “MapServer” я знаю четыре. ?з них наиболее часто встречающиеся – UMN MapServer и SUAS MapServer. Указывайте с чем конкретно вы работаете.
Первое и самое главное.
?сходные данные. Карты без координат не бывают. Непривязанные растры, вектор в местной СК – это не материал и к Г?С он никаким боком не относится. Как минимум – возьмите из Google Earth 4-6 точек и привяжите свои карты к ним. Система координат должна быть общепринятой и входить в список EPSG.
?так. ?сходный материал это: вектор – в формате ESRI Shapefile, растр – GeoTIFF. Если у вас он в другом формате (Mapinfo, Autocad, Adobe Illustrator), то вы должны себе четко представлять и быть уверены на 100% что сможете, при необходимости, привести его в указанные.
Для совсем начинающих – оформление и данные всегда идут раздельно. Если вы нарисовали красивую карту в Mapinfo или Illustratore, то при преобразовании форматов придется все делать заново. Толщина, цвет, заливка, условные знаки не передаются. Не устраивает – растеризуйте.
Ссылки:
- Географическая привязка растровых данных в ImageWarp (Arcview);
- Привязка векторных данных находящихся в неизвестной или файловой системе координат (Arcview, ArcGIS);
- Географическая привязка данных с помощью QGIS
и другие статьи в разделе “Пространственная привязка“.
Примечание: если вы стоите перед дилеммой “растр или вектор” – выбирайте растр. Если потом решите переделать свой приложение на вектор, то затраты будут незначительными.
Второе.
Привыкайте все проверять. Залить данные в PostGIS, настроить MapServer, подключить OpenLayers и утверждать что последний рисует совсем не то что было вначале – бесперспективно.
Начали.
Все делается по порядку и рекурсивно проверяется. Взяли исходные данные, загрузили их в Quantum GIS (программа на ваш вкус). Убедились что видим то, что ожидали. Все слои прекрасно совмещаются. Проекция – та что требовалась. Координаты из Google ложатся туда где и должны быть (хотя бы +/- 100 м).
Загрузили данные в PostGIS. Опять все проверили: слои из базы данных сходятся с теми что были на первом этапе и система координат не сбилась при загрузке.
Начинаем настраивать UMN MapServer. Заполнили слои, прописали системы координат и экстенты. Проверяем средствами самой программы. Открываем в интернет браузере страницу с адресом вида:
http://localhost/cgi-bin/mapserv.exe?map=/work/wms/web.map&layer=geology_drillhole&mode=map
вы получите карту размером SIZE и охватом в EXTENT, как указывали в файле настроек (web.map). Кстати, основные проблемы на этом этапе – неправильно заданный экстент.
Теперь, добавляем в map-файл информацию о WMS. Переходим в QuantumGIS, подключаем новый wms-сервис и тщательно тестируем. Если ничего не отображается, то смотрим логи веб-сервера Apache – файл access.log. Для OSGeo4W он лежит по адресу:
\OSGeo4W\apache\logs\access.log
В нем смотрим в конце запросы вида (одной строкой):
/cgi-bin/mapserv.exe?map=/work/wms/web.map?
SERVICE=WMS&VERSION=1.1.0&
REQUEST=GetMap&LAYERS=geology_drillhole&
EXCEPTIONS=application/vnd.ogc.se_xml&
STYLES=&TRANSPARENT=FALSE&
FORMAT=image/png&
WIDTH=768&HEIGHT=768&
SRS=EPSG:…&
BBOX=…
Все параметры интуитивно понятны и беглого взгляда должно быть достаточно, чтобы выявить грубые ошибки. Если к этой строке добавить в начале адрес сервера (http://localhost) и открыть ее в браузере, то вы получите картинку. ?ли сообщение об ошибке – тогда исправляйте map-файл.
OpenLayers. Добавляем слой WMS, а вместо него – розовые квадраты. Щелкаем правой кнопкой и копируем адрес тайла. Открываем его в новом окне – wms-сервер покажет ошибку. Не забываем смотреть в логах Apache какие запросы поступают на сервер.
Если вместо UMN MapServer вы используете GeoServer, то удобнее использовать Firebug для Firefox. Открываем в меню ?нструменты > Дополнения > Поиск дополнений. ?щем “firebug” и устанавливаем. Запускаем отладку (Ctrl+F12 или ?нструменты > Firebug) и на вкладке “Сеть” видим все обращения к серверу.
На вкладке “Сценарий” можно проводить собственно отладку кода вашего приложения, определять точки останова и смотреть содержимое переменных.
Закончили.
? вот только теперь, если у вас до сих пор остались нерешенные проблемы, отправляемся на форум и просим подсказки. Для UMN MapServer приводим содержимое map-файла, а для OpenLayers – хотя бы инициализацию карты (OpenLayers.Map) и слоя (OpenLayers.Layer.WMS).
не получается поднять на локальной машине на UMN MapServer WMS.
map файл вроде правильный, при подстановке в браузер картинка нормальная.
а Qgis не может подключиться к локальному wms server.