Проекции СССР в Mapinfo (и пр.)

Обсуждение материалов сайта: вопросы, замечания, предложения
Ответить
Boris
Гуру
Сообщения: 4175
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 425
Откуда: Париж

Проекции СССР в Mapinfo (и пр.)

Сообщение Boris » 06 апр 2014, 22:12

Хочу спросить совета и помощи. По своим надобностям я пытался в Mapinfo отобразить карту РФ. Как и было много раз сказано на форуме (вот про Mapinfo непосредственно, я не нашел) Чукотка за 180 градусом рисуется отдельным фрагментом. Если Чукотка нарисована один фрагментом, то при отображении карты СССР ее правая часть становится "крайне-левой", в практически во всех проекциях.
Стандартные проекции Ести-Мап:

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

"--- Прямые конические проекции России и бывш. СССР ---"
"Равноугольная Ламберта-Гаусса (СССР)", 3, 1001, 1, 100, 54, 50, 70, 0, 0
"Равнопромежуточная Каврайского (СССР)", 6, 1001, 1, 100, 54, 47, 62, 0, 0
"Равнопромежуточная Каврайского (Европ. ч. СССР)", 6, 1001, 1, 40, 54, 47, 62, 0, 0
"Равнопромежуточная (РСФСР)", 6, 1001, 1, 100, 54, 49, 68.5, 0, 0
имеют то же изъян.

Совершенно случайно, я нашел 4 проекции:

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

"--- Мелкомасшбаные проекции проекции России и бывш. Российской империи (с) --- "
"Азимутальная равноплощадная проекция Ламберта для РФ (105 в.д., 54 с.ш.; охват 90)", 29, 104, 7, 105, 54, 90
"Азимут. равнопромежуточная для РФ (105 в.д., 54 с.ш.; охват 90)", 28, 104, 7, 105, 54, 90
"Стереографическая (105 в.д., 54 с.ш.)", 20, 74, 7, 105, 54, 0.9996, 5000000, 1000000
"Double Stereographic for Russia WGS84 (105 в.д., 54 с.ш.)", 31, 104, 7, 105, 54, 0.999912, 5000000, 1000000
которые позволяют отобразить Чукотку как единый объект:
Clipboard03.png
Clipboard03.png (49.56 КБ) 5186 просмотров
Они имеют 2 параметра, которые позволяют "поиграть" видом отображения и соответственно искажениями.
Как я понимаю эта часть суши в мире единственная с такой проблемой в отображении, поэтому ждать, что в ГИС массово озаботятся нашей локальной трудностью - не стоит.
Поэтому я готов написать маленькую статью о найденной возможности отображении СССР/РФ в виде не прерывного объекта в Mapinfo. Но для статьи это как то маловато. Хотелось бы включить информацию о других ГИС из чужого опыта, в том числе как этот вопрос решен в GDAL/OGR, как я понимаю кто то в этом уже разбирался.
Я готов создать текст, который:
  • представит найденные проекции Mapinfo
  • представит аналогичные проекции из других ГИС
  • представит расчет искажений площади на примере "300 км кружочков", как расчет отношения между проекционной и сферической площадями. Mapinfo имеет такую функцию, как остальные ГИС - не знаю.
  • нужен совет как оценить искажения расстояний, в том числе и о каких расстояниях имеет смысл вести речь, т.к. я понимаю теория говорит об искажениях бесконечно малых расстояний, но кому они интересны?
  • нужен совет как оценить искажения направлений. Не смог сразу найти как в Mapinfo нарисовать дугу большого круга ;(
  • обобщить опыт: "Лучшие проекции для отображения СССР/РФ".

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2117
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1407
Откуда: Казань

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение Игорь Белов » 07 апр 2014, 07:20

Если я правильно понимаю проблему с Чукоткой, она рассмотрена в статье Карта мира с произвольным центральным меридианом в MapInfo.
Кратко суть:
  • MapInfo не сворачивает объекты вокруг меридиана-антипода, отстоящего от центрального на 180°;
  • эту заботу должен взять на себя картограф.
Говоря просто, для отображения на карте с центральным меридианом 100° надо резать и перемещать объекты карты так, чтобы они оказались в интервале долгот от −80° до 280°.

Чтобы не быть голословным, переместим кусок Чукотки на 360° к востоку и построим карту в проекции

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

"Равнопромежуточная (РСФСР)", 6, 1001, 1, 100, 54, 49, 68.5, 0, 0
Clipboard1.png
Равнопромежуточная (РСФСР)
Clipboard1.png (26.06 КБ) 5161 просмотр
Очень интересна как раз тема искажений. Математическая картография — это серьёзно!

Искажения значительных расстояний в MapInfo можно оценивать через соотношение длин на сфере и в проекции.

Строить дуги больших кругов в MapInfo было бы проще, если бы в его математике была гномоническая проекция. А так остаётся строить азимутальные проекции, в которых большими кругами являются прямые, проходящие через центральную точку проекции.

Я рекомендовал бы обратиться к утилите geod из PROJ.4, она умеет ставить точки вдоль дуги большого круга. Кстати, она умеет расставлять точки по малым кругам заданного радиуса, так что может быть использована и для построения индикатрис.
Последний раз редактировалось Игорь Белов 07 апр 2014, 16:21, всего редактировалось 1 раз.
The purpose of computing is insight, not numbers

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Статьи: 3
Проекты: 5/1
Репутация: 790
Ваше звание: званий не имею
Откуда: Москва

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение Александр Мурый » 07 апр 2014, 10:14

Boris, создайте, пож-та, черновик в вики с описанием проблемы, пробными данными и т.д. А если бы скооперироваться с ErnieBoyd, то получилась бы шикарная статья :)
Редактор материалов, модератор форума

gurin
Новоприбывший
Сообщения: 5
Зарегистрирован: 08 июн 2021, 18:47
Репутация: 0
Откуда: не понял вопроса

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение gurin » 08 июн 2021, 19:38

Доброе время суток.

Тоже возникла проблема с Чукоткой.
Сейчас я использую GDAL со следующими параметрами:
gdal_translate -a_srs "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs" -of GTiff -co "INTERLEAVE=PIXEL" -a_ullr 30644300 7542200 31156300 7081400 "temp_76071_3285.bmp" "temp_76071_3285.tif"

С ними он режет Чукотку на 2 части - восточную и западную.
Подскажите, как сделать так, чтобы он не делил?

Из вышеописанного я, к сожалению, мало что понял, как этим воспользоваться.

Boris
Гуру
Сообщения: 4175
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 425
Откуда: Париж

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение Boris » 08 июн 2021, 20:28

gurin писал(а):
08 июн 2021, 19:38
С ними он режет Чукотку на 2 части - восточную и западную.
Подскажите, как сделать так, чтобы он не делил?
Для начала, расскажите "что" и "зачем" или "с какой целью" вы делаете. параметр "-a_srs" просто перезаписывает конечную проекцию, как я понимаю на, "Гаусс-Крюгер СК-(подскажите какую) зона 30".
Изображение
Это половина Чукотки. На исходной карте (в какой проекции?) Чукотка отображена целиком?

gurin
Новоприбывший
Сообщения: 5
Зарегистрирован: 08 июн 2021, 18:47
Репутация: 0
Откуда: не понял вопроса

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение gurin » 08 июн 2021, 21:15

Есть растр, который надо наложить в MapInfo по координатам, находящимся на Чукотке. На входе растр и координаты СК-42. Зона да, 30. На выходе нужно получить tif и tab-файл с координатами WGS-84. Часть растра попадает на восточное полушарие, а часть - на западное. GDAL делает tiff шириной во всю Землю, где в левой части рисует часть растра, который попадает в западное полушарие, а в правой - то что осталось в восточном. По середине - прозрачный цвет. TAB при этом формирует для полученного tif так, что бы он начал отображаться с левого полушария.

Прикрепил архив
1.rar
(1007.43 КБ) 52 скачивания
. В нем Screenshot_1.bmp - исходный растр (из-за больших размеров сделал копию экрана), temp_61378_284.bat - командный файл, который конвертирует, Screenshot_2.bmp - как выглядит после конвертации, Screenshot_3.bmp - из-за чего так выглядит - кусочек растра попал в восточное полушарие (выделил красным).

Вот эта строка: gdalwarp -t_srs EPSG:3395 "temp_61378_284.tif" "temp_61378_284.3395.tif" и делает тот самый tif, шириной во всю землю

