Имеются географические координаты(широта и долгота) какого-то объекта как определить координаты этого объекта в тайле?
тоесть как можно перевести широту и долготу в пиксели тайла?
Читал на каком то форуме что нужно перевести географические к-ты в к-ты пиксела, затем результат делить на 256, целая часть результата - это номер тайла, остаток - точка пиксела на тайле.
делаю так:
- Код: Выделить всё
double longitude = ((Math.PI / 180) * xx); //переводим в радианы
double latitude = ((Math.PI / 180) * yy);
float Rn = 6378137f; // Экваториальный радиус
float ee = 0.0818191908426f; // Эксцентриситет
double esinLat = (ee * Math.Sin(latitude));
double tan_temp = Math.Tan(Math.PI / 4.0 + latitude / 2.0);
double pow_temp = Math.Pow(Math.Tan(Math.PI / 4.0 + Math.Asin(esinLat) / 2), ee);
double U = tan_temp / pow_temp;
//Преобразование меркаторовых координат в тайловые (пиксели на поседнем масштабе)
double x = Rn * longitude, y = Rn * Math.Log(U);
float equatorLength = 40075016.685578488f; //Длина экватора
double worldSize = Math.Pow(2, 31); // Размер мира в пикселях
double a = worldSize / equatorLength;
double b = equatorLength / 2;
X = Convert.ToInt32(Math.Round((b + x) * a)); //округляем
Y = Convert.ToInt32(Math.Round((b - y) * a));
X_tile=X % 256;
X_tile=Y % 256;
В результате получается какой-то бред:(
Помогите пожалуйста, может быть в формулах ошибка? или они вообще не верные?