Страница 2 из 2
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 11:26
SAHbKA
Та самая система координат, которую использует Меркатор.
lat/lon.
Можно ввести эти пары через запятую в гугл-мапс и получите правильную картинку.
Вы уж извините меня за мою необразованность в этих вопросах...
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 11:57
JEY
Хорошо, тогда так:
Формулы для получения координат в простой цилиндрической проекции очень простые.
Y = WGS84a * Latitude; X = WGS84a * (Longitude - Original Longitude), где WGS84a = 6378137, а Original Longitude = 0.
Таким образом, если под обозначением X, Вы подразумеваете широту, а Y - это, соответственно, долгота:
X1 = 3 201 089,917; Y1 = -9 047 688,776
X2 = 3 201 161,165; Y2 = -9 047 593,304
Перед вычислением координат, не забудьте перевести Latitude, Longitude и Original Longitude в радианы.
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 13:56
SAHbKA
Позвольте предположить, что либо я не совсем корректно объяснил, либо вы неправильно поняли меня. Либо же расчеты не верны.
http://geowebguru.com/articles/201-choo ... ion-part-1
Вот статья, в которой говорится о 2х рахных проекциях - Меркаторе и так называемом Equirectangular- простой цилиндрической проекции. Меркатор используется в гугл картах, Простая- в Мапквесте. И разница между ними в координатах невелика, то есть если ввести координаты "28.755879987283,-81.276771135333" в
http://maps.google.com, вот результат (
http://maps.google.com.ua/maps?f=q&sour ... tk&ie=UTF8 )
и эти же координаты в Мапквесте -
http://www.mapquestapi.com/staticmap/v3 ... 6&type=map
, то получим примерно один и тот же результат. Разница будет заметна ближе к полюсам...а на Экваторе ее не будет.
Моя практическая задача состоит в том, чтоб правильно расчитать координаты для отображения на полученной картинке карты своей точки, то есть пересчитать координаты этой точки в Икс и Игрек. Но координаты этих точек расчитаны в гугловском Меркаторе..
В общем, я понимаю, что должна существовать какая-то зависимость(не прямая) между координатами меркатора и Простой цилиндрической проекции. такк ведь?
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 14:30
SAHbKA
Короче, очень дурацкий этот мапквест...Нашел по нему кое-какие доки..Ща буду разбираться.
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 15:16
JEY
Можно так сказать, что я действительно не понял Вашего вопроса до конца. Вы написали, что проекция Меркатора использует широту и долготу. Это было первой ошибкой. А потом Вы добавили координаты точек, не указав где именно широта, а где долгота. Это было второй ошибкой.
Я ответил наугад, и как выяснилось, неправильно.
Позвольте Вас поправить. В проекции Меркатора единицами измерения являются метры. Я думал, что это Вы знаете, поэтому не стал Вас поправлять в самом начале, и предположил, что координаты измерены в градусах, минутах и секундах. Если Вы определитесь, где именно широта и долгота у Ваших точек, то вполне можете воспользоваться предложенными мною формулами.
В одном Вы правы. Разница между проекциями действительно заметна по приближению к полюсам. Проекция Меркатора заметно "вытягивается" ближе к северному или южному полюсу. Простая цилиндрическая проекция таким искажениям не подвержена.
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 16:44
SAHbKA
Может вы сможете подсказать в задаче, смотрите.
мапквест имеет вот такие 16 зумов
SCALES : new Array( 0, 88011773, 29337258, 9779086, 3520471, 1504475, 701289, 324767, 154950, 74999, 36000, 18000, 9000, 4700, 2500, 1500, 1000 ),
И такие данные
PIXERSPERLATDEGREE : 315552459.66191697
PIXERSPERLNGDEGREE : 250344597.90989706
TILESIZE : 256,
можно ли расчитать сколько Пикселей для каждого Зума в 1 lat/lng?
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 02 апр 2010, 18:51
SAHbKA
SCALE-это что. каких едениц в чем?
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 06 апр 2010, 08:27
JEY
Честно говоря, не совсем понятно за что эти переменные конкретно отвечают. Я думаю, что ознакомиться с документацией разработчика по этому программному продукту не помешало бы...
Ясно одно - TILESIZE : 256 - имеется в виду размер одного фрагмента 256х256 пикселей; PIXELSPERLATDEGREE : 315552459.66191697 - здесь, количество пикселей на один градус по широте; PIXELSPERLNGDEGREE : 250344597.90989706 - и наконец, количество пикселей на один градус по долготе.
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 16 апр 2010, 10:12
SAHbKA
public function lng2px($lng, $zoom)
{
return ($lng + 180.0) * ($this->PIXERSPERLNGDEGREE/ $this->getScale($zoom));
}
public function px2lng($x, $zoom)
{
return $x / ($this->PIXERSPERLNGDEGREE / $this->getScale($zoom)) - 180.0 ;
}
public function lat2px($lat, $zoom)
{
return ($lat + 90.0) * ($this->PIXERSPERLATDEGREE / $this->getScale($zoom));
}
public function px2lat($y, $zoom)
{
return $y / ($this->PIXERSPERLATDEGREE / $this->getScale($zoom)) - 90.0;
}
Перевод координат в градусах lat/lng в пиксели происходит для MAPQUEST а, который использует простую цилиндрическую проекцию ТАК.
$PIXERSPERLATDEGREE = 315552459.66191697,
$PIXERSPERLNGDEGREE = 250344597.90989706,
SCALES = array(
88011773,
29337258,
9779086,
3520471,
1504475,
701289,
324767,
154950,
74999,
36000,
18000,
9000,
4700,
2500,
1500,
1000
);
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 16 апр 2010, 10:13
SAHbKA
public function lng2px($lng, $zoom)
{
return ($lng + 180.0) * ($this->PIXERSPERLNGDEGREE/ $this->getScale($zoom));
}
public function px2lng($x, $zoom)
{
return $x / ($this->PIXERSPERLNGDEGREE / $this->getScale($zoom)) - 180.0 ;
}
public function lat2px($lat, $zoom)
{
return ($lat + 90.0) * ($this->PIXERSPERLATDEGREE / $this->getScale($zoom));
}
public function px2lat($y, $zoom)
{
return $y / ($this->PIXERSPERLATDEGREE / $this->getScale($zoom)) - 90.0;
}
Перевод координат в градусах lat/lng в пиксели происходит для MAPQUEST а, который использует простую цилиндрическую проекцию ТАК.
$PIXERSPERLATDEGREE = 315552459.66191697,
$PIXERSPERLNGDEGREE = 250344597.90989706,
SCALES = array(
88011773,
29337258,
9779086,
3520471,
1504475,
701289,
324767,
154950,
74999,
36000,
18000,
9000,
4700,
2500,
1500,
1000
);
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 16 апр 2010, 12:23
JEY
Понятно. Из Вашего сообщения я только увидел набор параметров для поддержки работоспособности вышеописанных Вами функций...
Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)
Добавлено: 20 апр 2010, 09:55
SAHbKA
Именно. Эта информация оказывается не валяется в просторах интернета повсюду:) может когда-нить кому-нить пригоидтся для отрисовывания собственных объектов на полученных картах