mapserver + google + моя карта

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

mapserver + google + моя карта

Сообщение AntonAD » 23 июн 2009, 17:14

Начал разбираться с Mapserver, хочу с его помощью в сайте на базу google maps показывать объекты (tail).
Прочитал документацию на сайте, програмная часть мне в принципе понятна, примеры работают.
Во всех примерах используется уже известная система координат.

Пытаюсь подцепить к серверу свою карту, карта в некой местной системе координат (проекция Гаусса-Крюгера скорее всего). Прошу помощи в настройке карты для работы с wms. Для всех объектов карты я уже знаю метод вычисления координат WGS-84, надеюсь что это поможет.

Сразу скажу что очень плохо разбираюсь в теме (опыт - 1 мес), так что буду рад любым ссылкам или примерам.

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 23 июн 2009, 18:31

В догонку к сообщению прошу дать описание формата файла espg, насколько я понимаю, создав свою координатную систему, я смогу решить вопрос, но описания формата пока найти не могу.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: mapserver + google + моя карта

Сообщение KolesovDmitry » 23 июн 2009, 19:37

AntonAD писал(а):прошу дать описание формата файла espg.
Формат файла с описанием кодов epsg в MapServer - это формат библиотеки proj, посмотрите документацию, которая дана у них на сайте.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: mapserver + google + моя карта

Сообщение KolesovDmitry » 23 июн 2009, 19:42

AntonAD писал(а):Начал разбираться с Mapserver
Пытаюсь подцепить к серверу свою карту, карта в некой местной системе координат (проекция Гаусса-Крюгера скорее всего). Прошу помощи в настройке карты для работы с wms. Для всех объектов карты я уже знаю метод вычисления координат WGS-84, надеюсь что это поможет.
Если вы знаете координаты ваших объектов в WGS-84, то, может быть, проще будет перепроецировать данные непосредственно в эту систему? (тогда, в зависимости от того, с растром или вектором вы работаете, вам может понадобиться библиотека gdal или ogr - на сайте были примеры работы с этими библиотеками).

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 23 июн 2009, 21:45

KolesovDmitry писал(а): Если вы знаете координаты ваших объектов в WGS-84, то, может быть, проще будет перепроецировать данные непосредственно в эту систему? (тогда, в зависимости от того, с растром или вектором вы работаете, вам может понадобиться библиотека gdal или ogr - на сайте были примеры работы с этими библиотеками).
Да примеры я внимательно изучил, в принципе все понятно, но все примеры показывают преобразования из одной стандартной сист. координат в другую. Я прихожу к мысли что надо описать свою сист координат, а вот примеров на это там нет, а сам я не силен в этом.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: mapserver + google + моя карта

Сообщение Максим Дубинин » 24 июн 2009, 04:29

в proj легко добавить свою СК, описав ее в формате proj.4 в файле epsg
если СК вам не известна или она локальная, то это вам не поможет, определите сначала, точно ли вы можете описать СК
пристегивайтесь, турбулентность прямо по курсу

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 24 июн 2009, 10:09

sim писал(а):в proj легко добавить свою СК, описав ее в формате proj.4 в файле epsg
если СК вам не известна или она локальная, то это вам не поможет, определите сначала, точно ли вы можете описать СК
Это локальная СК.
Как мне поступить в этом случае. Повторюсь что я могу для любой точки своей СК найти точку подходящую google.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: mapserver + google + моя карта

Сообщение Максим Дубинин » 24 июн 2009, 17:16

в этом случае нужно сначала привязать карту из локальной в географическую или спроектированную СК, тогда можно будет спокойно выбрать нужный epsg-код. Привязывать можно растр и вектор, способов много, см. описания в статьях.
пристегивайтесь, турбулентность прямо по курсу

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 25 июн 2009, 22:19

Я привязал 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

Очень прошу подсказать в чем дело и как можно решить проблему.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: mapserver + google + моя карта

Сообщение KolesovDmitry » 26 июн 2009, 04:21

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 - для единообразия.

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 26 июн 2009, 09:07

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 - для единообразия.
Хорошо учту, это я брал из примера, там было так, пока пытаюсь заставить хоть как то работать.

KolesovDmitry
Гуру
Сообщения: 810
Зарегистрирован: 22 авг 2007, 14:58
Репутация: 123
Откуда: Казань

Re: mapserver + google + моя карта

Сообщение KolesovDmitry » 26 июн 2009, 09:50

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.)

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 26 июн 2009, 10:06

Тогда получается, что ошибка не в 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, ответ от карты я посмотреть там не знаю как, но слой явно не рисуется.

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: mapserver + google + моя карта

Сообщение AntonAD » 26 июн 2009, 15:08

Всем большое спасибо, как оказалось все просто, сказалось отсутствие опыта.

viewtopic.php?f=19&t=3535

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей