понедельник, 12 апреля 2010 г.

Powerful of CIVIL3D/MAP3D

О сколько нам открытий чудных
Готовят просвещенья дух
И опыт, сын ошибок трудных,
И гений, парадоксов друг,
И случай, бог изобретатель...

(А.С.Пушкин)

И не подозревал Александр Сергеевич, что сии строки будут применены к ГИС. Но ничего кроме них, после непродолжительного изучения функционала Map 3D в Civil 3D в голову не приходит. Диапазон применений пары Civil/MAP очень широк, в данном случае мой опус возможно будет интересен изыскателям, хотя… как знать. Цель-создание мини ГИС для нужд небольшой организации. Задачи-внесение ситуации, безопасное хранение больших объёмов данных, получение необходимых выборок по хранимым данным, многопользовательский доспуп к информации. Используемые инструменты: AutoCAD Civil 3D 2010.
До создания нашей мини ГИС следует подумать над следующими вопросами:
Структура мини ГИС:
- какую информацию необходимо хранить в системе. Исходя из этой информации можно поразмыслить о структуре хранения данных и прочих вещах.
- кто и как будет вносить информацию в систему. Как это всё администрировать.
Есл ипонмание всего этого пришло (хотя бы прояснилась структура организации данных и их хранения), можно помолясь приступить.
Сразу же предупреждаю, мы начинали с нуля и шли путём проб и ошибок (собственно говоря ещё идём). Ещё многое предстоит узнать, но целью этой статьи является не преподнесение выполненной нами работы апофеозом возможностей Civil/Map, а стремлением показать функциональность программы. Надеюсь кто то подчерпнёт нужную информацию, а кто то может и попробует использовать её себе на благо.
Итак.
СТРУКТУРА:

 


В качестве баз данных мы использовали SDF формат.
Элементы хранятся в SDF файлах по принадлежности к группам. Так в WATER.sdf хранятся данные по тубам, колодцам, арматуре для водопровода, в LOTS.sdf информация по участкам, в BLDGS.sdf – по зданиям. Почему водопровод, канализация, газ, ливнёвка и пр. сети решили не хранить в одном sdf файле? Потому, что каждой сети присущи свои элементы с соответствующими свойствами, если свалить все сети в один sdf, появится избыточность информации – читай лишние ячейки которые можно и не заполнять, в общем лишние неудобства.
Перейдём к реализации задуманного:
Прежде всего, в рабочем пространстве Civil’а укажем координатную зону:


Теперь, принимаем результаты съёмки в файл, обрабатываем модулем СЪЁМКА. Если в файле уже содержится информация о точках – преобразуем их в сивиловские точки, т.к. они нам понадобятся для построения поверхности.
Теперь все точки можно передать в sdf файл.


Пойзже мы подключим этот файл в нашу ГИС, а пока обратим взор свой в нижний правый угол рабочего стола и переключимся на рабочее пространство MAP3D.
Создадим по шаблону новый файл dwg, в котором и будем дальше орудовать.
Откроем Панель задач при помощи которого будем манипулировать данными


Теперь осталось подключить наш файл с точками. Для этого жмём на кнопку Данные/Подключиться к данным... В открывшемся окне выбираем Добавить подключение SDF, выбираем наш файл и жмём Установить соединение. Появится список классов объектов которые мы можем хранить, создавать и модифицировать в данном SDF. В стандартной Civil_Schema это Колодцы, Точки, Трассы, Трубы, Участки. Но у нас то файл предполагается использовать лишь для хранения точек, поэтому лишние классы элементов можно убрать.
Помечаем галкой Точки и нажимаем на Добавить на карту. Теперь у нас в Панели задач отобразился слой Точки посредством которого мы создаём и редактируем точки в нашем SDF файле. У слоя есть стиль, если уж быть точнее – возможность настроить стиль/стили отображения объектов. Об этом позднее.


Теперь отредактируем схему и уберём из неё ненужные классы. В Панели задач переходим на вкладку Обозреватель карт, выбираем соединение и в контекстном меню указываем Изменить схему.


В появившемся окне редактора схем выбираем лишние классы элементов и удаляем.


В этом редакторе мы позднее будем создавать и модифицировать наши схемы. Схема описывает характер хранимых данных.
Теперь займёмся стилем отображения для точек. Для этого переходим в Панели здач на вкладку Диспетчер отображения  и выбрав нужный слой либо дважды кликаем на него, либо через контекстное меню, либо по нажатию на кнопку Стиль вызываем Редактор стилей.


Здесь мы указываем Стили маркера и метки.
С точками всё достаточно просто. Поэтому здесь я распространяться не буду. Вся информация по хранимым данным есть в т.н. Таблице данных.


Точки есть. Теперь создадим свои sdf’ники для участков и зданий. Переходим на вкладку Обозреватель карт и создаём SDF


В процессе укажем систему координат и попадём в конце концов в Редактор схемы.
Предостерегу от преждевременного нажатия на кнопку Применить. Это сделает невозможным изменение ряда важных параметров, поэтому жмите на неё когда будет уверенность, что с созданием схемы закончили.


СОВЕТ: тщательно продумывайте структуру схемы, т.к. в дальнейшем будет не всегда возможно что то в ней изменить.
В схеме может быть несколько классов элементов (как вы уже, наверное заметили),  у каждого класса элементов свои свойства. Здесь FeatId (название произвольное) – счётчик, Геометрия-для здания выбираем Геометрические типы  - 4 (Поверхность). AddressST и AddressNUM – название улицы и номер дома. L1_ELEV/L2_FIRE/L3_MATERIAL/L4_RESIDORNOT – этажность/пожарная составляющая/материал/жилой-нежилой. Остальные свойства опциональны. Для свойст подобных L2_FIRE/L3_MATERIAL/L4_RESIDORNOT – можно установить тип зависимости СПИСОК и прописать значения доступные для выбора – т.е. подстраховать пользователя от неверного ввода. Создали схему, жмём Ок, вычерчиваем (для настройки стиля) полигон здания и настраиваем стиль его отображения на плане, а так же метку. Для участков всё аналогично.
Теперь один из самых интересных моментов – сети. Здесь создание схемы для сетей подразумевает, что в неё будут входить самые разнообразные компоненты, это и трубы, колодцы, камеры, арматура и т.д. Поэтому создаём для сетей схему с несколькими классами объектов.


Можно в очередной раз воспользоваться схемой сивила, добавив в неё нужные свойства. Создав и подключив sdf файл перейдём к настройке стилей трубопроводов. В стандартном варианте мы имеем весьма ограниченный список типов линий для отображения труб.


И как это уже стало привычным для иностранных продуктов, в него не входят нужные нам типы линий для тепла, газа, воды и т.д.
Но как всегда есть способ с этим справиться:
http://map3d.wordpress.com/2010/01/14/custom-line-types-with-data-connect/
Это не добавит нужного типа линий в список, но позволит добавить в слой с трубопроводом нужные типы линий и стили. Описаный способ позволяет создавать пользовательские типы линий и штриховок. Единственный минус – трудоёмкость, ведь нужно прописать каждый элемент линии, можно в синтаксисе ошибиться. А если в слое несколько пользовательских типов линий?


Но и здесь нам на помощь пришли практически Чип и Дэйл:
http://www.cadforum.cz/cadforum_en/how-to-create-custom-line-styles-for-gis-maps-tip7273
Благодаря этой надстройке создаём описание своего типа линии или штриховки в xml формате и вставляем его в наш слой. Таким образом можно хранить в одном sdf файле объекты с различными стилями графических отображений.


В случае с колодцами и иными точечными элементами сети настройка отображения проще – символ отображения колодца можно выбрать как из стандартного набора знаков, так и из стороннего файла.


Достоинство стилей состоит ещё и в том, что используя  масштабные диапазоны легко настроить различное отображение для объектов ГИС в зависимости от масштаба карты. В качестве примера можно привести элементарный колодец, когда для масштабов 1/500-1/1000 он имеет одно отображение со своим размером, а для 1/2000-1/5000 другое, с иным размером.


Теперь о метках на трубопроводах. Для нанесения меток на объекты ситуации мы используем (на данном этапе) два способа:
1)    Отдельный слой для меток с преднастроенными стилями.
2)    Отдельный текстовый слой.
Создавая отдельный слой для меток с преднастроенными стилями мы можем при помощи выражений отображать различные метки по объектам. Но здесь весьма проблематично редактировать выбранную метку.


Текстовый слой подключается к отдельной базе, но при желании можно создать связь с нужными данными. Здесь можно редактировать положение отдельно выбранной метки. Мы использовали её для отображения меток по зданиям. Если отобразить метки типа 2КН достаточно просто, то вынести метку с номером дома в отдельный угол стандартным способом у нас пока не получается, поэтому пришлось использовать текстовый слой и редактировать положение метки вручную.


