Страница 1 из 1
mapserver + google + моя карта
Добавлено: 23 июн 2009, 17:14
AntonAD
Начал разбираться с Mapserver, хочу с его помощью в сайте на базу google maps показывать объекты (tail).
Прочитал документацию на сайте, програмная часть мне в принципе понятна, примеры работают.
Во всех примерах используется уже известная система координат.
Пытаюсь подцепить к серверу свою карту, карта в некой местной системе координат (проекция Гаусса-Крюгера скорее всего). Прошу помощи в настройке карты для работы с wms. Для всех объектов карты я уже знаю метод вычисления координат WGS-84, надеюсь что это поможет.
Сразу скажу что очень плохо разбираюсь в теме (опыт - 1 мес), так что буду рад любым ссылкам или примерам.
Re: mapserver + google + моя карта
Добавлено: 23 июн 2009, 18:31
AntonAD
В догонку к сообщению прошу дать описание формата файла espg, насколько я понимаю, создав свою координатную систему, я смогу решить вопрос, но описания формата пока найти не могу.
Re: mapserver + google + моя карта
Добавлено: 23 июн 2009, 19:37
KolesovDmitry
AntonAD писал(а):прошу дать описание формата файла espg.
Формат файла с описанием кодов epsg в MapServer - это формат
библиотеки proj, посмотрите документацию, которая дана у них на сайте.
Re: mapserver + google + моя карта
Добавлено: 23 июн 2009, 19:42
KolesovDmitry
AntonAD писал(а):Начал разбираться с Mapserver
Пытаюсь подцепить к серверу свою карту, карта в некой местной системе координат (проекция Гаусса-Крюгера скорее всего). Прошу помощи в настройке карты для работы с wms. Для всех объектов карты я уже знаю метод вычисления координат WGS-84, надеюсь что это поможет.
Если вы знаете координаты ваших объектов в WGS-84, то, может быть, проще будет перепроецировать данные непосредственно в эту систему? (тогда, в зависимости от того, с растром или вектором вы работаете, вам может понадобиться библиотека gdal или ogr - на сайте были примеры работы с этими библиотеками).
Re: mapserver + google + моя карта
Добавлено: 23 июн 2009, 21:45
AntonAD
KolesovDmitry писал(а):
Если вы знаете координаты ваших объектов в WGS-84, то, может быть, проще будет перепроецировать данные непосредственно в эту систему? (тогда, в зависимости от того, с растром или вектором вы работаете, вам может понадобиться библиотека gdal или ogr - на сайте были примеры работы с этими библиотеками).
Да примеры я внимательно изучил, в принципе все понятно, но все примеры показывают преобразования из одной стандартной сист. координат в другую. Я прихожу к мысли что надо описать свою сист координат, а вот примеров на это там нет, а сам я не силен в этом.
Re: mapserver + google + моя карта
Добавлено: 24 июн 2009, 04:29
Максим Дубинин
в proj легко добавить свою СК, описав ее в формате proj.4 в файле epsg
если СК вам не известна или она локальная, то это вам не поможет, определите сначала, точно ли вы можете описать СК
Re: mapserver + google + моя карта
Добавлено: 24 июн 2009, 10:09
AntonAD
sim писал(а):в proj легко добавить свою СК, описав ее в формате proj.4 в файле epsg
если СК вам не известна или она локальная, то это вам не поможет, определите сначала, точно ли вы можете описать СК
Это локальная СК.
Как мне поступить в этом случае. Повторюсь что я могу для любой точки своей СК найти точку подходящую google.
Re: mapserver + google + моя карта
Добавлено: 24 июн 2009, 17:16
Максим Дубинин
в этом случае нужно сначала привязать карту из локальной в географическую или спроектированную СК, тогда можно будет спокойно выбрать нужный epsg-код. Привязывать можно растр и вектор, способов много, см. описания в статьях.
Re: mapserver + google + моя карта
Добавлено: 25 июн 2009, 22:19
AntonAD
Я привязал tiff используя статью описывающую привязку с использованием gdal. Привязал используя 5 опорных точек не задавая явно СК. При просмотре получается нечто похожее на правду.
Но при попытке открыть карты используя wms я получаю ошибку.
Код: Выделить всё
<ServiceException code="LayerNotDefined">
msWMSLoadGetMapParams(): WMS server error. Invalid layer(s) given in the LAYERS parameter.
</ServiceException>
Код: Выделить всё
<!-- WARNING: Optional LatLonBoundingBox could not be established for this layer. Consider setting LAYER.EXTENT or wms_extent metadata. Also check that your data exists in the DATA statement -->
Вот мой map файл:
Код: Выделить всё
MAP
##########################################################################
NAME NU
STATUS ON
SIZE 1024 768
IMAGETYPE PNG24
EXTENT 76.5007941 66.0642443 76.8417906 66.1640712
IMAGECOLOR 255 255 255
##########################################################################
# WEB section
#
WEB
TEMPLATE "template.html"
IMAGEPATH "./tmp/"
IMAGEURL "/tmp/"
METADATA
"wms_title" "NU"
"wms_abstract" "NU Map"
"wms_onlineresource" "http://localhost:8080/cgi-bin/mapserv.exe?map=C:/ms4w/apps/nu/htdocs/nu.map"
"wms_srs" "EPSG:4326"
"wms_getfeatureinfo" "http://localhost:8080/cgi-bin/mapserv.exe?map=C:/ms4w/apps/nu/htdocs/nu.map"
"wms_featureinfoformat" "text/plain"
END
END
##########################################################################
# PROJECTION section
#
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
END
##########################################################################
LAYER
NAME GTiff
DATA "../nu.tif"
STATUS DEFAULT
TYPE RASTER
PROCESSING "BANDS=1,2,3"
OFFSITE 10 10 10
METADATA
"wms_title" "GTiff"
"wms_abstract" "GTiff layer"
"wms_include_items" "all"
"wms_srs" "EPSG:4326 EPSG:54004"
END
END
#########################################################################
END # Map File
Очень прошу подсказать в чем дело и как можно решить проблему.
Re: mapserver + google + моя карта
Добавлено: 26 июн 2009, 04:21
KolesovDmitry
AntonAD писал(а):
Но при попытке открыть карты используя wms я получаю ошибку.
А в чем вы пытаетесь открыть wms? Попробуйте сначала посмотреть вашу карту без всякого wms, а стандартными средствами MapServer, передавая параметры через адресную строку - тогда по крайней мере будет понятно, ошибка в map-файле или в клиенте.
А вообще, у вас похоже "end"ов больше чем нужно, и до Layer MapServer просто не доходит.
Вот мой map файл:
Код: Выделить всё
MAP
...
WEB
...
"wms_srs" "EPSG:4326"
END <--- Этот "End" кажется лишний
...
END
<--- Сюда MapServer уже не попадает
##########################################################################
# PROJECTION section
....
END # Map File
И, наконец, это к проблеме вряд ли отностится, но, коли уж у вас проекция везде указывается кодом epsg, то и тут
Код: Выделить всё
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
END
Лучше указать код epsg - для единообразия.
Re: mapserver + google + моя карта
Добавлено: 26 июн 2009, 09:07
AntonAD
KolesovDmitry писал(а):
А в чем вы пытаетесь открыть wms? Попробуйте сначала посмотреть вашу карту без всякого wms, а стандартными средствами MapServer, передавая параметры через адресную строку - тогда по крайней мере будет понятно, ошибка в map-файле или в клиенте.
когда я пишу
http://localhost:8080/cgi-bin/mapserv.e ... p&mode=map - то выводится карта повернутая на 15-20 градусов, вероятно это результат привязки карты. Т.е. так работает и не ругается.
Возможно мне стоило сказать что я привязывал карту по точкам из google maps. Может быть в этом случае я неправильно указываю CК?
А вообще, у вас похоже "end"ов больше чем нужно, и до Layer MapServer просто не доходит.
Этот END относится к METADATA - так что не в этом дело.
И, наконец, это к проблеме вряд ли отностится, но, коли уж у вас проекция везде указывается кодом epsg, то и тут
Код: Выделить всё
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
END
Лучше указать код epsg - для единообразия.
Хорошо учту, это я брал из примера, там было так, пока пытаюсь заставить хоть как то работать.
Re: mapserver + google + моя карта
Добавлено: 26 июн 2009, 09:50
KolesovDmitry
AntonAD писал(а):KolesovDmitry писал(а):
А в чем вы пытаетесь открыть wms? Попробуйте сначала посмотреть вашу карту без всякого wms, а стандартными средствами MapServer, передавая параметры через адресную строку - тогда по крайней мере будет понятно, ошибка в map-файле или в клиенте.
когда я пишу
http://localhost:8080/cgi-bin/mapserv.e ... p&mode=map - то выводится карта повернутая на 15-20 градусов, вероятно это результат привязки карты. Т.е. так работает и не ругается.
Возможно мне стоило сказать что я привязывал карту по точкам из google maps. Может быть в этом случае я неправильно указываю CК?
Тогда получается, что ошибка не в map-файле, а в клиенте, которым вы пытаетесь смотреть карту или в связке клиент-MapServer. Покажите, как вы вызываете эту карту в вашем клиенте (кстати, а что за клиент, все-таки?).
(То, что карта повернута, это скорее всего означает ошибку привязки (ведь вы же привязывали в WGS-84, судя по всему?). И если бы все было нормально, то она и в клиенте должна была быть повернута так же, как и при вызове напрямую в MS.)
Re: mapserver + google + моя карта
Добавлено: 26 июн 2009, 10:06
AntonAD
Тогда получается, что ошибка не в map-файле, а в клиенте, которым вы пытаетесь смотреть карту или в связке клиент-MapServer. Покажите, как вы вызываете эту карту в вашем клиенте (кстати, а что за клиент, все-таки?).
(То, что карта повернута, это скорее всего означает ошибку привязки (ведь вы же привязывали в WGS-84, судя по всему?). И если бы все было нормально, то она и в клиенте должна была быть повернута так же, как и при вызове напрямую в MS.)
В качестве клиента я использую Google maps. Пример использования взял с этого сайта.
Вот запрос в ответ на который ругается wms.
Код: Выделить всё
http://localhost:8080/cgi-bin/mapserv.exe?map=C:/ms4w/apps/nu/htdocs/nu.map&REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&LAYERS=WMS&STYLES=&FORMAT=image/png&BGCOLOR=0xFFFFFF&TRANSPARENT=TRUE&SRS=EPSG:54004&BBOX=8542602.150002306,9856743.029425388,8543213.6462192,9857353.84835514&WIDTH=256&HEIGHT=256&reaspect=false"
Пробовал так же ArcGIS Explorer, ответ от карты я посмотреть там не знаю как, но слой явно не рисуется.
Re: mapserver + google + моя карта
Добавлено: 26 июн 2009, 15:08
AntonAD
Всем большое спасибо, как оказалось все просто, сказалось отсутствие опыта.
viewtopic.php?f=19&t=3535