Страница 1 из 2

Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 01:11
eucrariano
Здравствуйте.
Конкретно проблема вот в чем: из MAPInfo 7.8 экспортирую слой с горизонталями в формат .mif. Исходная карта создана вероятнее всего в конце 90-х гг. в MAPInfo 3.0. При этом данных про проекцию получить не удается, экспортирует зразу без излишних вопросов (в файле .mif есть такая строчка: CoordSys Earth Projection 1, 0), если экспортирую в формат AutoCAD, то получается получить такое (вложение 1). Реальные размеры физической области - 261.99х94.63 км.
Когда же создаю рабочую область в GRASS, то карта интегрируется маленькая, маленькая, независимо от выбранной системы координат, при выборе же опций (вложение 2) карта вроде помещается как нужно, только вот при построении ЦМР через v.surf.rst - викидывает ошибку: "ERROR2: zero points in the given region!ERROR: Input failed".
Где моя ошибка и как ее исправить?
Спасибо

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 07:33
KolesovDmitry
А какие параметры у созданного вами региона? Покажите результат команды

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

g.region -p

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 08:27
gamm
eucrariano писал(а):Здравствуйте.
Конкретно проблема вот в чем: из MAPInfo 7.8 экспортирую слой с горизонталями в формат .mif. Исходная карта создана вероятнее всего в конце 90-х гг. в MAPInfo 3.0. При этом данных про проекцию получить не удается, экспортирует зразу без излишних вопросов (в файле .mif есть такая строчка: CoordSys Earth Projection 1, 0), если экспортирую в формат AutoCAD, то получается получить такое (вложение 1). Реальные размеры физической области - 261.99х94.63 км.
Когда же создаю рабочую область в GRASS, то карта интегрируется маленькая, маленькая, независимо от выбранной системы координат, при выборе же опций (вложение 2) карта вроде помещается как нужно, только вот при построении ЦМР через v.surf.rst - викидывает ошибку: "ERROR2: zero points in the given region!ERROR: Input failed".
Где моя ошибка и как ее исправить?
Спасибо
проблема конкретно в том, что у вас проекция стоит долгота/широта, которую ставит МапИнфо по умолчанию при ввобе карт - тот, кто вводил карту, не выставил проекцию, поэтому у вас там все якобы в градусах.

Нужно выставить проекцию План-схема с правильными границами (прямо в MIF, текстовым редактором, с правильными границами), типа такого:
CoordSys NonEarth Units "m" Bounds (-500000, -500000) (500000, 500000)

Только я не знаю, может ли ГРАСС работать с плансхемой (это к тов.Колесову) ... если не может, то придется поставить проекцию типа UTM, прибавив к координатам прримерно 5000000 к каждой (для этого в MIF есть оператор TRANSFORM). В общем, поправить проекцию и импортировать обратно в MI, а потом экспортировать.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 09:48
KolesovDmitry
gamm писал(а): Нужно выставить проекцию План-схема с правильными границами

Только я не знаю, может ли ГРАСС работать с плансхемой
Может, при создании области нужно указать, что это план-схема.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 12:16
eucrariano
Спасибо за ответ. Правлю текстовом редактором mif файл: "CoordSys NonEarth Units "m" Bounds (24.9107, 47.7258) (27.5306, 48.6721)", импортирую назад в MI - там уже стоит проекция План-схема, потом назад экспорт в mif. Импортирую в ГРАСС - карта все равно маленькая и в сером прямоугольнике. В конце mif файла есть строки:
Pen (1,2,11556864)
Rect 24.9107 47.7258 27.5306 48.6721
Pen (1,2,0)
Brush (1,0,16777215). Может поэтому?
Когда zoom to selected maps, то увеличивает до нормальных размеров и координаты показывает при навигации как и установлено, а вот при zoom to default region - охват региона показівает от -23; 0 до 50;48.67(g.proj -p выдает - XY location (unprojected).
ЦМР не строит с той же ошибкой. Что еще можно сделать?
Спасибо

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 15:24
Александр Мурый
eucrariano, вам надо "подогнать" текущий регион под векторный слой:

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

g.region vect=мои_чудесные_изолинии res=20
,
причем обязательно указать нужное пространственное разрешение (в единицах области) для будущего растра (ЦМР). Выбор разрешения -- дело тонкое 8), тут надо видеть данные, знать масштаб, просто так не посоветуешь.. В примере разрешение 20 метров для области в метрах (спроецированной или просто XY, как у вас).

