Привязка тайлов Яндекс карт к координатам
- Старик
 - Новоприбывший
 - Сообщения: 11
 - Зарегистрирован: 13 фев 2010, 16:11
 - Репутация: 0
 - Контактная информация:
 
							
						Привязка тайлов Яндекс карт к координатам
		
													
							
						
			
			
			
			
			Здравтвуйте уважаемые геодезисты.
Мне понадобилась карта местности.Для водного туризма. На бумаге.
Скачал тайлы с яндекс карт склеил распечатал, все очень здорово.
Единствено что хотелось нарисовать координатную сетку. Долготу нашел без проблем
размер общей карты известен 256*(2^z) пикселов где z - увеличение.
Делю на 360 градусов получаю количество пикселов на градус. Гринвич по серидине. Верхний левый угол моей карты тоже знаю.Все остальное труда не составило.
А вот с широтой начались проблемы.
Гуглавская формула есть, но она не подходит.Там кажется думают что земля имеет форму шара.
 
Помогите кто знает. Так как в школе был двоишником хорошо бы с формулой какой нибудь примерчик.
Плиз.
п.с. Убедительная просьба не предлагайте готовые программы или решения. Я хочу только формулу.
			
			
													Мне понадобилась карта местности.Для водного туризма. На бумаге.
Скачал тайлы с яндекс карт склеил распечатал, все очень здорово.
Единствено что хотелось нарисовать координатную сетку. Долготу нашел без проблем
размер общей карты известен 256*(2^z) пикселов где z - увеличение.
Делю на 360 градусов получаю количество пикселов на градус. Гринвич по серидине. Верхний левый угол моей карты тоже знаю.Все остальное труда не составило.
А вот с широтой начались проблемы.
Гуглавская формула есть, но она не подходит.Там кажется думают что земля имеет форму шара.
Помогите кто знает. Так как в школе был двоишником хорошо бы с формулой какой нибудь примерчик.
Плиз.
п.с. Убедительная просьба не предлагайте готовые программы или решения. Я хочу только формулу.
					Последний раз редактировалось Старик 16 фев 2010, 23:27, всего редактировалось 2 раза.
									
			
						
										
						- Komяpa
 - Интересующийся
 - Сообщения: 16
 - Зарегистрирован: 13 сен 2009, 11:24
 - Репутация: 0
 - Откуда: Minsk
 - Контактная информация:
 
Re: Кто может привязать координаты в Яндекс картах.помогите.
Если немножко погуглить, можно найти такую формулу в maemo-mapper-shmuma (приведена на питоне):
Ну и вообще, см.
http://code.google.com/p/twms/source/br ... dex.py#364
			
			
													Код: Выделить всё
        M_PI_4 = 0.78539816339744830962
        YANDEX_Rn = 6378137.0
        YANDEX_E = 0.0818191908426
        YANDEX_A = 20037508.342789
        YANDEX_F = 53.5865938
        YANDEX_AB = 0.00335655146887969400
        YANDEX_BB = 0.00000657187271079536
        YANDEX_CB = 0.00000001764564338702
        YANDEX_DB = 0.00000000005328478445
        
        tmp=math.tan(M_PI_4+(lat*math.pi/180.)/2.0);
        pow_tmp = math.pow(math.tan(M_PI_4+math.asin(YANDEX_E*math.sin(lat*math.pi/180.))/2.0),YANDEX_E);
        x = (YANDEX_Rn*(lon*math.pi/180.) + YANDEX_A) * YANDEX_F;
        y = (YANDEX_A - (YANDEX_Rn * math.log (tmp / pow_tmp))) * YANDEX_F;http://code.google.com/p/twms/source/br ... dex.py#364
					Последний раз редактировалось Komяpa 13 фев 2010, 22:35, всего редактировалось 1 раз.
									
			
						
										
						- Старик
 - Новоприбывший
 - Сообщения: 11
 - Зарегистрирован: 13 фев 2010, 16:11
 - Репутация: 0
 - Контактная информация:
 
Re: Кто может привязать координаты в Яндекс картах.помогите.
Здарова Котяра
Спасибо за беспокойство но в формуле чтото не так
вобще не используются
YANDEX_AB = 0.00335655146887969400
YANDEX_BB = 0.00000657187271079536
YANDEX_CB = 0.00000001764564338702
YANDEX_DB = 0.00000000005328478445
и отсутсвует увеличение, то есть общий размер карты в пикселах.
			
			
									
						
										
						Спасибо за беспокойство но в формуле чтото не так
вобще не используются
YANDEX_AB = 0.00335655146887969400
YANDEX_BB = 0.00000657187271079536
YANDEX_CB = 0.00000001764564338702
YANDEX_DB = 0.00000000005328478445
и отсутсвует увеличение, то есть общий размер карты в пикселах.
- 
				Konstantin Tokar
 - Активный участник
 - Сообщения: 178
 - Зарегистрирован: 16 июл 2008, 09:56
 - Репутация: 1
 - Откуда: Москва
 
Re: Кто может привязать координаты в Яндекс картах.помогите.
Внутри JS файла яндексового API есть функции преобразования.
			
			
									
						
										
						- 
				bim2010
 - Гуру
 - Сообщения: 977
 - Зарегистрирован: 27 янв 2009, 22:57
 - Репутация: 258
 
- Старик
 - Новоприбывший
 - Сообщения: 11
 - Зарегистрирован: 13 фев 2010, 16:11
 - Репутация: 0
 - Контактная информация:
 
Re: Кто может привязать координаты в Яндекс картах.помогите.
Выражаю особую благодарнрость bim2010 -му
Сылки очень помогли, все заработало
 
Блин как мало оказывается нужно для счастья.
Всем кто принял учатие большое спасибо. я пошел радоваться.
			
			
									
						
										
						Сылки очень помогли, все заработало
Блин как мало оказывается нужно для счастья.
Всем кто принял учатие большое спасибо. я пошел радоваться.
- Старик
 - Новоприбывший
 - Сообщения: 11
 - Зарегистрирован: 13 фев 2010, 16:11
 - Репутация: 0
 - Контактная информация:
 
Re: Кто может привязать координаты в Яндекс картах.помогите.
Пора возвращать долги
Я пишу на C# от майкрософта
Сравнивал с API яндекс карт полностью совпадает.
правда переводил X,Y в Lat Lon а потом обратно
Х совпал полность
а в Y расхождение на 1 пиксел на любом увеличении. На глаз все равно не видно.
Так что пользуйтесь.
 
			
			
									
						
										
						Я пишу на C# от майкрософта
Сравнивал с API яндекс карт полностью совпадает.
правда переводил X,Y в Lat Lon а потом обратно
Х совпал полность
а в Y расхождение на 1 пиксел на любом увеличении. На глаз все равно не видно.
Так что пользуйтесь.
Код: Выделить всё
    class wgs84
    {   // C# клас для конвертации яндекс карт в координаты и обратно
        // координаты в формате DD.DDDDD
        // положение на карте x,y в пикселах от верхнего левого угла на глобальной карте
        // то есть чтобы вычислить координаты в конкретном тайле нужно знать его смещение на глобальной карте
        // z - zoom увеличение
        
        static public double YtoLat(long y, int z) //перевод пиксела ось Y в широту Lat
        {
            double a = 6378137.0;
            double c1 = 0.00335655146887969;
            double c2 = 0.00000657187271079536;
            double c3 = 0.00000001764564338702;
            double c4 = 0.00000000005328478445;
            double mercY = 20037508.342789 - (y * Math.Pow(2,23 - z)) / 53.5865938;
            double g = Math.PI / 2 - 2 * Math.Atan(1 / Math.Exp(mercY / a));
            double zz = g + c1 * Math.Sin(2 * g) + c2 * Math.Sin(4 * g) + c3 * Math.Sin(6 * g) + c4 * Math.Sin(8 * g);
            return (zz * 180 / Math.PI);
        
        }
        
        static public long LatToY(double lat, int z) // перевод широты Lat в координаты пиксела ось Y
        {
            double rLat = lat * Math.PI / 180;
            double a = 6378137.0;
            double k = 0.0818191908426;
            double zz = Math.Tan(Math.PI / 4 + rLat / 2)  / Math.Pow((Math.Tan(Math.PI / 4 + Math.Asin(k * Math.Sin(rLat)) / 2)), k);
            double y = (20037508.342789 - a * Math.Log(zz)) * 53.5865938 / Math.Pow( 2 ,23 - z);
            return ((long)y );
        
        }
        
        static public double XtoLon(long x, int z) //перевод пиксела ось X в долготу Lon 
        {
            double lon = 360.0 * (double)x / (double)(256 * Math.Pow(2, z)) - 180.0; 
            if (lon > 180) lon -= 360;//вычисление долготы по пикселу
            return (lon);
        }
        
        static public long LonToX(double lon, int z) // перевод долготы Lon в координаты пиксела ось X
        { 
            double  l =  (lon + 180.0)/360.0*(256 * Math.Pow(2, z));
            return((long)l);
        
        }
    }- 
				wowka777
 - Новоприбывший
 - Сообщения: 4
 - Зарегистрирован: 04 авг 2010, 13:57
 - Репутация: 0
 
