|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Построение цифровой модели рельефа по растровой карте
Регистрация: 23.09.2010
Сообщений: 9
|
||
Просмотров: 22765
|
|
||||
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Если "на любом языке программирования", то программисту надо знать про существование
http://algolist.manual.ru/ http://alglib.sources.ru/ Для Delphi - на torry есть библиотечные реализации. На LISP - лучше всего у Евгения, ссылка в #2 |
|||
![]() |
|
||||
Регистрация: 23.09.2010
Сообщений: 9
|
Цитата:
Ну есть одна идея: разбить область на равномерную прямоугольную сетку, посчитать какие треугольники попадают в каждую ячейку сетки, а потом при работе попадание точки в ячейку прямоугольной сетки вычисляется элементарно и найти найти нужный треуголик не составит труда. Еще варианты в студию! ![]() |
|||
![]() |
|
||||
Можно и мне свои пять копеек вставить?
Начну с постановки задачи Цитата:
Либо просто точки с отметками высот, как на всех геоподосновах, что в рельеф перевести вообще получается черте что. Предполагается эту лабуду держать в виде математической модели. Ладно. Триангуляция говорите? - А зачем? Для компактности? или для облегчения математических вычислений высоты и координат точки, на которую вы ткнули? Если взять и все горизонтали сделать сплайнами, а сплайн самая компактная форма матиматического описания кривой, да еще и расбросать эти сплайны по вертикали, то какая триангуляция вам еще нужна? А между прочим, 3D солид самая компактная математическая модель описания объема и именно по этому математическому описанию строится визуализация. 3D солид не только компактно упакованная математическая модель, но и шикарный инструмент определения точек пересечения с другими математическими объектами. Дело не в визуализации, как цели построения пространственной фигуры, а как инструмента решения конкретных задач. Берем горизонтали, переводим их в сплайны, разносим по вертикали и командой _loft (2010 кад) строим математическую модель рельефа. ![]() |
||||
![]() |
|
||||
Регистрация: 23.09.2010
Сообщений: 9
|
Supermax
Очень хорошо! Про сплайны, горизонтали и разнос по вертикали понял, да и сам в курсе. Но только как найти высоту точки между сплайнами (горизонталями)? Математику в студию, плиз. А так идея конечно супер. Мне бы желательно смастерить что то такое свое чтоб не использовало сторонние програмные продукты. И главное: на выходе должно всегда быти что то типа z=f(x,y)!!! По другому не подходит. |
|||
![]() |
|
||||
Если смотреть на хранение данных о рельефе без привязки к программам, то это хранение может быть интересно только историкам, а в реальном строительстве геоподоснова теряет свою реальность еще на стадии создания. Архивные данные почти всегда не соответствуют натуре. Геодезисты порой просто халтурят и упрощают себе работу надписями типа "изрыто". Вот как такую надпись перевести в математическую модель?
Не привязываться к программам имеет смысл только изходя из того, что они устаревают и заменяются другими, которые старые форматы файлов и макросы не переваривают. Но всегда, я подчеркиваю, всегда математика находит себе выход в программу. Ее только в программе можно хоть как-то использовать. Создав объемную модель рельефа в любом формате файла вы всегда прочтете этот файл, даже если умрут фирмы, которые писали ПО для вас. Это ПО у вас на компе никто не сотрет, руки коротки. И компьютер вы выбросите только тогда, кода купите другой, который может все ваши файлы читать. 3D солиды придумали не в AutoDesk. Есть описание их структуры и рельеф там можно делать как сеть сплайнов, причем в трех плоскостях. все разбито не на треугольники, а на квадратики (хотя можно и треугольниками, больше сплайнов потребуется), где каждая грань - участок сплайна. Но эти все сложности не нужны. Надо упрощать, а не усложнять, тем более, что исходный материал - ![]() Если вы понимаете, что математику тоже прийдется хранить в файле, и что DWG или DXF ничем не хуже, то как найти точку на сплайне ближайшую к вектору Z с координатами такими-то, затем к другому сплайну и затем нахождение искомой точки, родим с божей помощью. Есть два сплайна. Задаем точность и переводим описание сплайна в 3D полилинию или кучу отдельных линий. Находим ближайшую по XY к XY вектора Z и вычисляем на этой линии XYZ точку кратчайшего расстояния. Проделываем то же самое с другим сплайном. Имеем две точки и координаты нашего вектора Z. Находим точку на отрезке между двумя точками на сплайнах ближайшую к вектору Z. Z этой точки и есть искомый Z на нашем векторе. Надеюсь понятно? Последний раз редактировалось Supermax, 24.09.2010 в 23:56. |
||||
![]() |
|
||||
Инженер дорожник Регистрация: 22.10.2007
Израиль
Сообщений: 1,855
|
Всякая идея должна кудато вести. Для обработки растров есть к примеру
AUTODESK.AUTOCAD.RASTER.DESIGN.V2011. Но вёравно он не строит модель местности. Нужно полученные линии тобишь горизонтали разнести по высотам в ручную. Есть программы которые по эти горизонталям построят рельеф местности и дадут возможность ткнув в любую точку получить x,y,z к примеру autocad_civil_3d_2011. И уже на самое последнее в autocad_civil_3d_2011 и 2010 имеется функция Import Google Earth &Surface... ![]() |
|||
![]() |
|
||||
Во! И я о том же. Использовать чей-то продукт и затачивать под него архив не значит ангажировать конкретного производителя ПО. На 14 каде до сих пор многие работают (так архивы сделаны) Хотя в этот формат можно и на более продвинутых кадах все записывать (денег на ПО жалко).
Когда архив разросся, его влом на другой формат переделывать, но если перевести описание чего-то в математическую модель и хранить в текстовом формате (он кажется вечным), то все равно надо писать прогу перегоняющую текст в формат современных ПО. Если все хранится не в тексте, то все равно писать конвертер придется. Так какая разница в чем хранить? Все одно, что понос, что золотуха. |
||||
![]() |
|
||||
Цитата:
Надпись изрыто, лишь говорит о том, что горизонтали там проводить не стоит, а отметка дона для общего понимания, т.к. на 2 метра вправо она (отметка) может быть уже на 0.5 метра выше, а на 2 метра влево на 0.5 метра ниже, потому, что там "изрыто". Кстати, ещё бывают "Навалы грунта" они вам тоже не понравятся ![]()
__________________
Почему все вдруг становятся умными, когда уже не надо? |
||||
![]() |
|
||||
Я не говорю о тех ситуациях, когда в самом деле нет смысла описывать данный участок, но когда геодезисту просто было влом попасть на охраняемую территорию и он на ровном месте, без ям и куч написал "изрыто", чему я много раз сам был свидетелем, поскольку теплотрассами часто озабочен, то уж сами понимаете.
Один раз было в Москве, почти в центре. Строение задом примыкает к крутому склону и участок за строением порос колючими кустами, так на геоподоснове там написано "изрыто" пришлось самим отметки снимать. |
||||
![]() |
|
||||
Регистрация: 23.09.2010
Сообщений: 9
|
![]() |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Цитата:
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Потому народ и ссылается на программы, в которых это реализовано. Реализовывалось, между прочим, на наших глазах в течение лет двадцати, прежде чем стали хорошие результаты появляться. Карта я пишу в кавычках, потому что это понятие для "бабушек на скамейке". Если работаете действительно с картой, т.е. отображением поверхности планеты с учетом её формы, задача и теоретически нерешаема. Надо говорить про план, т.е. представление местности из предположения, что земля плоская и покоится на спинах слонов. А когда есть идеализированная модель местности, где можно горизонтали представить в виде "некую гладкую функцию вида z=f(x,y)", остальное - дело техники программирования. Геодезические алгоритмы триангуляции изложены в учебниках по геодезии. Без привязки вообще к программирования. Есть и старая книжка "Решение массовых геодезических задач на микроЭВМ" (еще 1991 год). Там достаточно подробно. В доступной плоской форме. И не стоит игнорировать ссылку в #2 на сайт Евгения Елпанова. Там и реализации. Весьма квалифицированнные. Свои функции не прилагаю. "Из прынцыпа" (С). У Евгения лучше. |
|||
![]() |
|
||||
Регистрация: 22.09.2005
здесь могла быть ваша реклама
Сообщений: 1,296
|
|
|||
![]() |
|
||||
Регистрация: 23.09.2010
Сообщений: 9
|
Ну как я уже себе представляю нужно сделать следующее (по шагам):
1. Набросать из растровой карты горизонтали и отметки высот. Ну эту часть я планирую делать вручную пока что, без всевозможных векторизаторов и т.д. 2. По точкам сдеталь триангуляцию. Каждая точка "знает" в каких треугольниках она участвует. 3. Для ускорения расчетов всю область предварительно разбить на бинарное дерево, в конце каждой ветки будет только одна точка (ну или сделать ограничение на максимальное количество подветок). Далее просто: тыкаем в любом месте карты, по бинарному дереву определяем..... даааа... пишу пишу ..... ниче не определяем, всплывают загвоздки которые сводят на нет весь труд ![]() .... пока туго .... |
|||
![]() |
|
||||
Регистрация: 03.05.2009
Сообщений: 112
|
Если требование гладкости (это очень нужно?) заменить непрерывностью рельефа, самое простое решение с моей точки зрения такое:
На план накладываем прямоугольную сетку, каждая клетка которой имеет постоянную высоту, ширину и разделена диагональю на два прямоугольных треугольника, допустим из левого верхнего угла в правый нижний. Внутри каждого треугольника (ячейки) считаем рельеф плоским. Для любой указанной пользователем точки плана P по координатам Xp,Yp можно легко найти адрес ячейки, которой эта точка принадлежит. И если известны координаты Zv вершин ячейки можно найти требуюмую Zp. Математика действительно здесь очень проста. В принципе об этом говорит автор темы (пост #5). Сложнее подготовить план, т.е. решить апроксимационную задачу и найти Zлополучные координаты Zv для вершин сетки по имеющимся данным: по изолиниям ли, просто по списку известных точек рельефа, нерегулярным образом расположенных на карте. Последний раз редактировалось Li6-D, 26.09.2010 в 01:01. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 23.09.2010
Сообщений: 9
|
Цитата:
Цитата:
![]() есть вариант: строить бинарное дерево, и определять, какие треугольники лежат полностью или пересекают каждую ячейку бинарного дерева, или же построить регулярную прямоугольную сетку и так же определить какие треугольники находятся полностью или частично в каждой ячейке. Да, кстати, посоветуйте, пожалуйста, алгоритм, или лучше уже готовое решение, триангуляции, которая бы лучше подходила для геодезии. Триангуляция Делонэ, где-то я читал, в случае с горизонталями дает не очень удовлетворительные результаты. |
|||
![]() |
|
||||
Проектирую Регистрация: 10.01.2005
Сообщений: 3,738
|
Зачем вдаваться в детали: что, почем и почему...
Это уже давно придумали и я не знаю другого, чтобы использовали в современных программах типа Геоникса, кроме триангуляции Делонэ Цитата:
Для расчетов отметок/объемов горизонтали не используют. Они только для визуальной "проверки" рельефа. Считают по поверхности, т.е. по тем самым треугольникам |
|||
![]() |
|
||||
Регистрация: 23.09.2010
Сообщений: 9
|
в смысле построенная по горизонталям!
ну в принципе, то что нужно я уже нашел, спасибо Александру achawk.narod.ru, буду разбираться, так что тему можно считать решенной |
|||
![]() |
|
||||
Регистрация: 02.06.2009
Сообщений: 36
|
Если тема еще актуальна, возможно смогу оказать конкретную помощь. У меня есть собственные наработки по этой теме. По набору пикетов (точек с xyz) cтроится триангуляция Делоне. Есть функция укладки проектной линии на поверхность (с математической точки зрения - проектирование плоской полилинии на поверхность, представленную треугольниками, а точнее 3DFace). а в ней, конечно z = f(x,y), только определение в какой треугольник попадает точка решено просто перебором.Приложения составлены на VLISPe. Поэкспериментировал со сглаживанием поверхности - пришел к выводу, что это не приводит к ощутимому улучшению результата. Проверял на стереомоделях в Photomode. Точнее в каких то случаях это происходит, но нет способа заранее сказать когда это случится. А вообще на эту тему много публикаций, в одной диссертации, например, доказывается, что точнее всего сглаживать поверхность рельефа методом крикинга. Замена сети треугольников регулярной сеткой целесообразна только для облегчения дальнейших вычислений, но это искажает результат. Если работаете по тополанам, где горизонтали строились на основе пикетов, то их не нужно использовать - горизонтали это производная от пикетов это раз, а второе - Вы ну уверены что они построены верно.
Последний раз редактировалось Кулик Алексей aka kpblc, 13.10.2010 в 10:19. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
А про горизонтали можно уверенно утверждать - все они нарисованы неверно. Потому что они именно "рисуются", и другой топограф по тем же самым пикетам "нарисует" горизонталь хоть немного, но иначе. Хорошо ещё, если они правильно характер рельефа отображают. А если рельеф не явно выраженный, провести горизонтали очень сложно. Только "на глазок". |
|||
![]() |
|
||||
Регистрация: 02.06.2009
Сообщений: 36
|
Это т.н. структурные линии рельефа. Есть два варианта решения: 1)Строить триангуляцию с учетом этого, а это значит в алгоритме д.б. предусмотрено, что треугольники не должны пересекать эти динии 2)строить триангуляцию "так как есть " а потом удалаять ребра пересекающие линии т.е. преобразовать триангуляцию. Вообще говоря, через перечисленные объекты не должны "проходить" горизонтали - только и всего, а ЦМР может быть построена правильно и без учета их, но в этом случае пикеты должны выбираться "грамотно".
|
|||
![]() |
|
||||
Регистрация: 02.06.2009
Сообщений: 36
|
Какова конечная цель? Для построения цифровой модели рельефа и дальнейшего ее использования я использую Lisp-программу. Поскольку это делаю в Acade, то не создаю никакого дерева и не храню информацию о соответствии точек и треугольников. Что называется построил 3D-Face и забыл. ЦМР в виде треугольников (3Dfase) наиболее точна, т.к. она строится по пикетам, выбираемым специальным образом на месиности. Всякая сглаживание не улучшает модель. А если все-таки это необходимо делать, то можно создать регулярную сеть, а можно сгладить и сплайнами. Все это легко делается на Lispe/
|
|||
![]() |
|
||||
Регистрация: 02.06.2009
Сообщений: 36
|
"каждая точка знает в каких треугольниках учавствует", "бинарное дерево", "матрица инцидентности" и пр - это хорошо для классических языков, для Vlispa (да и для самой задачи) все должно быть проще. И есть - например у Елпанова. По массиву точек строится поверхность в виде 3Dface. Всякое сглаживание поверхности вносит погрешность. А для определения z (т.е. z = f(x,y)) нужной точки достаточно прогу которая находит точку пересечени отрезка с плоскостью 3Dграни. Если время поиска попадания точки на ту или иную грань критично, можно придумать всякие хитрости. Для сведения - при количестве граней 500-700 (точек 400) ждать не долго.
|
|||
![]() |
|
||||
Регистрация: 06.09.2015
Сообщений: 13
|
Здравствуйте все. Сразу скажу - я не работаю в автокаде. Меня интересует, есть ли возможность преобразовать топографическую карту автокада, в растровую карту высот?
Типа вот в такую: <a href='http://hostingkartinok.com/show-image.php?id=07148561a947f824d251e4c428457e4d' title='imagehost'><img src='http://s7.hostingkartinok.com/uploads/thumbs/2015/09/07148561a947f824d251e4c428457e4d.png' /></a> Если такое можно сделать, то на сколько это сложно и кто может такое осуществить? Могут ли геодезисты такую услугу оказать? |
|||
![]() |
|
||||
Регистрация: 06.09.2015
Сообщений: 13
|
Цитата:
Цитата:
![]() Я же не знаю какова данная реализация, может там (грубо говоря) пару кнопок нажать для ковертирования, просто я об этом не знаю. Для начала хотел узнать существует ли такая возможность, если да, то на сколько сложно это реализовать. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,616
|
Прикольно, а что должно на выходе получится, применительно к этому исходнику?
Цитата:
Штатно, в автокаде, такого конвертера нет, на счет наличия такого в Civil 3D не знаю. Так что или смотреть, что там есть в Civil 3D или писать код. тоже самое но только наоборот - ![]() ![]() ![]() Последний раз редактировалось Boxa, 08.09.2015 в 09:31. |
|||
![]() |
|
|||||
Регистрация: 06.09.2015
Сообщений: 13
|
Цитата:
![]() Цитата:
По идее данная функция должна быть полезной и восстребованой, потому как и растровые и векторные карты используются в разных продуктах. Цитата:
тоже самое но только наоборот - ![]() ![]() ![]() А что не так? Цитата:
|
||||
![]() |
|
||||
Регистрация: 06.09.2015
Сообщений: 13
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
lema, картинку не видно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 06.09.2015
Сообщений: 13
|
Я не знаю этой программы, т.е. Civil 3D может открыть dwg и без заморочек преобразовать вот в такую растровую карту?
Можно чуть подробней, потому что я этой программы в глаза не видел и не то что не видел, а даже не работал в подобных. Если там нет особых сложностей, можете подсказать как правильно открыть и куда нажать чтобы преобразовать? Установил программу и нашел инструкцию: Цитата:
И так же не понятно, на выходе должен образоваться файл с расширением dem? Если да, то моя программа его не поймёт, она понимает растровые картинки в обычных графических форматах типа jpg и т.д. |
|||
![]() |
|
||||
Регистрация: 06.09.2015
Сообщений: 13
|
Real time landscaping arhitect
Цитата:
План в формате dwg. ну наверно он из автокада - большего я не знаю. Цитата:
Могу конфигурацию своего ПК выложить ![]() |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,115
|
1. Можно импортировать изолинии
только перенесите их, сначала, в отдельный файл 2. Этот файл получен экспортом из программы, в которой уже была полученна поверхность, а значет из неё можно получить готовую поверхность Что бы создать поверхность, надо взорвать блоки-точки, потом выделить полученные круги и из них построить поверхность После экспорта в DEM, можно используя GDAL, подобрать нужный формат растра P.S. Цитата:
|
|||
![]() |
|
||||
сети Регистрация: 03.11.2008
Московия*
Сообщений: 5,964
|
https://www.youtube.com/watch?v=Bij5Cgbn4uw - где-то с 25-й минуты, пример. Ставите вместо цветных серые тона. Переводите/печатаете поверхность в таком представлении любым способом в растр.
Цитата:
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,115
|
В справке проги везде пишутся футы, максимальный размер растра 1024 точек
0.3048*1024=312.1152 метра update: Сама плотина снята паршивенько, изолиний нет - придётся самому рисовать... Последний раз редактировалось trir, 11.09.2015 в 10:59. |
|||
![]() |
|
||||||||
Регистрация: 06.09.2015
Сообщений: 13
|
Похоже у меня получилось без растровой карты. Не заметил кнопку импорта изолиний в программе.
Цитата:
Цитата:
![]() Цитата:
![]() Скажите лучше как измерить в Civil 3D расстояние от одной точки до другой, а то как назло ни одного размера на чертеже, хочу проверить правильность масштаба при переносе. Цитата:
Цитата:
Цитата:
Цитата:
|
|||||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Цифровая модель рельефа и построение горизонталей | D1mkaM | Прочее. Отраслевые разделы | 14 | 13.10.2010 10:17 |
Построение видов модели | pm_86 | AutoCAD | 7 | 27.09.2009 20:58 |
MapInfo Создание цифровой модели рельефа | kartography | Вертикальные решения на базе AutoCAD | 5 | 14.07.2009 06:31 |
Построение трехмерной модели жилого массива | Alexeychiк | Другие CAD системы | 3 | 24.02.2009 20:17 |
SCAD и очистка цифровой модели | EUDGEN | SCAD | 4 | 09.01.2006 08:47 |