Sunday, December 9, 2012

Перевод отметок рельефа из Autocad в табличный вид

При подготовке данных для моделирования весьма часто возникает необходимость в конвертации отметок рельефа из геоподосновы, сохраненной в формате Autocad DWG, в табличный вид (типа X, Y, Z) для того, чтоб скормить эти данные какому-нибудь интерполятору (Surfer или встроенный в PmWin “Field Interpolator”).
Я почти уверен точно знаю, что эта задача может быть легко и быстро решена с помощью самого Autocad — достаточно запустить соответствующую программу на LISP-е и радоваться жизни. К сожалению, я LISP-а не знаю, да и вообще не являюсь большим специалистом в автокаде.
В современных версиях автокада эта проблема решается еще проще: через инструмент, расположенный в пункте меню Tools\Data Extraction. Инструмент довольно мощный, но в нестандартных случаях возможно придется повозиться.
Но проблему как-то надо решать. Я предлагаю использовать для этого MapInfo (согласен, для кого-то это выглядит сменой шила на мыло). Далее по пунктам:
  1. Конвертируем слой с отметками (желательно, чтоб слой содержал только отметки в текстовом виде, без самих точек) из формата Autocad DWG  в формат MapInfo TAB (с помощью встроенного в MapInfo мини-приложения Universal Translator).
  2. Подчищаем полученную таблицу от нетекстовых элементов: это можно сделать несколькими способами, наиболее удобный и быстрый — мини-приложение MapCad, но можно и с помощью Query Select и функции ObjectInfo(obj, 1), но там придется сначала создать дополнительный столбец в таблицу, занести него результат выполнения функции ObjectInfo(obj, 1), а уж потом делать Query Select по этому столбцу, выбирая значения, отличные от 10 (а 10 — это как раз текстовые).
  3. Еще разок запускаем Update Column (создайте новый столбец с типом float или смените тип существующего столбца) с той же функцией, но с другими параметрами: ObjectInfo(obj, 3). Если все сделано правильно, то в вашей таблице появится столбец типа float с отметками рельефа.
  4. Запускаем мини-приложение Coordinate Extractor: в таблице теперь будут столбцы с координатами центра текстовой подписи отметки рельефа. Вот тут важно отметить явный недостаток рассматриваемого метода: наши точки будут немного смещены относительно реальных отметок — ровно на столько, на сколько отличаются координаты середины метки от координат точки замера. Если вы страдаете перфекционизмом, то эту проблему можно решить с помощью простейших математических операций со свежеполученными координатами.
  5. Запускаем Table/Create Points, если хотим заменить тектовые метки на точки (а уж сами метки пусть MapInfo своими силами рисует, благо соответствующий столбец в таблице уже есть).
  6. Экспортируем полученную таблицу в нужный текстовый формат (txt или csv).
Метода только выглядит громоздко, на самом же деле, у меня уходит на все эти действия не больше минуты — главное не сбиваться и соблюдать порядок действий.

10 comments:

  1. Недавно пришлось решать такую же задачу.
    Лиспы есть на dwg.ru
    например http://forum.dwg.ru/showpost.php?p=244237&postcount=7
    экспорт координат идет в т.ч. с вершин полилиний, если вершин мало, можно их увеличить, лисп есть на том же форуме.
    Если есть Civil, то в нем можно отстроить поверхность и потом уже генерировать точки как угодно.

    ReplyDelete
    Replies
    1. Но за ссылку спасибо. Добавлю ее в текст.

      Delete
  2. Вместо 6 шагов, это делается в один прием.

    ReplyDelete
    Replies
    1. http://dwg.ru/art/8
      Только чтоб запустить этот лисп, надо поплясать с бубном :-)

      Delete
    2. Это в зависимости от того, какой у вас автокад.
      Если пакет VBA установлен, то тот мануал можно не читать. я не читал, например.
      Команда appload и выбираете запускающий лисп файл, и все, работайте.
      Если VBA не стоит, установить.
      Позавчера установил 2013 Автокад, попробовал 4 разных лиспа, экспорт-импорт и др.

      Delete
    3. У меня вообще LT :-) Как и у 90% офисных гидрогеологов с честнокупленным автокадом.

      Delete
    4. А на ЛТ нельзя запустить лисп? Не знал, не знал.
      Иногда работу приходится делать дома, не в офисе, и тогда-то.....

      Delete
    5. Вроде нельзя.
      Ну так у меня дома LT и стоит. Я дома работаю.

      Delete
  3. Autocad Map 3d 2011 делает такое без лиспов

    ReplyDelete