Boris
Гуру
Сообщения: 4175
Зарегистрирован: 10 апр 2006, 22:34
Статьи: 3
Проекты: 1
Репутация: 425
Откуда: Париж

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение Boris » 08 июн 2021, 21:38

Я ответил в параллельной ветке - не надо использовать WGS84 как плоскую СК - она в Mapinfo для хранения данных, но не для отображения.
Отойдите от мечты "один раст" к реальности "два растра" и только в подходящей для совместного отображения двух частей Чукотки в Mapinfo проекции - и сразу станет проще.
Я могу ошибаться, но присланный растр - это раскраска SRTM или какого-то ее аналога. ЦМР в нескольких форматах Mapinfo умеет читать напрямую, и неплохо отображать в виде тематических карт.
А для того, что бы получать экранные или иные координаты в WGS84 в Mapinfo не обязательно растр хранить в нем.

gurin
Новоприбывший
Сообщения: 5
Зарегистрирован: 08 июн 2021, 18:47
Репутация: 0
Откуда: не понял вопроса

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение gurin » 08 июн 2021, 22:08

Нет, присланный растр построен в программе. Там есть и другие, которые отображают информацию не относящуюся к рельефу. Не очень понял фразу "она в Mapinfo для хранения данных, но не для отображения". Для того, чтобы MapInfo что-то отобразил нужно же его сначала сохранить? И я вроде как раз преобразую плоский растр СК в WGS84 как раз для того, чтобы он нормально отобразился. Два растра кончено можно сделать, но там возникает две проблемы - как их делить, если после конвертации они поворачиваются и точно так же могут зацепить восточное полушарие, и вторая проблема - второй растр то отобразится в западном полушарии, т.к. по сути он там и находится. GDAL собственно правильно делает, только мне надо по другому и я видел, что так можно сделать - но не знаю как.

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2117
Зарегистрирован: 04 янв 2011, 22:00
Статьи: 12
Проекты: 1
Репутация: 1407
Откуда: Казань

Re: Проекции СССР в Mapinfo (и пр.)

Сообщение Игорь Белов » 10 июн 2021, 00:30

1. Проекция растра Nomer-zony-dla-SK42

Это цилиндрическая равнопромежуточная проекция.

Квадратные трапеции дают значение 48.2 для параметра "Standard Parallel 1".

Проблему со сворачиванием слоёв на меридиане 180° должен решить выбор параметра "Origin, Longitude". Будет логично принять значение долготы меридиана 90°, делящего карту пополам. И вот здесь вылезает баг: задать этот параметр невозможно. Вопреки документации, программа интерпретирует параметр как "Origin, Latitude".

К счастью, прямые цилиндрические проекции обладают замечательным свойством взаимозамеяемости (почти) параметров "Origin, Longitude" и "False Easting".

В MAPINFOW.PRJ добавим проекцию:

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

"Nomer-zony-dla-SK42", 33, 1001, 7, 0, 48.2, -6677938.041251306422, 0
В файле привязки Nomer-zony-dla-SK42.TAB, созданном в географической системе координат, заменим CoordSys:

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

CoordSys Earth Projection 33, 1001, "m", 0, 48.2, -6677938.041251306422, 0
Units "degree"
2. Трансформирование растра Screenshot_1.png

Добавим привязку (уже было в BAT-файле):

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

gdal_translate -a_srs EPSG:28430 -a_ullr 30644300 7542200 31156300 7081400 Screenshot_1.png Screenshot_1.tif
Трансформируем:

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

gdalwarp -t_srs "+proj=eqc +lat_ts=48.2 +lat_0=0 +lon_0=90 +x_0=0 +y_0=0 +ellps=krass +units=m +no_defs" Screenshot_1.tif Screenshot_1_transformed.tif
В MapInfo открываем растр Screenshot_1_transformed.tif. На вопрос о проекции указываем "Nomer-zony-dla-SK42".

P. S. В 8 утра по МСК текст изменился, как и архив Screenshot_1_transformed.zip
Вложения
Nomer-zony-dla-SK42.zip
(793.33 КБ) 126 скачиваний
Screenshot_1_transformed.zip
(1011.7 КБ) 72 скачивания
Screenshot_2021-06-09_22-42-38.png
Screenshot_2021-06-09_22-42-38.png (239.52 КБ) 255 просмотров
The purpose of computing is insight, not numbers

Ответить

Вернуться в «Материалы сайта»

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

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