SASGIS

Веб-картография и навигация

Вопрос от новичка

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Вопрос от новичка

Сообщение verywell » 19 фев 2009, 23:13

Ну во-первых спасибо авторам за программу, оч полезно.
Для меня это дело новое, поэтому вопрос может показаться "детским"-
- как (алгоритм) по физ.координатам точки и зуму определить путь и имя тайла в кэше, ну и в продолжение - положение точки внутри самого тайла?
Может плохо искал, но ФАКа я тут не нашел.
verywell
Новичок
 
Сообщения: 6
Зарегистрирован: 19 фев 2009, 23:04
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос от новичка

Сообщение feya » 19 фев 2009, 23:27

Посмотрите в исходниках, см. соответствующую ветку.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Вопрос от новичка

Сообщение verywell » 19 фев 2009, 23:42

Извиняюсь, исходники это где ?
verywell
Новичок
 
Сообщения: 6
Зарегистрирован: 19 фев 2009, 23:04
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос от новичка

Сообщение Vasya » 20 фев 2009, 02:04

Ну дожились...
Тем не так много, а найти нельзя.
Держи - http://sasgis.org/src.exe
Аватара пользователя
Vasya
Советчик
 
Сообщения: 266
ICQ: 137791
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.

Re: Вопрос от новичка

Сообщение verywell » 02 мар 2009, 09:44

В Делфях не очень, потому из найденого на форуме:

result:=path+'\z'+zoom+'\'+(x div 1024)+'\x'+x+'\'+(y div 1024)+'\y'+y+ext;
где
path - путь к папке кэша
zoom – уровень масштаба
x,y – позиция тайла относительно левого верхнего угла карты.

в свою очередь X и Y определяются как

NumTiles[Level] = 2 ^ (Level-1) {- Count of tiles along one of sides of bitmap}
BitmapSize[Level] = NumTiles[Level] * 256
BitmapOrigo[Level] = BitmapSize[Level] / 2 {- position (pixel) of center of tile.}

PixelsPerLonDegree[Level] = BitmapSize[Level] / 360
PixelsPerLonRadian[Level] = BitmapSize[Level] / (2*PI)


X = floor(BitmapOrigo[Level] + Lon * PixelsPerLonDegree[Level]);
Y = floor(BitmapOrigo[Level] - 0.5 * ln((1+z)/(1-z)) * PixelsPerLonRadian[Level]),
where z = sin(Lat).

где Lon и Lat физические координаты точки.

Но что-то не получается, где я не прав?
verywell
Новичок
 
Сообщения: 6
Зарегистрирован: 19 фев 2009, 23:04
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос от новичка

Сообщение feya » 02 мар 2009, 11:07

verywell

z:=sin(lat*(2*PI));
c:=(BitmapSize[Azoom]/(2*Pi));
Y:=round(BitmapSize[Azoom]/2-0.5*ln((1+z)/(1-z))*c);

Это для меркатора на сфере.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Вопрос от новичка

Сообщение verywell » 02 мар 2009, 21:23

Что-то странно, Х определяется верно, Y - совсем "не туда".
Вот такой алгоритм вроде "ближе" к правде дает, но все равно мимо (это не совсем Делфи, но думаю понятно)

xLevel = 17
xNumTiles = 2^(xLevel-1)
BitmapSize = xNumTiles*256
BitmapOrigo = BitmapSize / 2
Xpix = floor(BitmapOrigo * (1+Lon/180))
X=INT(Xpix/256)

Z=SIN(xLat)
Ypix=FLOOR(BitmapOrigo * (1 - 0.5 * LOG( (1+Z)/(1-Z) ))/PI())
Y = INT(Ypix/256)
verywell
Новичок
 
Сообщения: 6
Зарегистрирован: 19 фев 2009, 23:04
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос от новичка

Сообщение verywell » 02 мар 2009, 21:37

Если не трудно, какой путь к тайлу для
xLat = 42.886328125
xLon = 71.3614339192
zoom=17

мож я совсем туплю и неверно считаю?
verywell
Новичок
 
Сообщения: 6
Зарегистрирован: 19 фев 2009, 23:04
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Вопрос от новичка

Сообщение feya » 03 мар 2009, 10:04

verywell
Вам для какой карты надо? Я вам дал для меркатора на сфере (гугл, dg и тп)
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Вопрос от новичка

Сообщение verywell » 04 мар 2009, 09:09

feya писал(а): verywell
Вам для какой карты надо? Я вам дал для меркатора на сфере (гугл, dg и тп)


для гугла-сат, надо использовать ваш кэш для своих нужд. Т.е. стандартная задача - для точки с Lat/Lon определить путь и имя тайла из кэша, соответсвенно знать и окружающие тайлы, по вашим формулам X определяется правильно, Y нет. Если не сложно, то прямо по пунктам как это сделать?
verywell
Новичок
 
Сообщения: 6
Зарегистрирован: 19 фев 2009, 23:04
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в SAS.Планета

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

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