Из Mercator в Equirectangular(Простая цилиндр.проекция)

Системы координат, проекции, преобразования, привязка
SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 02 апр 2010, 11:26

Та самая система координат, которую использует Меркатор. :mrgreen:
lat/lon.
Можно ввести эти пары через запятую в гугл-мапс и получите правильную картинку.
Вы уж извините меня за мою необразованность в этих вопросах...

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение JEY » 02 апр 2010, 11:57

Хорошо, тогда так:

Формулы для получения координат в простой цилиндрической проекции очень простые.

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 в радианы.

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 02 апр 2010, 13:56

Позвольте предположить, что либо я не совсем корректно объяснил, либо вы неправильно поняли меня. Либо же расчеты не верны.

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

, то получим примерно один и тот же результат. Разница будет заметна ближе к полюсам...а на Экваторе ее не будет.

Моя практическая задача состоит в том, чтоб правильно расчитать координаты для отображения на полученной картинке карты своей точки, то есть пересчитать координаты этой точки в Икс и Игрек. Но координаты этих точек расчитаны в гугловском Меркаторе..
В общем, я понимаю, что должна существовать какая-то зависимость(не прямая) между координатами меркатора и Простой цилиндрической проекции. такк ведь?

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 02 апр 2010, 14:30

Короче, очень дурацкий этот мапквест...Нашел по нему кое-какие доки..Ща буду разбираться.

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение JEY » 02 апр 2010, 15:16

Можно так сказать, что я действительно не понял Вашего вопроса до конца. Вы написали, что проекция Меркатора использует широту и долготу. Это было первой ошибкой. А потом Вы добавили координаты точек, не указав где именно широта, а где долгота. Это было второй ошибкой.

Я ответил наугад, и как выяснилось, неправильно.

Позвольте Вас поправить. В проекции Меркатора единицами измерения являются метры. Я думал, что это Вы знаете, поэтому не стал Вас поправлять в самом начале, и предположил, что координаты измерены в градусах, минутах и секундах. Если Вы определитесь, где именно широта и долгота у Ваших точек, то вполне можете воспользоваться предложенными мною формулами.

В одном Вы правы. Разница между проекциями действительно заметна по приближению к полюсам. Проекция Меркатора заметно "вытягивается" ближе к северному или южному полюсу. Простая цилиндрическая проекция таким искажениям не подвержена.

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 02 апр 2010, 16:44

Может вы сможете подсказать в задаче, смотрите.
мапквест имеет вот такие 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?

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 02 апр 2010, 18:51

SCALE-это что. каких едениц в чем?

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение JEY » 06 апр 2010, 08:27

Честно говоря, не совсем понятно за что эти переменные конкретно отвечают. Я думаю, что ознакомиться с документацией разработчика по этому программному продукту не помешало бы...

Ясно одно - TILESIZE : 256 - имеется в виду размер одного фрагмента 256х256 пикселей; PIXELSPERLATDEGREE : 315552459.66191697 - здесь, количество пикселей на один градус по широте; PIXELSPERLNGDEGREE : 250344597.90989706 - и наконец, количество пикселей на один градус по долготе.

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 16 апр 2010, 10:12

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
);

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 16 апр 2010, 10:13

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
);

Аватара пользователя
JEY
Активный участник
Сообщения: 228
Зарегистрирован: 17 июл 2008, 13:42
Репутация: 1

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение JEY » 16 апр 2010, 12:23

Понятно. Из Вашего сообщения я только увидел набор параметров для поддержки работоспособности вышеописанных Вами функций...

SAHbKA
Интересующийся
Сообщения: 16
Зарегистрирован: 01 апр 2010, 13:51
Репутация: 0

Re: Из Mercator в Equirectangular(Простая цилиндр.проекция)

Сообщение SAHbKA » 20 апр 2010, 09:55

Именно. Эта информация оказывается не валяется в просторах интернета повсюду:) может когда-нить кому-нить пригоидтся для отрисовывания собственных объектов на полученных картах

Ответить

Вернуться в «Координаты и привязка»

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

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