Теперь о подключении поверхности и аэрофото.
Подключается всё это легко и несколькими способами-на выбор. Можно подключить поверхность через Подключение данных, либо, через вынесение горизонтелей в отдельный слой, либо другими способами. В нашем примере, мы делали это через подключение поверхности в формате DEM и через поключение слоёв с горизонталями.


DEM поверхность мы создавали в сивиле, а зетем экспортировали в нашу ГИС. К слову, если подключаете DEM поверхность, по ней можно вывести горизонтали.


Отчёты.
Без использования доп. средств выборки по данным можно делать следующим образом – запрос, выгрузка в *.csv, открытие в Excel, оформление. Так для того, чтобы сделать выборку по элементам лежащим на линии проектируемуей трассы, необходимо сформировать запрос.


Можно просто указать линию проектируемой трассы на чертеже. Программа будет фильтровать оъекты и покажет данные только по выбранным.
 

Теперь необходимо в таблице данных выбрать все отфильтрованные элементы и экспортировать их в *.csv формат.


Теперь остаётся открыть файл в Excel’е и отредактировать как нужно.
Вот, собственно говоря, пока и всё. О организации многопользовательского доступа разговор отдельный и нами приктически ещё не рассмотренный и не испытанный.
 В дальнейшем мы планируем поработать над организацией многопользовательского доступа к подобного рода самопальной системе и рассмотреть использование функционала Map 3D в Civil 3D для организации ГИС по эксплуатации сетей (на примере водоснабжения или канализации).

вторник, 30 марта 2010 г.

Civil 3D 2010 road signs table или голь на выдумки хитра. Оформление ведомости дорожных знаков в AutoCAD Civil 3D 2010


Процесс создания этой ведомости достаточно трудоёмок, но раз уж работаем в сивиле, будем искать способы автоматизации его инструментами:


По идее, не мешало бы иметь такой объект сивила – знак, но нет его и будет ли-не известно, поэтому пользуемся тем, что есть – сетью. На мой взгляд потенциал инструмента СЕТИ в сивиле гораздо больше, чем проектирование канализции и ливнёвки. Почему именно сети? Потому, что их можно привязать к трассе, поверхности и прочим объектам сивила. Кроме этого, есть возможность задавать пользовательские свойства. А нам того и надо.
1)    При помощу part builder’а (конструктора элементов) создаём элемент который в последующем будет нам давать нужные параметры в таблицу, выглядеть как знак на плане, профиле и разрезе.



Дальше больше. Задаём параметры которые будут показывать тип знака (прдупреждающий, запрещающий и т.д.).
Если мы попробуем его создать через параметры модели или параметры размеров, то скорее всего у нас ничего не выйдет, поэтому  делаем следующее: (за метод благодарю некоего
Anonymous http://blog.civil3dreminders.com/2009/04/pipe-network-custom-parameters.html) Открываем файл AeccPartParamCfg.xml (C:\ProgramData\Autodesk\C3D 2010\rus\Pipes Catalog\Aecc Shared Content), и добавляем необходимые параметры.




Я задавал следующие параметры: Количество стоек (список), Тип стойки (список), Значение переменной для каждого типа знака (Предупреждающие, Запрещающие и т.д.), Количество (список/константа…), Размер знака по вертикали , Размер знака по горизонтали.
Почему я создал для каждой категории знака свой параметр, со своим списком- потому, что мне так было легче получать информацию в таблицу.
Теперь при создании нового параметра размера, наши переменные появятся в списке доступных.
 

Далее задаём списки значений и константы для созданных  нами переменных.



Здесь может быть множество вариантов, всё зависит от того, на сколько универсальным будет ваш элемент.
2)    Пришло время работы в плане. Начнём с внешнего вида. Я создал сеть в которую включил свой элемент знака, а уж затем редактировал метки и стиль.
Создаём сеть наших знаков так же, как и обычную сеть, не забывая в списке элементов указать наш знак.


В генераторе размеров я не указываю никаких доп размеров, т.к. тип знака я выбираю позднее меняя данные для каждого колодца индивидуально. Т.е. по умолчанию у меня в ячейке Предупреждающие, Приоритета, Запрещающие и т.д. проставлены свои значения,


3)    Теперь создаём стиль для отображения в плане – используем стандартный блок.


Если необходимо, настраиваем вид на модели, профиле и сечении (ведь не зря же мы конструировали знак похожим на реальный)
Настраиваем стиль меток колодца таким образом, чтобы он отображал тип знака. Здесь я ещё не всё продумал, если в метке ставить сразу все свойства знака, то будет каша.


В принципе, можно и из нескольких компонентов сформировать метку.


4)    Ну и завершающий этап – создание своего стиля таблицы для отображения всей нужной инфы по знакам. Для этого создаём стиль таблицы для колодцев.


Обратите внимание, первый столбец мы никуда деть не можем, да нам, в принципе, и не надо. Следующие два столбца показывают пикет. Если знак справа – в крайней левой колонке нули, а в правой, пикет, и наоборот. Открываем построитель выражений и создаём условия по которым программа будет ставить нули в ячейку, в которой получается отрицательное значение смещение колодца (думаю, тут всё понятно)


5)    Заключительный момент – построение таблицы: внешний вид придётся доводить вручную.


Для того, чтобы привести таблицу в стандартный вид, достаточно её взорвать и удалить лишнее. Т.е. это следует делать уже на этапе оформления проектной документации, т.к. получаем просто набор кадовских элементов – никакой динамики.


В принципе, можно подсчитать кол-во знаков руками из таблицы, но можно сделать это проще. На этапе создания сети нужно задать для знака т.н. статью расхода.



Итак, мы создали динамический объект ДОРОЖНЫЙ ЗНАК, можем вывести таблицу по сети состоящей из знаков и подсчитать общее количество. При этом мы можем перемещать знаки без необходимости отслеживать изменение пикета, получать таблицу и кол-во знаков по отдельным трассам.
Если кто, то использует более простой и эффектиный метод, пишите, буду рад.

воскресенье, 21 марта 2010 г.

CREDO-CIVIL toposigns library

Работаете в CREDO и планируете переход на Civil, но столкнулись с отсутствием большинства условных обозначений - вот один из способов организации библиотеки условных знаков в Civil’е:
1)    Создаём несколько dwg файлов – сколько-решать вам. В каждый двг файл вставляем блоками условные знаки. На мой взгляд удобнее раскидать топознаки по категориям в отдельные файлы, т.к. потом проще организовать к ним доступ.


2)    Теперь остаётся лишь открыть ЦЕНТР УПРАВЛЕНИЯ (Design center) и выбрав файл с блоками через контекстное меню сделать из него палитру


3)    В результате имеем палитру для быстрого доступа к топознакам

среда, 17 марта 2010 г.

CREDO points

О вопросе работы с точками из CREDO:
есть выгруженные из CREDO точки в виде блоков с атрибутами. Необходимо превратить их в сивиловские точки для дальнейшей работы с проектом в сивиле же (рис.1).
«В лоб» задачу решить не удалось, т.к. метод «переместить блоки на отметку атрибута» не годится, в силу того, что он позволяет переместить блок и все его вхождения на отметку из атрибута, но в нашем чертеже каждая точка представлена в виде блока со своим названием. Поднимать каждый блок на свою высоту – не вариант. Кроме того поверхность на основе блоков с отметкой мы построим, по это будут простые блоки, а не точки. В связи с этим родился такой вариант:
Смысл варианта таков: извлекаем необходимые атрибуты из блоков CREDO, экспортируем их во внешний файл и импортируем файл точек, где будут присутствовать и номера точек, имена, X, Y, Z.

1)    Во вкладке ВСТАВКА выбираем команду ИЗВЛЕЧЬ ДАННЫЕ (рис.2)


2)    Создаём новый файл извлечения данных (рис.3)





3)    Далее можно выбрать элементы с чертежа (рис.4)
   

Используя настройки можно облегчить себе выбор объектов.
4)    Следующий шаг позволяет отсортировать из выбранных объектов нужные (рис.5)


5)    Следующим шагом отключаем все ненужные категории и атрибуты (рис.6)


6)    Со след. экраном всё понятно (рис.7). 

7)    Жмём кнопку ДАЛЕЕ. Выбираем формат внешнего файла (рис.8).

8)    Теперь при желании можно доработать полученный файл, например, открыв его в экселе.
9)    Теперь осталось лишь открыть сивил, настроить фильтр и импортировать точки (рис. 9). Если в массиве точек есть точки станций со своими специфическими именами, можно импортировать их отдельно, чтобы не было путаницы. По хорошему, можно сразу импортировать данные с прибора в сивил, уравнивать во вкладке СЪЁМКА и оформлять ситуацию уже в одной среде. Но тут уж кто как и в чём привык работать.