Re: Привязка тайлов Яндекс карт к координатам
Старик -СПАСБО!!!!
			
			
									
						
										
						- 
				kyrie
 - Новоприбывший
 - Сообщения: 2
 - Зарегистрирован: 14 окт 2010, 13:08
 - Репутация: 0
 
Re: Привязка тайлов Яндекс карт к координатам
Мужики,  подскажите, плиз: 
- константа 53.5865938 - она откуда взялась (как её получили)?
- Я правильно понял, что это - масштабный множитель 53.58.../2^23-z ? Из-за того, что не понимаю откуда взялась константа, не ясно, почему множитель такой
- Откуда взялось ограничение на максимальный масштаб = 23? Яндекс тоже о нем пишет (что мол макс 23, но реально - 17).
- Почему в знаменателе масштабного множителя 2 в степени не z, а 23-z ? (тут похоже я прсото туплю, но не въезжаю).
- Это преобразование как соотноситься с тем, что на http://ru.wikipedia.org/wiki/%D0%9F%D1% ... 1%80%D0%B0 ? Там неизвестная мне функция ath, о которой я ничего найти не смог.
Подскажите?
			
			
									
						
										
						- константа 53.5865938 - она откуда взялась (как её получили)?
- Я правильно понял, что это - масштабный множитель 53.58.../2^23-z ? Из-за того, что не понимаю откуда взялась константа, не ясно, почему множитель такой
- Откуда взялось ограничение на максимальный масштаб = 23? Яндекс тоже о нем пишет (что мол макс 23, но реально - 17).
- Почему в знаменателе масштабного множителя 2 в степени не z, а 23-z ? (тут похоже я прсото туплю, но не въезжаю).
- Это преобразование как соотноситься с тем, что на http://ru.wikipedia.org/wiki/%D0%9F%D1% ... 1%80%D0%B0 ? Там неизвестная мне функция ath, о которой я ничего найти не смог.
Подскажите?
- Mavka
 - Гуру
 - Сообщения: 2060
 - Зарегистрирован: 14 мар 2008, 17:36
 - Репутация: 9
 
Re: Привязка тайлов Яндекс карт к координатам
ath - гиперболический арктангенс
			
			
									
						
							лангольеры под окном жрали время ом-ном-ном
			
						- 
				kyrie
 - Новоприбывший
 - Сообщения: 2
 - Зарегистрирован: 14 окт 2010, 13:08
 - Репутация: 0
 
Re: Привязка тайлов Яндекс карт к координатам
Блин, h заставил подозревать, что оно гиперболическое...но на arcth показалось непохоже.
Спасибо большое.
			
			
									
						
										
						Спасибо большое.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей