Страница 1 из 2
Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 08:24
Boris
Имеется файл DXF С отметками высот. Хотелось бы в MapInfo построить или отобразить 3-х мерную поверхность. Набор поверхностей, которые читает MapInfo:
или
Код: Выделить всё
Grid Image (*.grd;*.mig;*.dt0;*.dt1;*.dt2;*.dem;*.adf;*.flt;*.txt;*.asc;*.img)
Автокада среди них нет. Стандартными средствами MapInfo 3-ю координату получить не удалось.
Как бы получить эти точки в виде поверхности или хотя бы точек с атрибутом высотой?
---
Если известен путь получения аналогичных данных из линий и полигонов (горизонталей), то он так же интересен.
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 09:32
gamm
Boris писал(а):Имеется файл DXF С отметками высот. Хотелось бы в MapInfo построить или отобразить 3-х мерную поверхность.
1) Автокада среди них нет. Стандартными средствами MapInfo 3-ю координату получить не удалось.
Как бы получить эти точки в виде поверхности или хотя бы точек с атрибутом высотой?
---
2) Если известен путь получения аналогичных данных из линий и полигонов (горизонталей), то он так же интересен.
можно попробовать "brute force", чтобы решить задачу:
- "разваливаем" блоки, чтобы получить абсолютные координаты (автокадовцы должны знать, как это сделать)
- убираем из DXF все лишнее, кроме нужных данных
- пишем простую программу, которая ищет группы координат (таги не помню, но вроде 10, 11, ... для X)
- "прочесываем" весь файл, и выводим (X,Y,Z))
или просить спецов по автолиспу сделать тоже самое ...
2) Известен, для этого нужно интерполировать (в идеале) по линиям, соответствующим линиям тока(нормалям к изолиниям )- ищем пересечения линий тока с изолиниями, и делаем одномерную интерполяцию, потом фильтруем полученные линии и переносим на результирующую сетку. Для этого нужно либо построить поле линий тока, либо его некоторую сеточную аппроксимацию, поймать тальвеги и хребты (на которых имеет место разрыв гладкости), и т.д. Это делали в МГУ (программа MAG), такой же алгоритм встроен в Сканекс. Я когда-то подобное делал, но не доделал и бросил - на равнине построить линии тока сложно.
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 10:55
Александр Мурый
Можно использовать GRASS:
1) модуль
v.in.dxf, который импортирует 3D DXF;
2) строим поверхность подходящей в этом случае интерполяцией (IDW, RST, kriging ??)
3) экспорт поверхности в формат, понимаемый MI (модуль
r.out.gdal)
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 11:05
gamm
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 версии строит поверхности

Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 11:06
gamm
amuriy писал(а):Можно использовать GRASS:
1) модуль
v.in.dxf, который импортирует 3D DXF;
интересно, а этот модуль разные блоки с привязкой прочие локальные координаты понимает?
посмотрел исходник - вроде не понимает.
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.
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 12:00
Boris
хорошо. всем спасибо за советы. давайте упростим задачу и выкинем из нее лишнее.
Есть данные созданные в Кредо. Пользователи Кредо умеют его экспортировать DXF, могут и еще куда-то, только те форматы представляются еще менее доступными. Поверхности Коедо как-то создал на них расставил отметки высот и нарисовал горизонтали. За ним переделывать нет желания.
Из Кредо получаем 3D автокад DXF. Надо его превратить в просто в набор точек с 3-ей координатой в атрибуте. Построение поверхности и ее отображение будут сделаны либо средствами MapInfo, либо чем-то что даст грид, пересчитываемый MapInfo в свой собственный.
Неужели нет простого пути получения точек в виде текстового файла? Я имею в виду без программирования?
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 14:59
gamm
Boris писал(а):хорошо. всем спасибо за советы. давайте упростим задачу и выкинем из нее лишнее.
Есть данные созданные в Кредо. Пользователи Кредо умеют его экспортировать DXF, могут и еще куда-то, только те форматы представляются еще менее доступными. Поверхности Коедо как-то создал на них расставил отметки высот и нарисовал горизонтали. За ним переделывать нет желания.
Из Кредо получаем 3D автокад DXF. Надо его превратить в просто в набор точек с 3-ей координатой в атрибуте. Построение поверхности и ее отображение будут сделаны либо средствами MapInfo, либо чем-то что даст грид, пересчитываемый MapInfo в свой собственный.
Неужели нет простого пути получения точек в виде текстового файла? Я имею в виду без программирования?
я пошарил в сети - для 3D вроде как вариантов нет. Кстати, Кредо - это еще тот продукт, вы уверены, например, что он выдает 3D изолинии, а не 2D с атрибутом или еще чего?
Кстати, программировать нетрудно, просто ищете тэг координат, а потом выводите XYZ. Сделаете за вечер, поверьте опыту 15-летней давности
Кстати, а чем вам GRASS не годится?
P.S. Если вам нужна не картинка, а рельеф для работы, средствами MpInfo лучше не пользоваться (хотя последние версии я не пробовал).
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 16:29
Mavka
Я могу ошибаться, т.к. Credo видел уже давненько, но там был экспорт в 3D DXF не точек, а треугольников TIN-поверхности ("3D Faces" в терминах AutoCAD). Точки же экспортировались в текстовый файл с фиксированной шириной колонок.
средствами MapInfo лучше не пользоваться
Сказал он это Борису

Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 19:59
marsel
Boris писал(а):Имеется файл DXF С отметками высот. Хотелось бы в MapInfo построить или отобразить 3-х мерную поверхность. Набор поверхностей, которые читает MapInfo:
Не совсем понятно, что значит "файл DXF с отметками высот", попробуйте из него получить текстовый файл с тремя колонками X Y Z. И потом уже открывайте хоть в МapInfo, или где угодно и стройте что душе угодно.
А для построения поверхностей лучше Surfer, действительно ничего нет
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 08 янв 2011, 21:09
rnazarov
Кредо, к сожалению создает dxf файл, в котором кроме самих точек присутствуют куча всяких ненужных аттрибутов. Обычно я поступаю следующим образом:
- открываю dxf в AutoCADе
- удаляю всё, кроме 3D точек
- сохраняю в формате DXF AutoCAD 2000, наиболее стандартный DXF, без всях добавлений и его понимает практически любое ПО
Ну а дальше, можно испльзовать допустим SAGA
- импорт DXF
-экспорт шейп как XYZ
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 09 янв 2011, 20:19
Boris
rnazarov писал(а):
Ну а дальше, можно испльзовать допустим SAGA
- импорт DXF
-экспорт шейп как XYZ
Спасибо за совет. Не знаю, что еще делает эта программа, но импорт выполнила без проблем. Хотя интерфейс не привычен.
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 09 янв 2011, 20:30
gamm
Boris писал(а):rnazarov писал(а):
Ну а дальше, можно испльзовать допустим SAGA
- импорт DXF
-экспорт шейп как XYZ
Спасибо за совет. Не знаю, что еще делает эта программа, но импорт выполнила без проблем. Хотя интерфейс не привычен.
Вы удивитесь, но эта программа делает все (в смысле, весь геопроцессинг). Она вам и поверхность построит, попробуйте Thin Plate Spline (Global).
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 09 янв 2011, 21:01
Boris
gamm писал(а):
Вы удивитесь, но эта программа делает все (в смысле, весь геопроцессинг). Она вам и поверхность построит, попробуйте Thin Plate Spline (Global).
Еще раз спасибо.
Беда в том, что самому мне программу разбирать не досуг, тем более, что как-то сходу я не нашел к ней документации. А те файлы что нашел были большей частью на немецком.
Re: Чем конвертировать точки из DXF 3D?
Добавлено: 09 янв 2011, 21:07
Mavka
Есть моя переводная маленькая статейка. Только я вам ее
не отдам, потому что там про поверхности чисто обывательски.