Страница 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