Добавьте пожалуйста в шаблоны сбора СПЛАЙН или ПОЛИГОН/ПОЛИЛИНИЯ СГЛАЖЕННАЯ. Сглаживание реализовано только для слоя, а необходимо еще уметь сглаживать отдельные объекты слоя.
А чем не устраивает команда Правка|Сгладить?
Вставляйте перед сглаживанием с нужным шагом точки в контур объекта. Команда Правка>Добавить точки. Затем выполняйте сглаживание нужное число раз. Затем скопируйте объект в чистую карту, и запустите Карта>Генерализация, с указанием точности 0.1-0.2 мм. И получите красивый, сглаженный объект с небольшим числом точек.
Издеваетесь?
Ну так все вышеописанное не нужно делать с каждым объектом. Эти операции можно выполнить уже после сбора всех объектов нужного слоя. Со сплайнами Digitals работать не умеет, как, впрочем, и большинство ГИС. Все объекты заданы последовательностью координат, точки объектов соединяются отрезками. Это линейная интерполяция. Быстро, просто и реализовано в любом графическом движке.
Для сплайнов обычно используется кубическая интерполяция, с использованием контрольных точек кривой. Координаты этих точек, плюс параметры сплайна и хранят САПР программы, типа автокада. Тут уже не все так просто. Сплайны не поддерживаются большинством графических движков и большинством ГИС программ. При экспорте, например, в shp все сплайны придется преобразовывать в ломанные кривые.
Скажите откуда такая острая необходимость в сплайнах. Вы же наверняка не проектируете кузова автомобилей в Digitals? ![]()
Сомневаетесь? ![]()
Давайте рассмотрим на примере топографической съемки
Рисую край откоса по пикетам
полилиния по пикетам - 10 сек
+2 сек - правка/добавить точки, правка/сгладить
в результате узлов в объекте больше, отклонение на пикете - 2 м
Если не добавлять узлы, то сглаживание ничем не улучшает ситуацию, так как все равно имеем ломаную полилинию, а плюс ко всему еще получаем отклонение в 2 метра.
35 сек еще уходит на ручное редактирование - добавление и растаскивание узлов в нужных местах
+2 сек - сгладить
итого 45-50 сек
50 секунд уходит на то, чтобы отрисовать откос дугами (CTRL+A) при этом мне всегда нужно просчитывать промежуточные узлы, чтобы дуга формировалась как надобно и редактирования зачастую потом тоже необходимо
итого около 80 сек.
если тип слоя установить в полигон/полилиния (гладкая), время на сбор - 10 сек (как в первом случае), и отклонение на пикете тоже 2 м
Рисуя сплайном у меня уходит около 15 сек и нет никакого отклонения на пикете - линия проходит четенько там, где она и должна быть.
Отсюда видна разница?
И почему бы тогда по вашей координатной идеологии не сглаживать полилинию так, чтобы она визуально не съезжала с тех узлов, по которым собрана?
А чтобы не было проблем с последующим отображение и экспортом сплайна - я ж не против - можно сразу преобразовывать его в полилинию и включать тоже сглаживание
ну как в тех же вышеупомянутых САПР.
Это все равно, что выиграть войну не убив ни одного человека
Как же полилиния сгладится, если не изменять позиции ее узлов?
Вы забыли про Карта>Генерализация это уберет лишние точки.
Ну тогда прибавляйте еще секунд 15
Но ведь выиграть ![]()
example.exe (253 KB)
Пример хороший, спасибо
Снова вернулись к тому, с чего начали. В примере сплайн в автокаде, который строится по контрольным точкам. В Digitals же только координатная геометрия, никаких тебе сплайнов. Чтобы сделать простой скрипт, выполняющий описанные выше операции для сглаживания полилиний нужно, чтобы команда Карта>Генерализация работала не только для всей карты, но и лишь для помеченных объектов. И вынести эту команду в список функций скрипта, чтобы сразу задавать точность генерализации, минуя диалоговое окно. Тогда операцию сглаживания полилинии можно будет выполнять нажатием одной кнопки, контролируя процесс сглаживания шагом добавляемых точек и точностью генерализации.
Такой вариант устроит?
P.S. Номер этого сообщения 666. Осторожней отвечайте ![]()
Так исходя их этого лучше доработать команду - СГЛАДИТЬ - чтобы она не смещала точки - а добавляла точки в виде аппроксимации полинома третьей степени (ИМХО - самым простым в данном случае и подходящим для этой задачи). ![]()
P.S. Номер этого сообщения 666. Осторожней отвечайте
Я вместе с Вами праздновала Ваш 500 юбилей, теперь вместе с Вами попала под ![]()
В примере не сплайн, а сглаживание полилинии - поэтому на 666 сообщение Вы имеете -1 жизнь ![]()
Меня устроит вариант, который будет адекватно срабатывать и занимать минимум времени ![]()
Оптимальным был бы конечно же сплайн. Потому что элементарно хочется в процессе сбора видеть что у тебя получается, а не баловаться потом с редактированием объектов. В предложенном варианте я не вижу ничего нового, экспериментировать с N-ым количеством сглаживаний/добавлений и генерализаций - это не серьезно.
Опять таки пример:
Здесь синий - исходная полилиния, зеленый - сплайн, красный - результат сглаживания полилинии. Отличие на начальном и конечном сегментах между сглаживание и сплайном достигается изменением направления касательных. Как видно в середине объекта результат практически идентичный. А самое главное, что обе линии проходят через необходимые мне пикеты.
Понимаю, что сплайн Вас не устраивает. Поэтому давайте искать выход - чтобы и вам, и нам ![]()
Так исходя их этого лучше доработать команду - СГЛАДИТЬ - чтобы она не смещала точки - а добавляла точки в виде аппроксимации полинома третьей степени
Не матюкайтесь! ![]()
Треба знайти і почитати свої конспекти по вишмату…
В примере не сплайн, а сглаживание полилинии - поэтому на 666 сообщение Вы имеете -1 жизнь
Меня устроит вариант, который будет адекватно срабатывать и занимать минимум времени
Оптимальным был бы конечно же сплайн. Потому что элементарно хочется в процессе сбора видеть что у тебя получается, а не баловаться потом с редактированием объектов. В предложенном варианте я не вижу ничего нового, экспериментировать с N-ым количеством сглаживаний/добавлений и генерализаций - это не серьезно.
Здесь синий - исходная полилиния, зеленый - сплайн, красный - результат сглаживания полилинии. Отличие на начальном и конечном сегментах между сглаживание и сплайном достигается изменением направления касательных. Как видно в середине объекта результат практически идентичный. А самое главное, что обе линии проходят через необходимые мне пикеты.
Понимаю, что сплайн Вас не устраивает. Поэтому давайте искать выход - чтобы и вам, и нам
Просто движение этих касательных и определяет вид сплайна и степень полинома и потом хранит эту формулу вмест с объектом (это что касается САПР - как Саша и говорил). Это абсолютно другая концепция хранения и представления данных - именно поэтому то - САПР, то ГИС, а это - Диджиталс :!:
Поэтому ИМХО - выход - это есть слой типа Полигон/полилиния (гладкая) - вот тут можно задавать - какой полином использовать при аппроксимации.
Плюс - при Правка - сгладить - иметь диалог в виде выбора - сплайн или не сплайн или ещё что-то - но потом приводить объект к табличному виду хранения данных в структуре DMF файла. Это единственное видимое решение со стороны НЕ разработчика.
Прошу простить меня за мой дилетантский подход. ![]()
Я уже как то боролся с этим ![]()
В итоге написал програмку для сглаживания линий не меняя узлов исходных объектов. Оно конечно не сплайн но линия становится “мягче”. Если интересует могу её положить сюда
Безвозмездно - тоесть дадом ![]()
Уже заинтересовало ![]()
Вот оно ![]()
Принцип действия прост
Выделили объект нажали первую кнопочку. Появился новый сглаженый объект.
Если объект большой (100+ точек) жмем вторую кнопочку. Для того чтобы объект появился надо нажать - вырезать - вставить (сам не знаю почему оно так себя ведет
).
Curve.exe (323 KB)
ВЕЩЬ!!!
Мне нравится
спасибо!


