Пакетная перерегистрация растров
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Пакетная перерегистрация растров
Добрый день!
Помогите решить задачу средствами Мапинфо:
Есть множество растров, зарегистрированных в проекции гаусса-крюгера. Необходимо во всех них поменять проекцию на СК-63. Делается элементарно с одиночным растром - таблица-->регистриция растра-->смена проекции. Как автоматизировать этот процесс, написать макрос на мап-бейсике, чтоб можно было эту операцию проделать со всеми открытыми таблицами разом?
Помогите решить задачу средствами Мапинфо:
Есть множество растров, зарегистрированных в проекции гаусса-крюгера. Необходимо во всех них поменять проекцию на СК-63. Делается элементарно с одиночным растром - таблица-->регистриция растра-->смена проекции. Как автоматизировать этот процесс, написать макрос на мап-бейсике, чтоб можно было эту операцию проделать со всеми открытыми таблицами разом?
Последний раз редактировалось OlegSLB 23 сен 2014, 11:30, всего редактировалось 1 раз.
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Пакетная перерегистрация растров
именно мапой надо? имхо отлично годится gdal...
ин гроссен фамилен нихт клювен клац клац
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Re: Пакетная перерегистрация растров
что такое gdal?
- nadiopt
- Гуру
- Сообщения: 4744
- Зарегистрирован: 29 янв 2009, 13:27
- Репутация: 495
- Ваше звание: хрюкало
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Пакетная перерегистрация растров
ну вот например
viewtopic.php?f=30&t=17170
viewtopic.php?f=30&t=17170
ин гроссен фамилен нихт клювен клац клац
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Re: Пакетная перерегистрация растров
слишком заморочено. Да и не удобно, надо будет из формата в формат переводить. И мне не нужно как таковое перепроецирование, нужен просто пересчёт точек привязки между родственными системами координат самым простым и быстрым способом, без усложнения. Проекция там одна и та же. А gdal - это как из пушки по воробьям палить. Нужно что-то совсем простое, простейшая автоматизация рутинного процесса, по типу макросов в экселе. Чтоб просто записать последовательность действий в мапинфо средствами мап-бейсик и запустить её в цикл, для всех открытых растровых таблиц. Я сначала думал, что просто открыв окно мап-бейсик в мапинфо, можно будет увидеть команды, а дальше дело техники. Но в окне мап-бейсик ничего не отображается, когда делаешь регистрацию растра...
-
- Гуру
- Сообщения: 5292
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1015
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Пакетная перерегистрация растров
Вы сильно ошибаетесь!
- Игорь Лебедь
- Завсегдатай
- Сообщения: 452
- Зарегистрирован: 24 апр 2010, 19:47
- Репутация: 101
- Откуда: Город в клёнах и акациях
- Контактная информация:
Re: Пакетная перерегистрация растров
В ArcToolBox есть инструмент Define Projection, он Вам нужен, как я понимаю, чтобы запустить пакетно, надо правой кнопкой нажать и выбрать Batch. Если же надо именно перепроецировать, а не переопределить, то это инструмент ProjectRaster.
tab в tfw если что можно перевести утилитой gtt.exe (и обратно), такие вопросы здесь на форуме часто освещены, да и gdal'ом можно.
То есть метод каковой:
1. Конвертируете tab to tfw gtt'ой (для 100% уверенности, хотя arcmap в последних версиях вроде бы понимал tab-привязку.
2. Назначаете нужную проекцию (define projection).
3. Перемещаете старые табы в дальнюю папку, чтоб мапинфа их не увидела, и опять gtt-ой либо geotiff to tab (делает пакетно), либо tfw to tab.
tab в tfw если что можно перевести утилитой gtt.exe (и обратно), такие вопросы здесь на форуме часто освещены, да и gdal'ом можно.
То есть метод каковой:
1. Конвертируете tab to tfw gtt'ой (для 100% уверенности, хотя arcmap в последних версиях вроде бы понимал tab-привязку.
2. Назначаете нужную проекцию (define projection).
3. Перемещаете старые табы в дальнюю папку, чтоб мапинфа их не увидела, и опять gtt-ой либо geotiff to tab (делает пакетно), либо tfw to tab.
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Пакетная перерегистрация растров
а ведь ответ уже был... :
"Перепроецирование растра на основе файла проекций mapinfo"
и еще вот здесь
"Мелкие полезности из командной строки" ссылка на файл mi_VBS.rar
"Перепроецирование растра на основе файла проекций mapinfo"
и еще вот здесь
"Мелкие полезности из командной строки" ссылка на файл mi_VBS.rar
небольшое дополнение:производит пересчет точек привязки растровой таблицы MapInfo в указанную систему координат и
выводит новую таблицу в файл или поток StdOut.
параметры:
1. tabPath - путь к файлу таблицы Mapinfo (TAB - file)
2. coordsysStr - строка новой проекции в двойных кавычках. Двойные кавычки там, где синтаксис
MapInfo/MapBasic требует использования двойных кавычек("), следует заменить ординарными ('),
Это ограничение командной строки VBScript, которое уничтожает все двойные кавычки "
3. outTxt - путь к выходному файлу. ПО умолчанию - поток StdOut
4. OverWriteFile - перезаписывать существующий файл [Yes] или дополнять его [No]. По умолчанию - [No] (Дополнять)
для своей работы программа использует загруженную копию MapInfo
синтаксис команды:
mi_tabRasterReproject.vbs tabPath "coordsysStr" [OutFile] [OverWriteFile]
Обрабатываемый файл таблицы будет открыт в действующей копии Mapinfo и
информация о таблице будет считана стандартной функцией TableInfo().
Файл открывается с уникальным именем и закрывается после обработки.
Если в программе MapInfo будет уже открыт этот же файл, то произойдет ошибка,
и файл не будет обработан.
Код: Выделить всё
выполняется построчный пересчет строк привязки растра из исходной СК (она считывается из файла TAB) в новую, указанную в параметре. Изменяются ТОЛЬКО цифры, отвечающие за позиционирование растра "на земле". Ну и естественно изеняется строка СК для растра. Пересчет точек, как геообъектов, выполняется только средствами загруженной копии Mapinfo. Собственно в основном она для этого и нужна.
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Re: Пакетная перерегистрация растров
to Boris:
По сути программка делает то, что нужно. Но я что-то не понял, как с её помощью пакетно пересчитать все растры, если каждый раз надо ручками вбивать путь к таблице? О.о Это ж получается ещё более неудобно, чем просто через мапинфо перерегистрировать...
По сути программка делает то, что нужно. Но я что-то не понял, как с её помощью пакетно пересчитать все растры, если каждый раз надо ручками вбивать путь к таблице? О.о Это ж получается ещё более неудобно, чем просто через мапинфо перерегистрировать...
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Re: Пакетная перерегистрация растров
Неужели никто не написал до сих пор утилиту на мап-бейсике? Я весь инет перерыл. Ведь задача-то не из сложных. Для разбирающегося человека час работы. Можно конечно для этого установить арк-мап (ага, чтоб просто пересчитать точки привязки, устанавливать огромный гис-пакет), можно морочиться с командной строкой, с переводом из формата в формат... Но это же всё дико неудобно! Зачем было писать утилиту на vbs, используя при этом мапинфо, если логичнее и проще использовать предназначенный для этого мап-бейсик?
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Re: Пакетная перерегистрация растров
и ещё.. я видимо что-то не то делаю. Эта программка выдаёт мне ошибку, что TAB File not found... хотя путь написан правильно. Видимо я туповат для такого способа. Кстати, утилита transcoor делает то, что нужно, но платная
В общем, утилита должна работать так: указываем папку с привязанными растрами, указываем требуемую СК из файла prj, утилита перебирает все файлы, находящиеся в папке, пересчитывает координаты привязки, прописывает новую строчку системы координат. Вот и всё. Я думаю тут программка будет из десятка строчек на мап-бейсике.
В общем, утилита должна работать так: указываем папку с привязанными растрами, указываем требуемую СК из файла prj, утилита перебирает все файлы, находящиеся в папке, пересчитывает координаты привязки, прописывает новую строчку системы координат. Вот и всё. Я думаю тут программка будет из десятка строчек на мап-бейсике.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: Пакетная перерегистрация растров
Для пакетной обработки всех файлов из каталога в командной строке Windows есть команда for. Синтаксис выглядит страшновато, но разобраться можно.
http://microsin.net/adminstuff/windows/ ... files.html
Я бы на вашем месте не надеялся, что кто-то предложит решение "в одну кнопку". Люди, как правило, создают инструменты исходя из собственных задач. Большинству тех, кто занимается обработкой данных, проще работать с командной строкой. Это реально удобнее, даже под Windows, -- в том числе благодаря возможности пакетной обработки. Вам предложили несколько решений. Если какое-то из них не сработало -- попытайтесь разобраться в причинах или попробуйте другое.
Почему MapInfo проще использовать как COM-сервер из сторонних языков, а не писать на MapBasic? А вы сами попробуйте. Думаю, не сильно ошибусь, если отвечу, что этот язык несколько ущербен по дизайну, и многие вещи, которые делаются элементарно в языках общего назначения, в MapBasic вообще непонятно как сделать. К тому же его нужно компилировать. Я, например, пишу скрипты для MapInfo на Python, пусть это выглядит извращением.
Как написали выше, вашу задачу можно легко решить с помощью gdal_translate вообще без всякого программирования, одной строчкой в консоли. Попробуйте. Умение применять утилиты GDAL решит все ваши проблемы с растрами навсегда и вдобавок поможет оптимизировать растры, чтобы ускорить их открытие и сэкономить дисковое пространство. Единственное - GDAL не сгенерирует вам TAB-файлы привязки, но MapInfo сам создаст их при открытии GeoTiff, либо воспользуйтесь GTT.
http://microsin.net/adminstuff/windows/ ... files.html
Я бы на вашем месте не надеялся, что кто-то предложит решение "в одну кнопку". Люди, как правило, создают инструменты исходя из собственных задач. Большинству тех, кто занимается обработкой данных, проще работать с командной строкой. Это реально удобнее, даже под Windows, -- в том числе благодаря возможности пакетной обработки. Вам предложили несколько решений. Если какое-то из них не сработало -- попытайтесь разобраться в причинах или попробуйте другое.
Почему MapInfo проще использовать как COM-сервер из сторонних языков, а не писать на MapBasic? А вы сами попробуйте. Думаю, не сильно ошибусь, если отвечу, что этот язык несколько ущербен по дизайну, и многие вещи, которые делаются элементарно в языках общего назначения, в MapBasic вообще непонятно как сделать. К тому же его нужно компилировать. Я, например, пишу скрипты для MapInfo на Python, пусть это выглядит извращением.
Как написали выше, вашу задачу можно легко решить с помощью gdal_translate вообще без всякого программирования, одной строчкой в консоли. Попробуйте. Умение применять утилиты GDAL решит все ваши проблемы с растрами навсегда и вдобавок поможет оптимизировать растры, чтобы ускорить их открытие и сэкономить дисковое пространство. Единственное - GDAL не сгенерирует вам TAB-файлы привязки, но MapInfo сам создаст их при открытии GeoTiff, либо воспользуйтесь GTT.
-
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 20 сен 2014, 11:05
- Репутация: 5
Re: Пакетная перерегистрация растров
хм.. может для вас gdal и командная строка выглядят как привычные и простые инструменты, но для меня это просто тёмный лес. Я даже не знаю, с какой стороны к ним подступиться, всё на что меня хватило, это запустить кое-как эту программу из командной строки, да и то как правильно прописать все параметры я так и не понял. А тратить недели только на ознакомление с ними я не имею возможности. GDAL я так понимаю, это вообще не настольная гис с графическим интерфейсом, а какой-то набор библиотек, который ещё надо как-то заставить работать, знать консольные команды и пр. Я пытался упростить работу, а не усложнить её. Это как если бы я спрашивал "На каком автобусе мне доехать от пункта а до пункта б", а в ответ мне написали - "элементарно, собери своими руками вертолёт, научись им управлять, заправь его топливом, получи разрешение на полёты, освой навыки штурмана, проложи курс, а потом всё просто - за 5 минут долетишь"
-
- Гуру
- Сообщения: 4205
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: 433
- Откуда: Париж
Re: Пакетная перерегистрация растров
ужос... напоминает неприличный анекдот про девушку в Запорожце. Это кто же в вас такие страшные мысли загрузил "руками набирать"... ?OlegSLB писал(а):to Boris:
По сути программка делает то, что нужно. Но я что-то не понял, как с её помощью пакетно пересчитать все растры, если каждый раз надо ручками вбивать путь к таблице? О.о Это ж получается ещё более неудобно, чем просто через мапинфо перерегистрировать...
В целом странная постановка вопроса - "дайте это!". Видно ваша пакетная обработка в 10 растров укладывается. Для все остальных "пакет" начинается от 200. А когда файлов больше 1000, то вся эта мапинфо падает и нервно дрыгается. Особенно последние версии - шибко умные и интуитивно понятные, кои файл сразу в память запихнуть норовят не зависимо от того надо его на экран выводить или нет.
Писать "пакет" на мапбайсике ... . Что тут сказать. Я без мата не могу, а с матом правила форума не позволяют.
Нет пакетной обработки без команды FOR и командной строки. Все остальное извращение. Ну есть конечно какие то особые извращения в виде "берем GUI" и создаем в нем список файлов, а потом на них натравливаем перебор с вызовом программы а-ля командная строка. Но это еще поискать надо. Потому для тех у кого пакет и перебор, командная строка - это очевидное "и перебор и пакет в одном флаконе", а для всех остальных должен найтись добрый дядя, который напишет GUI а-ля командная строка и нужный вам перебор. И что с ним будет, когда он узнает, что этот GUI уже включен в 98% общедоступных ОС и называется он "командная строка"?
То есть в мире ГИС такой хромой велосипед о трех с половиной колесах есть - это тулбоксы в ArcGIS, где перебор к очевидным командам прикручен в виде дополнительных списков-опций. НО их же надо тогда все помнить или опять придется многотомную документацию читать...
- ginpetr
- Завсегдатай
- Сообщения: 376
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: Пакетная перерегистрация растров
"Лучше день потерять - потом за пять минут долететь" (м/ф "Крылья, ноги и хвосты")OlegSLB писал(а):хм.. может для вас gdal и командная строка выглядят как привычные и простые инструменты, но для меня это просто тёмный лес. Я даже не знаю, с какой стороны к ним подступиться, всё на что меня хватило, это запустить кое-как эту программу из командной строки, да и то как правильно прописать все параметры я так и не понял. А тратить недели только на ознакомление с ними я не имею возможности. GDAL я так понимаю, это вообще не настольная гис с графическим интерфейсом, а какой-то набор библиотек, который ещё надо как-то заставить работать, знать консольные команды и пр. Я пытался упростить работу, а не усложнить её. Это как если бы я спрашивал "На каком автобусе мне доехать от пункта а до пункта б", а в ответ мне написали - "элементарно, собери своими руками вертолёт, научись им управлять, заправь его топливом, получи разрешение на полёты, освой навыки штурмана, проложи курс, а потом всё просто - за 5 минут долетишь"
Если уж совсем лень изучать, у меня в Ch_projection появилась возможность изменения системы координат для растров. Мной опция почти не востребована, поэтому на ошибки не объезжена. Пробуйте и отпишитесь об успехе/неудаче.
Нужно выбрать в списке таблиц загруженные в Мапинфо растры, в меню таблицы выбрать Изменить проекции выбранных таблиц. Таблицы переписываются, так что экспериментируйте с копиями.
В меню Таблицы появится также пункт Проекции выбранных таблиц.
Поддерживается перевод План-схема --> Проекция и Проекция --> Проекция
Используйте на свой страх и риск.
Есть и проверенный инструмент
- Вложения
-
- Ch_projection.zip
- Изменение проекции
- (2.14 КБ) 428 скачиваний
Последний раз редактировалось ginpetr 22 сен 2014, 11:27, всего редактировалось 1 раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей