Чем конвертировать точки из DXF 3D?

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

Чем конвертировать точки из DXF 3D?

Сообщение Boris » 08 янв 2011, 08:24

Имеется файл DXF С отметками высот. Хотелось бы в MapInfo построить или отобразить 3-х мерную поверхность. Набор поверхностей, которые читает MapInfo:

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

*.DEM;*.DT?;*.GRD;*.MIG;*.ADF 
или

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

Grid Image (*.grd;*.mig;*.dt0;*.dt1;*.dt2;*.dem;*.adf;*.flt;*.txt;*.asc;*.img)
Автокада среди них нет. Стандартными средствами MapInfo 3-ю координату получить не удалось.
Как бы получить эти точки в виде поверхности или хотя бы точек с атрибутом высотой?
---
Если известен путь получения аналогичных данных из линий и полигонов (горизонталей), то он так же интересен.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение gamm » 08 янв 2011, 09:32

Boris писал(а):Имеется файл DXF С отметками высот. Хотелось бы в MapInfo построить или отобразить 3-х мерную поверхность.
1) Автокада среди них нет. Стандартными средствами MapInfo 3-ю координату получить не удалось.
Как бы получить эти точки в виде поверхности или хотя бы точек с атрибутом высотой?
---
2) Если известен путь получения аналогичных данных из линий и полигонов (горизонталей), то он так же интересен.
можно попробовать "brute force", чтобы решить задачу:
- "разваливаем" блоки, чтобы получить абсолютные координаты (автокадовцы должны знать, как это сделать)
- убираем из DXF все лишнее, кроме нужных данных
- пишем простую программу, которая ищет группы координат (таги не помню, но вроде 10, 11, ... для X)
- "прочесываем" весь файл, и выводим (X,Y,Z))

или просить спецов по автолиспу сделать тоже самое ...

2) Известен, для этого нужно интерполировать (в идеале) по линиям, соответствующим линиям тока(нормалям к изолиниям )- ищем пересечения линий тока с изолиниями, и делаем одномерную интерполяцию, потом фильтруем полученные линии и переносим на результирующую сетку. Для этого нужно либо построить поле линий тока, либо его некоторую сеточную аппроксимацию, поймать тальвеги и хребты (на которых имеет место разрыв гладкости), и т.д. Это делали в МГУ (программа MAG), такой же алгоритм встроен в Сканекс. Я когда-то подобное делал, но не доделал и бросил - на равнине построить линии тока сложно.

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

Re: Чем конвертировать точки из DXF 3D?

Сообщение Александр Мурый » 08 янв 2011, 10:55

Можно использовать GRASS:
1) модуль v.in.dxf, который импортирует 3D DXF;
2) строим поверхность подходящей в этом случае интерполяцией (IDW, RST, kriging ??)
3) экспорт поверхности в формат, понимаемый MI (модуль r.out.gdal)
Редактор материалов, модератор форума

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение gamm » 08 янв 2011, 11:05

amuriy писал(а):Можно использовать GRASS:
1) модуль v.in.dxf, который импортирует 3D DXF;
2) строим поверхность подходящей в этом случае интерполяцией (IDW, RST, kriging ??)
3) экспорт поверхности в формат, понимаемый MI (модуль r.out.gdal)
лучше не IDW (дает артефакты) и не кригинг (при локальной окрестности дает негладкую поверхность в местах support chage, а при глобальной просто совпадает со сплайнами, но с большим числом точек работать не будет).

В ГРАССе есть сплайны с натяжением (tension splines. возможно это как раз RST), лучше их использовать. Если есть SURFER, то там много разного, причем легальная демка от 6 версии строит поверхности :-)

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение gamm » 08 янв 2011, 11:06

amuriy писал(а):Можно использовать GRASS:
1) модуль v.in.dxf, который импортирует 3D DXF;
интересно, а этот модуль разные блоки с привязкой прочие локальные координаты понимает?
посмотрел исходник - вроде не понимает.

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

Re: Чем конвертировать точки из DXF 3D?

Сообщение Александр Мурый » 08 янв 2011, 11:32

tension splines. возможно это как раз RST
Да, это и есть RST (реализован в нескольких модулях: v.surf.rst, r.resamp.rst, v.vol.rst)
интересно, а этот модуль разные блоки с привязкой прочие локальные координаты понимает?
В мануале честно сказано, что модуль понимает "стандартный DXF" и перечислены поддерживаемые граф.объекты. Про блоки ничего нет, и я подозреваю, что играться с блоками надо скорее в каком-либо CAD'e, а потом нужные точки загнать в один слой в DXF, и далее уже в GRASS.
Редактор материалов, модератор форума

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

Re: Чем конвертировать точки из DXF 3D?

Сообщение Boris » 08 янв 2011, 12:00

хорошо. всем спасибо за советы. давайте упростим задачу и выкинем из нее лишнее.
Есть данные созданные в Кредо. Пользователи Кредо умеют его экспортировать DXF, могут и еще куда-то, только те форматы представляются еще менее доступными. Поверхности Коедо как-то создал на них расставил отметки высот и нарисовал горизонтали. За ним переделывать нет желания.
Из Кредо получаем 3D автокад DXF. Надо его превратить в просто в набор точек с 3-ей координатой в атрибуте. Построение поверхности и ее отображение будут сделаны либо средствами MapInfo, либо чем-то что даст грид, пересчитываемый MapInfo в свой собственный.
Неужели нет простого пути получения точек в виде текстового файла? Я имею в виду без программирования?

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение gamm » 08 янв 2011, 14:59

Boris писал(а):хорошо. всем спасибо за советы. давайте упростим задачу и выкинем из нее лишнее.
Есть данные созданные в Кредо. Пользователи Кредо умеют его экспортировать DXF, могут и еще куда-то, только те форматы представляются еще менее доступными. Поверхности Коедо как-то создал на них расставил отметки высот и нарисовал горизонтали. За ним переделывать нет желания.
Из Кредо получаем 3D автокад DXF. Надо его превратить в просто в набор точек с 3-ей координатой в атрибуте. Построение поверхности и ее отображение будут сделаны либо средствами MapInfo, либо чем-то что даст грид, пересчитываемый MapInfo в свой собственный.
Неужели нет простого пути получения точек в виде текстового файла? Я имею в виду без программирования?
я пошарил в сети - для 3D вроде как вариантов нет. Кстати, Кредо - это еще тот продукт, вы уверены, например, что он выдает 3D изолинии, а не 2D с атрибутом или еще чего?

Кстати, программировать нетрудно, просто ищете тэг координат, а потом выводите XYZ. Сделаете за вечер, поверьте опыту 15-летней давности :-)

Кстати, а чем вам GRASS не годится?

P.S. Если вам нужна не картинка, а рельеф для работы, средствами MpInfo лучше не пользоваться (хотя последние версии я не пробовал).

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Чем конвертировать точки из DXF 3D?

Сообщение Mavka » 08 янв 2011, 16:29

Я могу ошибаться, т.к. Credo видел уже давненько, но там был экспорт в 3D DXF не точек, а треугольников TIN-поверхности ("3D Faces" в терминах AutoCAD). Точки же экспортировались в текстовый файл с фиксированной шириной колонок.
средствами MapInfo лучше не пользоваться
Сказал он это Борису Изображение
лангольеры под окном жрали время ом-ном-ном

marsel
Участник
Сообщения: 63
Зарегистрирован: 07 мар 2010, 10:02
Репутация: 6
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение marsel » 08 янв 2011, 19:59

Boris писал(а):Имеется файл DXF С отметками высот. Хотелось бы в MapInfo построить или отобразить 3-х мерную поверхность. Набор поверхностей, которые читает MapInfo:
Не совсем понятно, что значит "файл DXF с отметками высот", попробуйте из него получить текстовый файл с тремя колонками X Y Z. И потом уже открывайте хоть в МapInfo, или где угодно и стройте что душе угодно.
А для построения поверхностей лучше Surfer, действительно ничего нет

rnazarov
Участник
Сообщения: 61
Зарегистрирован: 25 дек 2009, 15:44
Репутация: 3
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение rnazarov » 08 янв 2011, 21:09

Кредо, к сожалению создает dxf файл, в котором кроме самих точек присутствуют куча всяких ненужных аттрибутов. Обычно я поступаю следующим образом:
- открываю dxf в AutoCADе
- удаляю всё, кроме 3D точек
- сохраняю в формате DXF AutoCAD 2000, наиболее стандартный DXF, без всях добавлений и его понимает практически любое ПО
Ну а дальше, можно испльзовать допустим SAGA
- импорт DXF
-экспорт шейп как XYZ

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

Re: Чем конвертировать точки из DXF 3D?

Сообщение Boris » 09 янв 2011, 20:19

rnazarov писал(а): Ну а дальше, можно испльзовать допустим SAGA
- импорт DXF
-экспорт шейп как XYZ
Спасибо за совет. Не знаю, что еще делает эта программа, но импорт выполнила без проблем. Хотя интерфейс не привычен.

gamm
Гуру
Сообщения: 4170
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Чем конвертировать точки из DXF 3D?

Сообщение gamm » 09 янв 2011, 20:30

Boris писал(а):
rnazarov писал(а): Ну а дальше, можно испльзовать допустим SAGA
- импорт DXF
-экспорт шейп как XYZ
Спасибо за совет. Не знаю, что еще делает эта программа, но импорт выполнила без проблем. Хотя интерфейс не привычен.
Вы удивитесь, но эта программа делает все (в смысле, весь геопроцессинг). Она вам и поверхность построит, попробуйте Thin Plate Spline (Global).

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

Re: Чем конвертировать точки из DXF 3D?

Сообщение Boris » 09 янв 2011, 21:01

gamm писал(а): Вы удивитесь, но эта программа делает все (в смысле, весь геопроцессинг). Она вам и поверхность построит, попробуйте Thin Plate Spline (Global).
Еще раз спасибо.
Беда в том, что самому мне программу разбирать не досуг, тем более, что как-то сходу я не нашел к ней документации. А те файлы что нашел были большей частью на немецком.

Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Чем конвертировать точки из DXF 3D?

Сообщение Mavka » 09 янв 2011, 21:07

Есть моя переводная маленькая статейка. Только я вам ее не отдам, потому что там про поверхности чисто обывательски.
лангольеры под окном жрали время ом-ном-ном

Ответить

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

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

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