После задания региона можно интерполировать.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 16:25
eucrariano
Спасибо. g.region vect=мои_чудесные_изолинии res=20 - дало возможность запустить v.surf.rst - мигом посчитало: учитывая, что границы области с изолиниями х1=24.9107 у1=47.7258 и х2=27.5306 у2=48.6721, то есть реально в данном случае вся область влазит в ~2х1 м, то у меня получилась ЦМР из 2 таких огромных точек. Пробовал g.region vect=мои_чудесные_изолинии res=0.0001 - начинает считать, но судя с размера файла подкачки на 1 гиг, ясно, что считать будет сутки, поставил res=0.001 - ну здесь уже жду, считает около 15 мин, прошло ~25%, надеюсь на удомоваримый результат. По ходу вопрос не по теме. Вот пробовал импортировать данные SRTM4 из geotiff, процесс проходит без проблем, задаю проекцию и все такое, только вот импортированная карта не отображается ;(. Задавал и цветовую таблицу SRTM, и r.null запускал, и ничего. Почему так?

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 16:35
KolesovDmitry
Вам нужно сначала понять, как устроена работа с областями в GRASS: когда вы работаете с растрами, вы всегда работаете с определенным охватом территории и разрешением. Охват и разрешение задаются в g.region. Если вы импортировали данные, не попадающие в текущий охват или разрешение не подходящее, то результата или не будет вовсе, или он будет "так себе".

Поэтому первым делом разберитесь с параметрами области.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 16:40
eucrariano
Вот еще вопрос вдогонку. Создаем рабочую область. Импортируем туда объект произвольной формы. Получается огромное поле, незаполненное ничем. Как создать маску, чтобы отсекать все это безобразие. При построении ЦМР, оно (ГРАСС) только и ругается - taking too long to find points for interpolation--please change the region to area where your points are. Continuing calculations...
Спасибо

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 16:45
eucrariano
KolesovDmitry писал(а):Вам нужно сначала понять, как устроена работа с областями в GRASS: когда вы работаете с растрами, вы всегда работаете с определенным охватом территории и разрешением. Охват и разрешение задаются в g.region. Если вы импортировали данные, не попадающие в текущий охват или разрешение не подходящее, то результата или не будет вовсе, или он будет "так себе".

Поэтому первым делом разберитесь с параметрами области.
Спасибо за советы. Только иногда вполне очевидные вещи долго доходят. А когда надо что-то быстро сделать, а предметом владеешь так себе, то получаются проблемы. Походу изучаю матчасть, но не все успеваю, слишком много всего наваливается: и в жизни и тут.
Спасибо.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 16:58
Александр Мурый
Вот пробовал импортировать данные SRTM4 из geotiff, процесс проходит без проблем, задаю проекцию и все такое, только вот импортированная карта не отображается ;(. Задавал и цветовую таблицу SRTM, и r.null запускал, и ничего. Почему так?
Не задан текущий регион
g.region rast=srtm
Создаем рабочую область. Импортируем туда объект произвольной формы. Получается огромное поле, незаполненное ничем. Как создать маску, чтобы отсекать все это безобразие. При построении ЦМР, оно (ГРАСС) только и ругается - taking too long to find points for interpolation--please change the region to area where your points are. Continuing calculations...
Ну так послушайте его, оно ж не просто так ругается -- оно дело говорит.. Задайте текущий регион под ваш "объект произвольной формы": g.region rast=объект или g.region vect=объект
А когда надо что-то быстро сделать..
Не хочу вас расстраивать, но GRASS для этого не совсем предназначена. Хотя если освоиться, то типовые задачи решаются довольно шустро.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 17:27
eucrariano
"Ну так послушайте его, оно ж не просто так ругается -- оно дело говорит.. Задайте текущий регион под ваш "объект произвольной формы": g.region rast=объект или g.region vect=объект"


Спасибо, с этим "g.region rast=объект или g.region vect=объект" более-менея ясно, только вот когда объект не прямоугольник, как скажем регион, выделенный под него, а овал, вписаный в этот прямоугольник, то чтобы отсекти лишнеее, надо задать маску. Как ее сформировать? Вот в чем вопрос, может и наивный. Может я неправильно что-то формулируюю.
И наконец дождался результата построения ЦМР - Command finished (3915 sec). Все хорошо вышло, только вот теперь бы маску задать, чтобы интерполяция проходила строго в области, ограниченной горизонталями. Вот, чтобы яснее изложить свою мысль, прилагаю вложение (даю в тонах серого, так красивее).
Спасибо

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 17:42
Александр Мурый
когда объект не прямоугольник, как скажем регион, выделенный под него, а овал, вписаный в этот прямоугольник, то чтобы отсекти лишнеее, надо задать маску. Как ее сформировать?
Можно так:
-- перегоняем векторные изолинии в растр

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

v.to.rast in=isolines out=isolines_raster use=cat

-- задаем растровую маску (все дальнейшие растровые операции будут происходить в пределах маски)

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

r.mask input=isolines_raster

удалить потом можно командой

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

r.mask -r


ИЛИ можно вручную (с помощью v.digit или wxGUI) обвести нужный район (с изолиниями), а затем так же перегнать в растр и сделать по нему маску.

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 17:57
eucrariano
Большое спасибо всем!!! Попробую дома. Очень выручили и помогли!!!

Re: Проблема с построением ЦМР после импорта из MAPInfo

Добавлено: 28 фев 2011, 17:59
Александр Мурый
На здоровье :)
Кстати, по маске можно и обрезать уже имеющийся растр:

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

r.resample input=исходный_растр output=обрезанный_растр