Страница 1 из 2
					
				Как узнать координаты тайла в Mapserver
				Добавлено: 03 июн 2009, 09:19
				 random
				как я понимаю MapServer отдает тайл по запросу: координаты левого нижнего угла и координаты правого верхнего если это не так то пожалуйста поправьте меня...
Вопрос в следующем зная только одну точку  на карте как мне получить координаты тайла в которой она находится? если ли какая либо формула или функция, в том же openlayers?
			 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 12:40
				 victor-vk
				
			 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 13:05
				 random
				спасибо за дельную статью, единственное а есть ли что нить подобное но для mapserver...
у него же какая то своя система координат? метры там или что
			 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 14:41
				 victor-vk
				random писал(а):спасибо за дельную статью, единственное а есть ли что нить подобное но для mapserver...
у него же какая то своя система координат? метры там или что
MapServer вроде-бы поддерживает WMS сервисы (по крайней мере, было бы очень странно, если нет). Тот же OpenLayers на сколько я помню, поддерживает взаимодействие с сервером WMS. Коли так, то в принципе, координаты (позицию в матрице тайлов для заданного зума) тайла знать не нужно. На сервер приходит запрос по географическим координатам вершин тайла
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 14:51
				 random
				victor-vk писал(а):random писал(а):спасибо за дельную статью, единственное а есть ли что нить подобное но для mapserver...
у него же какая то своя система координат? метры там или что
MapServer вроде-бы поддерживает WMS сервисы (по крайней мере, было бы очень странно, если нет). Тот же OpenLayers на сколько я помню, поддерживает взаимодействие с сервером WMS. Коли так, то в принципе, координаты (позицию в матрице тайлов для заданного зума) тайла знать не нужно. На сервер приходит запрос по географическим координатам вершин тайла
 
согласен что MapServer прекрасно уживается с OpenLayers и не нужно знать координаты тайла, но так уж сложилось что пишу сам приложение без использования OpenLayers(ибо не подходит) и поэтому спрашаю у вас, мне и нужен по сути принцип OpenLayers или что то близкое к нему...  то есть мне нужно получить координаты тайла в который попадает заданная точка. есть какие нить идеи кроме ковыряния самого OpenLayers
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 14:59
				 KolesovDmitry
				random писал(а):как я понимаю MapServer отдает тайл по запросу: координаты левого нижнего угла и координаты правого верхнего если это не так то пожалуйста поправьте меня...
Вопрос в следующем зная только одну точку  на карте как мне получить координаты тайла в которой она находится? если ли какая либо формула или функция, в том же openlayers?
Не совсем так. Как таковых тайлов у MapServer нет. Просто пользователь 
настраивает map-файл для работы (
более подробно тут), а потом в адресной строке задает параметры карты, которые ему нужны в данный момент - масштаб карты, слои и тд.
Например, если вас интересует квадрат с координатами углов 33.75,45,45,56.25, размером 256x256 пикселей, то делаете запрос:
Код: Выделить всё
http://.../cgi-bin/mapserv?MAP=...&LAYERS=...&BBOX=33.75,45,45,56.25&WIDTH=256&HEIGHT=256&MODE=MAP
и получаете свой результат. Меняя координаты можно добиться нужного размера (масштаба) карты.
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 15:04
				 victor-vk
				random писал(а):
согласен что MapServer прекрасно уживается с OpenLayers и не нужно знать координаты тайла, но так уж сложилось что пишу сам приложение без использования OpenLayers(ибо не подходит) и поэтому спрашаю у вас, мне и нужен по сути принцип OpenLayers или что то близкое к нему...  то есть мне нужно получить координаты тайла в который попадает заданная точка. есть какие нить идеи кроме ковыряния самого OpenLayers
Понятно. Ну в общем, это чисто математика/геометрия/здравый смысл. У меня похожий код есть. Если нужно, оставь личное сообщение с информацией, куда сбросить, если найду...
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 15:06
				 random
				KolesovDmitry писал(а):random писал(а):как я понимаю MapServer отдает тайл по запросу: координаты левого нижнего угла и координаты правого верхнего если это не так то пожалуйста поправьте меня...
Вопрос в следующем зная только одну точку  на карте как мне получить координаты тайла в которой она находится? если ли какая либо формула или функция, в том же openlayers?
Не совсем так. Как таковых тайлов у MapServer нет. Просто пользователь 
настраивает map-файл для работы (
более подробно тут), а потом в адресной строке задает параметры карты, которые ему нужны в данный момент - масштаб карты, слои и тд.
Например, если вас интересует квадрат с координатами углов 33.75,45,45,56.25, размером 256x256 пикселей, то делаете запрос:
Код: Выделить всё
http://.../cgi-bin/mapserv?MAP=...&LAYERS=...&BBOX=33.75,45,45,56.25&WIDTH=256&HEIGHT=256&MODE=MAP
и получаете свой результат. Меняя координаты можно добиться нужного размера (масштаба) карты.
 
ну это конечно так но тогда не понятно: мы же все равно даем запрос MapServer'у о том чтоб он выдал квадрат у которого координаты нижнего левого угла 33.75,45 и верхнего правого 45,56.25 
а если я ему отправлю такой запрос: 33.76,45 и  45,57.25  то есть сдвинутый на доли что произойдет?
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 15:07
				 victor-vk
				А можно узнать, чем OpneLayers или Google Maps API не устраивает?
			 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 15:11
				 random
				victor-vk писал(а):А можно узнать, чем OpneLayers или Google Maps API не устраивает?
всмысле узнать, хорошо сказжу так: я пишу флеш клиент со своими картами и MapSever и мне как то всё равно на Google Maps, 
а по поводу  OpenLayers: имелось ввиду чтоб скрипт определял координаты и передавал их в flash или что?
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 15:17
				 KolesovDmitry
				random писал(а):
а если я ему отправлю такой запрос: 33.76,45 и  45,57.25  то есть сдвинутый на доли что произойдет?
Нарисует сдвинутый на доли. Без разницы, какие координаты - целые или дробные, поскольку под каждый запрос MapServer генерирует отдельную картинку, а не отдает заранее созданный кусок карты.
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 15:22
				 random
				хорошо тогда другой вопрос как нормальные координаты перевести в то что кушает MapServer? счас посмотрел в firebug там вот такие страшные числа, как подобные получать: 4197491.660000 ?
			 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 16:07
				 geologic
				Проекция гугла известна - это меркатор на сфере. Софт тут ни при чем, алгоритмы вычислений одинаковые. Основы привязки тайлов, как правильно вам подсказали, можно поглядеть на Мапбилдере, формулы и алгоритм для тайлов в ГИС - вот 
тут статья. 
Если сразу формулы, то  вычислить пиксели по географии вот: 
Xp = BM0 * (1 + Lon/180); Yp = BM0 * (1 - 0.5*ln((1+sin(Lat))/(1-sin(Lat)))/Pi;
BM0 здесь центр всего массива  Google Map  в  пикселах,  точнее, ширина, деленная пополам. Для 18-го уровня, это будет 33554432/2 = 16777216. 
Номер тайла Xp/Yp div 256 если нужен. 
Меркаторские координаты X = XYres * (Xp - BM0); Y = XYres * (BM0 - Yp);
XYres - разрешение (размер пикселя) по уровням, на 18-м 1.19299213862542 метра, на соседних в два раза отличается. Вообще, как известно, сам гугл нынче отдает тайлы по меркаторским XY (точнее, номерам блоков 256 на 256), например, вот:
http://khm0.google.ru/kh/v=39&x=39617&y=20478&z=16
Да и другие сервисы придерживаются этого принципа.
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 16:26
				 random
				geologic писал(а):Проекция гугла известна - это меркатор на сфере. Софт тут ни при чем, алгоритмы вычислений одинаковые. Основы привязки тайлов, как правильно вам подсказали, можно поглядеть на Мапбилдере, формулы и алгоритм для тайлов в ГИС - вот 
тут статья. 
Если сразу формулы, то  вычислить пиксели по географии вот: 
Xp = BM0 * (1 + Lon/180); Yp = BM0 * (1 - 0.5*ln((1+sin(Lat))/(1-sin(Lat)))/Pi;
BM0 здесь центр всего массива  Google Map  в  пикселах,  точнее, ширина, деленная пополам. Для 18-го уровня, это будет 33554432/2 = 16777216. 
Номер тайла Xp/Yp div 256 если нужен. 
Меркаторские координаты X = XYres * (Xp - BM0); Y = XYres * (BM0 - Yp);
XYres - разрешение (размер пикселя) по уровням, на 18-м 1.19299213862542 метра, на соседних в два раза отличается. Вообще, как известно, сам гугл нынче отдает тайлы по меркаторским XY (точнее, номерам блоков 256 на 256), например, вот:
http://khm0.google.ru/kh/v=39&x=39617&y=20478&z=16
Да и другие сервисы придерживаются этого принципа.
 
слушайте что то не совсем понимаю... 
у меня есть координата заданная в нормальных географических коордантах, MapServer воспринимает координаты в каких то иных размерностях в метрах чтоли, причем он просит две пары координат для выдачи тайла что мне нжуно сделать что бы из моих координат получить то что нужно ему, ( на гугл мне счас как то далеко, с ним я отдельно общался и всё... счас у меня MapServer наверное со своими заморочками)
 
			
					
				Re: как узнать координаты тайла
				Добавлено: 03 июн 2009, 19:39
				 KolesovDmitry
				random писал(а):
у меня есть координата заданная в нормальных географических коордантах, MapServer воспринимает координаты в каких то иных размерностях в метрах чтоли, причем он просит две пары координат для выдачи тайла что мне нжуно сделать что бы из моих координат получить то что нужно ему, ( на гугл мне счас как то далеко, с ним я отдельно общался и всё... счас у меня MapServer наверное со своими заморочками)
Мы с вами по третьему круго одно и то же начинаем 

 Ну нет никаких тайлов у MapServer. Елки-палки, да вы просто попробуйте создать карту на основе MS своими руками, потратите времени полдня, зато бОльшая часть вопросов сразу пропадет