На чем может быть построена проекция Миллера?

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
evgen_sobolev
Активный участник
Сообщения: 104
Зарегистрирован: 02 мар 2014, 09:12
Репутация: 0

На чем может быть построена проекция Миллера?

Сообщение evgen_sobolev » 22 окт 2014, 11:10

Здравствуйте!
Пытаюсь разобраться с проекцией Миллера, а конкретно на чем она может быть построена, на эллипсоидах или только на сферах?
Просто смотрю в Бугаевском-1998-Математическая картография, там так же как на вики:

https://ru.wikipedia.org/w/index.php?ti ... 1%80%D0%B0

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

Так же для макроязыка EASI(http://gis-lab.info/qa/easi3.html), проекция Миллера поддерживается только для сферы.

Объясните пожалуйста я прав или заблуждаюсь?

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: На чем может быть построена проекция Миллера?

Сообщение trir » 22 окт 2014, 11:19

А зачем тогда здесь
SPHEROID["WGS_1984",6378137,298.257223563]

evgen_sobolev
Активный участник
Сообщения: 104
Зарегистрирован: 02 мар 2014, 09:12
Репутация: 0

Re: На чем может быть построена проекция Миллера?

Сообщение evgen_sobolev » 22 окт 2014, 11:23

Да, тоже видел, но тогда я не понимаю какой радиус стоит в формуле из книги Бугаевского?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: На чем может быть построена проекция Миллера?

Сообщение SergeyRyzhkov » 22 окт 2014, 11:28

Miller Cylindrical только на сфере.

Приведенное описание http://spatialreference.org/ref/esri/54003/html/ тут ни причем, это просто принятое в WKT описание датума (вернее элипсоида в нем)

evgen_sobolev
Активный участник
Сообщения: 104
Зарегистрирован: 02 мар 2014, 09:12
Репутация: 0

Re: На чем может быть построена проекция Миллера?

Сообщение evgen_sobolev » 22 окт 2014, 11:31

А можно источник где прочитать, мол, Цилиндрическая Миллера строится только на сфере?

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: На чем может быть построена проекция Миллера?

Сообщение SergeyRyzhkov » 22 окт 2014, 11:49

evgen_sobolev писал(а):А можно источник где прочитать, мол, Цилиндрическая Миллера строится только на сфере?
Честно говоря тут строго не подскажу. Я сужу по формулам
https://ru.wikipedia.org/wiki/%D0%A6%D0 ... ite_note-1

evgen_sobolev
Активный участник
Сообщения: 104
Зарегистрирован: 02 мар 2014, 09:12
Репутация: 0

Re: На чем может быть построена проекция Миллера?

Сообщение evgen_sobolev » 22 окт 2014, 11:53

Я поправил формулу исходя из книги Бугаевского, до этого там не стояли радиусы вообще)

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: На чем может быть построена проекция Миллера?

Сообщение SergeyRyzhkov » 22 окт 2014, 12:00

:)
В proj4
код такой:

Код: Выделить всё

#define PJ_LIB__
# include	<projects.h>
PROJ_HEAD(mill, "Miller Cylindrical") "\n\tCyl, Sph";
FORWARD(s_forward); /* spheroid */
	xy.x = lp.lam;
	xy.y = log(tan(FORTPI + lp.phi * .4)) * 1.25;
	return (xy);
}
INVERSE(s_inverse); /* spheroid */
	lp.lam = xy.x;
	lp.phi = 2.5 * (atan(exp(.8 * xy.y)) - FORTPI);
	return (lp);
}
FREEUP; if (P) pj_dalloc(P); }
ENTRY0(mill) P->[b]es = 0[/b].; P->inv = s_inverse; P->fwd = s_forward; ENDENTRY(P)
Код proj4net

Код: Выделить всё

 xy.X = lplam;
 xy.Y = Math.Log(Math.Tan(ProjectionMath.PiFourth + lpphi * .4)) * 1.25;
 return xy;
Код в proj4js

Код: Выделить всё

exports.forward = function(p) {
  var lon = p.x;
  var lat = p.y;
  /* Forward equations
      -----------------*/
  var dlon = adjust_lon(lon - this.long0);
  var x = this.x0 + this.a * dlon;
  var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;

  p.x = x;
  p.y = y;
  return p;
};
Код в MapExpress:

Код: Выделить всё

public override ICoordinate Project (GeographicCoordinate geographCoordinate)
        {
            var latRad = MathUtil.DegToRad (geographCoordinate.Lat);
            var lonRad = MathUtil.DegToRad (geographCoordinate.Lon);
            var dlon = AdjustLon (lonRad - MathUtil.DegToRad (Parameters.CentralMeridian));
            var x = Parameters.FalseEasting + Parameters.SemiMajor * dlon;
            var y = Parameters.FalseNorthing + Parameters.SemiMajor * Math.Log (Math.Tan ((Math.PI / 4) + (latRad / 2.5))) * 1.25;

            return new Coordinate (x, y);
        }

evgen_sobolev
Активный участник
Сообщения: 104
Зарегистрирован: 02 мар 2014, 09:12
Репутация: 0

Re: На чем может быть построена проекция Миллера?

Сообщение evgen_sobolev » 22 окт 2014, 12:09

Ну и еще в книге: Snyder - 1987 - Map projections--a working manual
говорится что нет эквивалента для эллипсоида

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: На чем может быть построена проекция Миллера?

Сообщение SergeyRyzhkov » 22 окт 2014, 12:34

Кстати Ваш вопрос, косвенно подтверждает, что нельзя "тупо" верить никому :) , кроме первоисточников. :)
В англ.версии википедии нет радиуса,
в proj4 как бы вы не старались, а на другом эллипсоиде не получится применить проекцию (так как в коде не используется радиус и используется по умолчанию WGS84), а в некоторых проекциях в proj4 в коде явно прошиты параметры эллипсоидов и никакие изменения параметров не повлияют на расчеты ...

Ответить

Вернуться в «Я новичок!»

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

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