Перепроецирование растра на основе файла проекций mapinfo

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
special K
Участник
Сообщения: 52
Зарегистрирован: 12 май 2010, 23:22
Репутация: 0

Перепроецирование растра на основе файла проекций mapinfo

Сообщение special K » 13 апр 2011, 17:24

Имеется растр (.tif) и .tab файл, и конечно файл проекций .prj. Я хочу:
- перепроецировать растр из исходной системы координат в меркатор;
- записать параметры cs2cs, чтобы я мог пересчитывать координаты вершин из одной системы в другую.
Короче, вопрос наверно превращается в "Можно ли записать параметры из файла .prj в cs2cs?"
Мне не понятно, когда я открываю .tab файл, в какой системе оказывается изображение на экране, в той, которая указана в .tab файле?

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Донецков » 15 апр 2011, 09:33

Типичный образец записи tab для растрового файла (созданного на основе world-файла):
!table
!version 300
!charset WindowsCyrillic
Definition Table
File "x-26-21-x.png"
Type "RASTER"
(1551876.3834994766,6679737.363402077) (0,0) Label "Точка 1",
(1565754.9201250768,6680430.2302888567) (6558,0) Label "Точка 2",
(1552343.7886698199,6670374.9593106396) (0,4424) Label "Точка 3"
CoordSys Earth Projection 8, 1001, "m", хххххх, ууууууу, 1, aaaaaaa, 0
Units "m"
RasterStyle 4 1
RasterStyle 7 16777215
, где x,y,a - ваши значения для проекции Гаусса-Крюгера...

согласно этим параметрам изображение отображается на экране....

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Boris » 15 апр 2011, 18:00

special K писал(а):...
Мне не понятно, когда я открываю .tab файл, в какой системе оказывается изображение на экране, в той, которая указана в .tab файле?
На часть "..." вам ответили, так что на оставшееся. Растр открывается:
а) в системе координат окна, если оно уже было открыто ДО открытия присоединяемого растра, и в свойствах окна стоит "перепроецировать растр в СК окна".
б) в СК растра, если раст - первый слой нового окна (см. п. в как один из вариантов).
в) если НЕ стоит "перепроецировать растр в СК окна", имеется растр, который занимает большую площадь в текущем окне, чем остальные растры, даже если он скрыт из-за автомасштаба, - тогда автоматически будет выполнена трансформация содержимого окна так, что бы границы окна были параллельны границам растра. В свойствах окна такая СК будет иметь то же название, что СК, установленная в растре, но ОНА ею НЕ будет.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Boris » 15 апр 2011, 21:59

Небольшое дополнение:
а) GDAL понимает точки привязки и координатную систему растра формата TAB, хотя тут http://www.gdal.org/frmt_gtiff.html указано, что
If no georeferencing information is available in the TIFF file itself, GDAL will also check for, and use an ESRI world file with the extention .tfw, .tifw/.tiffw or .wld, as well as a MapInfo .tab file (only control points used, Coordsys ignored).
- что систему координат (СК) из TAB файла, он не использует.
Тем не менее, gdalinfo берет СК из TAB файла, причем читает ее именно как она задана в MapInfo, поскольку вставляет строку
Coordinate System is:
PROJCS["unnamed",
GEOGCS["unnamed",
DATUM["Pulkovo_1942",
SPHEROID["Krassovsky",6378245,298.3],
TOWGS84[24,-123,-94,0.02,-0.25,-0.13,1.1]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
что соответствует только MapInfo (см. http://gis-lab.info/qa/datum-transform-sets.html)
б) Это приводит к тому, что при перепроецировании с помощью

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

gdalwarp -co TFW=YES -co COMPRESS=LZW -overwrite -r near -t_srs EPSG:32637 2.tif 2_g.tif
исходную СК задавать не надо. С такими параметрами создается и TFW-файл, и теги GeoTIFF. Результат listgeo 2_g.tif ради экономии места приводить не буду, но он прописан именно как UTM37N. Прописанное понято MapInfo, т.к. она не задает вопросов о СК при открытии. Разница в растрах, открытых в одном окне в MapInfo, составила менее 0,5 метра.
в) для получения строки параметров cs2cs, проще всего перевести TAB файл, созданный в проекции растра, в SHP файл, в конечной проекции, с помощью ogr2ogr - тогда выходной PRJ файл с параметрами выходной СК будет создан автоматически. Или скопировать блок PROJCS из вывода программы gdalinfo в текстовый файл. :)
---
г) Global Mapper понимает TAB, а при выводе в TIF и создает его.

Аватара пользователя
Institor
Активный участник
Сообщения: 243
Зарегистрирован: 22 апр 2011, 08:10
Репутация: 27
Откуда: Хабаровск

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Institor » 04 окт 2012, 05:15

Подниму тему.
Имеется много (несколько тысяч) растровых планшетов. Система координат местная - задана аффинным преобразованием СК-42. Параметры известны, в mapinfo все открывается и работает.
В файле привязки строчка примерно такая:

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

CoordSys Earth Projection 3008, 9999, 3, 23.92, -141.27, -80.9, 0, -0.35, -0.82, -0.12, 0, 7, 135, 0, 1, 23500000, 0, 7, 1.00000xxxxxx, -0.00000xxxxxxxx, -2350xxxx.xxxxxxx, 0.00000xxxxxxx, 1.00000xxxxxxx, -53xxxxx.xxxxxxx, -50000, -50000, 150000, 150000
В общем, задано аффинное преобразование (+границы карты - последние 4 числа).

Нужно перевести эти координаты во что-то более общепринятое, например, ту же СК-42 (отменить аффинное).
Вручную в mapinfo в диалоге "таблица-растр-привязка" это делается, но файлов несколько тысяч...

GDAL такое не понимает, как видно (на выходе gdalinfo Coordinate System is ' ' - пустая строка).
Как бы это средствами mapinfo сделать? Может, кто-то знает?

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Донецков » 04 окт 2012, 07:41

Посмотрите http://mapbasic.ru/transcoor, он платный, но стоимость не велика,
и, естественно, эта строка с координатами должна быть заложена в prj программы...

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Boris » 04 окт 2012, 19:40

я знаю самый тупой вариант - пересчитать 4 (или сколько их там) точек, что прописаны в качестве координат в TAB файле. Ведь привязка держится только на этих точках и строке координатной системы, а - файл текстовый. В общем вот программа:
mi_tabRasterReproject.vbs.zip
(12.37 КБ) 569 скачиваний
Для Windows, запускать из командной строки. В программе есть справка о параметрах.

Аватара пользователя
Institor
Активный участник
Сообщения: 243
Зарегистрирован: 22 апр 2011, 08:10
Репутация: 27
Откуда: Хабаровск

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение Institor » 05 окт 2012, 01:17

Ничего себе "тупой" вариант! Спасибо, попробую.
Ну это, похоже, можно и в mapbasic написать - там есть функция извлечения координат точек привязки.
Неужели вышеупомянутый transcoor так и работает, перебирая в цикле точки и пересчитывая? Это печально...
Не теряю надежды найти все-таки магическую команду mapbasic'a для переписывания tab.
Есть, например, RegisterTable, но это не совсем то.

upd: протестировал transcoor (демо-версия) - не работает. Похоже, есть ограничение на длину строки проекции, ругается на пробел там, где должна быть скобка
Ошибка при выполнении программы !Встретилось [] там, где ожидается [)]
и далее
Индекс массива выходит за заданные пределы
Жаль.

Аватара пользователя
dab
Гуру
Сообщения: 671
Зарегистрирован: 16 дек 2011, 20:02
Репутация: 170
Ваше звание: Гуру
Откуда: Москва
Контактная информация:

Re: Перепроецирование растра на основе файла проекций mapinf

Сообщение dab » 12 окт 2012, 18:15

Institor писал(а):... upd: протестировал transcoor (демо-версия) - не работает. Похоже, есть ограничение на длину строки проекции, ругается на пробел там, где должна быть скобка
Если не затруднит, покажите(пришлите) Ваш tab файл.

Ответить

Вернуться в «Общий - ПО»

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

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