Новые возможности программы

Функции языка скриптов для извлечения отдельных элементов XML строк

В кадастровых обменных файлах XML каждый параметр хранит множество данных. Для доступа к ним добавлены следующие функции:

@XML.XPath Query XMLString
Возвращает результат XPath-запроса Query к XML-строке XMLString

Пример: Вывод сообщения с типом и названием проезда, извлеченными из параметра ID7000500 “Місце розташування земельної ділянки”.
$Address=@Map.Selected.GetParameter ID7000500
$StreetType=@XML.XPath ParcelAddress/StreetType $Address
$StreetName=@XML.XPath ParcelAddress/StreetName $Address
@Dialog.Message $StreetType $StreetName

@XML.NodeCount Query Tag XMLString
Возвращает количество дочерних узлов Tag в элементе Query

Пример: Вывод сообщения с числом собственников земельного участка.
$Props=@Map.Selected.GetParameter ID7000520
$Props=$Props
$PropCount=@XML.NodeCount Proprietors ProprietorInfo $Props
@Dialog.Message $PropCount

@Map.Object[N].CalculateFormula Formula
Повзоляет использовать в скрипте функции вычисляемых параметров без их создания.

Пример: Вывод сообщения с именем собственника (параметр NM) помеченного участка в родительном падеже.
$SO=@Map.SelectedObject
$ROPNM=@Map.Object[$SO].CalculateFormula ROP(P[NM])
@Dialog.Message $ROPNM

Улучшено текстурирования 3D моделей

Команда скрипта @Window.GenerateTextures, используемая для автоматического текстурирования 3D моделей по аэроснимкам, была существенно доработана. Главной проблемой этой команды были наложения на стены зданий изображений других зданий, стоящих на пути съемки. Также изображения крыш попадали на стены своих же зданий.


Дефекты при автоматическом текстурировании

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


Большинство дефектов устранено

Для вызова команды в новом режиме используется параметр HIGHQUALITY

[code]@Window.GenerateTextures PhotoDir PAK JPG HIGHQUALITY, где

PhotoDir - путь к папке со снимками - источниками текстур
PAK - если параметр указан, все текстуры упаковываются в один файл с расширением .dtx
JPG - формат текстур JPEG или BMP
HIGHQUALITY - медленный но более качественный способ генерации текстур[/code]
Другие улучшения при использовании параметра HIGHQUALITY:

  • Все текстуры крыши одного здания по возможности берутся с одного снимка. Это устраняет швы между гранями крыши, которые могут возникнуть из-за разной освещенности крыши на различных снимках.

  • Более эффективно используется полезное изображение снимка. Производится поиск границы белой области для DAS снимков и эта область отбрасывается. Старый алгоритм не использовал 10% изображения, делая фиксированный отступ.

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


Текстурирование старым способом.


Текстурирование с параметром HIGHQUALITY.

Однако за качество надо платить быстродействием. Новый способ текстурирования в 4 и более раз медленнее старого.

Файлы примеров:

3D модель района Винницы(Вишенка) (199 Мб)

В архиве файлы:

Vishenka-old.dmf - старый способ текстурирования
Vishenka-new.dmf - новый способ текстурирования (для просмотра в 3D включите Вид>Полный, Вид>Трехмерный)
Vishenka-new.tif - орто для текстурирования поверхности земли
Texturing.tlb - файл панели инструментов (поместить в папку Digitals) с кнопками запускающими текстурирование

Снимки камеры 3-OC-1 для района Винницы(Вишенка) (742 Мб)

Снимки и предыдущие файлы распакуйте в отдельные папки. В команде текстурирования укажите путь к папке со снимками.

Загрузка снимков из Yandex Maps и Navteq Maps

Расширен список веб-сервисов с которых Digitals может загружать спутниковые снимки и карты (Растр|Загрузка из Интернет). Добавлена поддержка Yandex Maps и Navteq Maps. Последний сервис имеет хорошее покрытие спутниковыми снимками территории Украины и, по всей видимости, используется в приложении Apple Maps.

Новая возможность доступна только в Digitals XE

Обновлен полуавтоматический векторизатор Topotracer

Что нового:

  • Разделение объектов в выбранной точке (контекстное меню в режиме редактирования объектов, команда Разделить объект).

  • Возврат к месту начала сбора объекта по его завершению (Сервис>Настройки>Сбор>Возвращаться к началу объекта при его завершении). Удобно при векторизации горизонталей.

  • Подписи высот точек объектов (Вид>Показывать высоты точек) включает режим отображения значения Z точек всех объектов, кроме точечных. Полезно при сводке горизонталей.

  • Горячие клавиши переключения режимов отображения (Вид>Полный (F)/ Вектор (V)/ Растр (R)).

  • Исправлена ошибка при которой сбрасывалось значение высоты объектов после сглаживания или генерализации.

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

  • Исправлены ошибки утечки памяти.

Скачать программу можно здесь.

Загрузка спутниковых снимков только внутри помеченных полигонов

В окно Растр>Загрузка из Интернет в список Область загрузки добавлен вариант Внутри помеченных объектов.

При выборе этого варианта из веб-сервиса загружаться будут лишь тайлы (фрагменты), попадающие внутрь или пересекающие помеченные объекты карты. Помеченных объектов может быть несколько. Для полигонов будет заполнятся лишь внутренняя область, для полилиний будут загружаться только тайлы, которые их пересекают.

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

Просмотр публичной кадастровой карты Украины

В окно Растр|Загрузка из Интернет добавлена поддержка кадастровой карты Украины. Доступно отображение ортофото и зарегистрированных участков.

Дополнительно:

Поиск участка на ПКК по его кадастровому номеру
Векторизация участков на кадастровой карте Украины и получение атрибутивной информации
Переключение между ортофото и топографической картой для публичной кадастровой карты Украины
Получение параметров объектов из кадастровой карты Украины и карты геодезической сети

Обновлен полуавтоматический векторизатор Topotracer

Что нового:

  • Добавлена запись последнего изменения в каждый объект карты. Для отображения этого значения в Digitals добавьте в карту параметр =TimeStamp Объект_изменен, установите тип параметра Вешественный и маску dd.mm.yyyy hh:mm

  • Исправлена ошибка загрузки неблочных(stripped и plain) TIF растров, которые получаются после сохранения растра в Photoshop и большинстве остальных растровых редакторах.

  • Добавлена команда Соединить объекты. Вызывается из контекстного меню в режиме редактирования объектов (кнопка Редактирование на панели инструментов нажата). Первым помечается объект, задающий направление будущего объединенного объекта, затем объекты, которые с ним стыкуются. Если программа не может объединить объекты команда в контекстном меню будет недоступна.

  • Замкнутые горизонтали при трассировке теперь замыкаются автоматически. Исправлено “набегание” горизонтали на саму себя.

  • Добавлена настройка Радиус захвата точек и линий, мм задающая минимальное расстояние в масштабе карты при котором срабатывает автозахват. Раньше для этого использовалось значение Точность карты на бумаге, мм.

  • Исправлена ошибка при которой после вставки разрыва при сборе объекта (клавиша F4) иногда переставала работать автоматическая трассировка.

  • Исправлена ошибка неверного позиционирования курсора, возникающая иногда при остановке во время трассировки объекта.

  • Если точка остановки при автоматической трассировки в пределах видимой области карты, экран к ней не скроллируется. Таким образом устранены ненужные “дергания” экрана при автоматической трассировке.

Скачать программу можно здесь.

Гибридный режим (снимок+карта) при загрузке снимков из Интернет

Окно Растр>Загрузка из Интернет дополнено выпадающим списком Тип изображений. Среди доступных типов изображений для загрузки теперь присутствует также Снимок+Карта. Данный режим позволяет загружать спутниковые/аэроснимки с наложенными подписями, дорогами, границами, земельными участками.

XML

Список функций с группировкой и улучшенным поиском в окне редактора скриптов

В окно редактора скрипта добавлена опция Группировать, которая собирает команды с одинаковой первой частью в отдельную группу. Например, команды @Map.Copy и @Map.Paste попадут в родительский узел @Map.

Также улучшен поиск команд. Теперь отбираются все команды в названии которых содержится искомая строка. Раньше выделялась лишь первая найденная команда.

Изменения в шаблоне XMLNormal.dmf

В список возможных значений параметра ID7000901 “Код угіддя” внесен новый классификатор угодий (ПМКУ №1051 Додаток 4 до порядку). При наличии в папке [b]\Digitals\Lists[/b] файла CN2LandCode.txt файла при открытии xml-файла будет выполняться замена старых кодов угодий на новые.

В список возможных значений параметра ID7000510 “Цільове призначення (використання) земельної ділянки” внесен новый классификатор ВЦПЗ (ПМКУ №1051 Додаток 39 до вимог).

Изменения в программе Ged.exe
Диалог “Технічна документація” содержит обновленный классификатор кодов видов техдокументаций (ПМКУ №1051 Додаток 8 до вимог).

Загрузить обновленный XMLNormal.dmf >>>
CN2LandCode.txt (1.65 KB)

Скрытые и нередактируемые слои для PostgreSQL

Для карты, хранимой в PostgreSQL добавлена возможность скрывать слои от пользователей, либо же делать их нередактируемыми. Нередактируемые слои в диалоге открытия SQL карты отображаются серым. Изменение геометрии и параметров объектов в таких слоях заблокировано. Скрытые слои вообще не отображаются в этом диалоге и не загружаются.

Чтобы установить привилегии доступа к слою карты надо открыть pgAdmin (инструмент администратора, идет в стандартной инсталляции PostgreSQL), найти таблицу, соответствующую слою и открыть ее свойства. На закладке Привилегии для нужного пользователя или группы назначить атрибуты доступа к слою.

Также можно использовать SQL команду GRANT, например

GRANT ALL ON TABLE l70005 TO postgres; GRANT SELECT ON TABLE l70005 TO user1; Если пользователю назначена привилегия только на SELECT, он может просматривать слой, но не имеет права его редактировать. Если привилегия SELECT отсутствует, данный слой карты для пользователя не отображается. Чтобы у пользователя была возможность редактировать объекты слоя, он обязан иметь привилегии на SELECT, UPDATE, INSERT, DELETE, либо быть владельцем таблицы слоя.

Функция DLLExec в скриптах Digitals для выполнения функций пользователя из динамических библиотек

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

F(S: PAnsiChar): PAnsiChar; stdcall;

Все параметры передаются в виде указателя на ANSI строку, результат работы функции - тоже указатель на строку однобайтных символов. Вызов DLLExec выглядит так

@DLLExec DLLPath.DLLFunction [Parameters]

Пример использования

$S=@DLLExec d:\TestDLL.AddNumbers 44,55
@Dialog.Message $S

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

Тестовый проект TestDLL, созданный в Delphi.

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

Тестовый проект TestFormDLL, показывающий способ вызывать формы, созданные в Delphi, из скрипта Digitals.

$Params=это заголовок окна
$S=@DLLExec D:\TestFormDLL.CreateInputForm $Params
@Dialog.Message $S

Загрузка карты грунтов для публичной кадастровой карты Украины

Для кадастровой карты Украины в окне Растр>Загрузка из Интернет появилась возможность выбирать тип карты для загрузки: Кадастр или Грунты. Выбор доступен только когда выбран тип изображений для загрузки: Карта или Снимки+Карта.

Функция @Map.MakeDimensionLines в скриптах Digitals для автоматической простановки размерных линий

Функция упрощает простановку размеров на планах и чертежах. Если назначить выполнение данной команды на событие завершение сбора объекта, тогда вместо собранного объекта подставляется размерная линия с подписью длины.

%Events.OnCollect $N=@EventObject @Map.MakeDimensionLines $N ID1 HorizontalРазмерные линии бывают 3-х видов:

  1. Горизонтальные (все измеряемые отрезки проецируются на горизонтальную линию).
  2. Вертикальные (все измеряемые отрезки проецируются на вертикальную линию).
  3. Наклонные (проецирование не выполняется, выводится реальная длина отрезков).

Параметры функции:

@Map.MakeDimensionLines RefPolyline CaptionParam [Vertical/Horizontal]

RefPolyline - номер объекта-полилинии в карте, который рисуется по контуру измеряемого объекта и после выполнения команды превращается в размерную линию.

CaptionParam - номер или ID параметра, содержащего длину линии. Если в маске параметра поставить значение *1000 0, размеры будут выноситься в миллиметрах. Номер -10 будет ссылаться на стандартный вычисляемый параметр Длины линий.

Vertical/Horizontal - задает тип размерной линии: вертикальная, горизонтальная и наклонная, если параметр не задан.
MakeDimensions.exe (2.41 MB)
TestDimensionLines.dmf (4.34 KB)

Улучшенное окно установки длины линии при сборе объекта (Ctrl-D)

В окне установки длины и направления собираемой линии (Ctrl-D) добавлена настройка Фиксировать. При включении фиксированной длины собираемый отрезок можно вращать, но его длина не изменяется. При включении фиксированного угла сохраняется направление отрезка, но можно перемещением мышки изменять его длину.

При вводе расстояний допускается использование формул, например можно ввести 54+116 и результирующая длина будет вычислена автоматически. При вводе угла можно использовать представление градусы/минуты/секунды, где части отделяются пробелом.

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

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

Приоритет сохраняется за привязкой по курсору.

Функция @Map.MakeDoor в скриптах Digitals для создания обозначения дверей в планах помещений

Функция позволяет быстро создавать обозначение открывающейся двери и также создает дверной проем в контуре стен.

Удобно назначить выполнение функции на событие завершение сбора объекта, поместив код скрипта в нужный слой.%Events.OnCollect $N=@EventObject @Map.MakeDoor $N 1
Параметры функции:

@Map.MakeDoor Polyline DoorKind(1..4)

RefPolyline - опорный объект, задающий 3 точки дверного проема. Первые 2 точки обязательно должны лежать на одной стороне стены. Третья точка задает противоположную сторону стены. Остальные точки не используются. Удобно собирать опорный объект с использованием шаблона сбора Прямоугольник, при этом дверной проем не будет скошенным.

DoorKind - номер от 1 до 4, задающий вид двери.

После выполнения функции, опорный объект заменяется на созданный объект, обозначающий дверь.
FlatPlan.dmf (5.64 KB)
MakeDoors.exe (212 KB)

Новый тип блока Масштабируемый ортогональный

При сборе данным блоком, собираемый объект масштабируется с сохранением внутренних углов. То есть собрать перекошенным объект не получится.

Слева на рисунке объект, собранный с использованием блока Масштабируемый, справа объект, собранный блоком Масштабируемый ортогональный.

Данный тип блока создается как и остальные. Пометьте объекты, которые составят блок и выполните команду Сервис>Преобразовать>Объекты в блок>Масштабируемый ортогональный. Важно помнить, что первым в списке объектов блока должен идти служебный объект, задающий порядок сбора. Он удаляется при завершении сбора объекта выбранным блоком. Переместить объект в начало списка можно командой Правка>На задний план.

Скачайте приложенные DMF файлы блоков и поместите их в папку Digitals\Blocks. После этого блоки станут доступны при сборе в шаблоне сбора Блок.
BlockScaled.dmf (1.12 KB)
BlockScaledOrthogonal.dmf (1.12 KB)
BlockKinds.exe (224 KB)

Улучшена работа с памятью

Теперь программа может использовать в два раза больше оперативной памяти. Предыдущее ограничение в 2Гб увеличено до 4Гб. Больше доступной памяти означает быструю работу с растрами большого объема, возможность строить ЦМР и TIN на большую территорию.

Ваш компьютер должен иметь не менее 4Гб памяти (а лучше больше, так как часть памяти используется операционной системой и другими приложениями) и на нем должна быть установлена 64-разрядная версия Windows.

Если у вас 32-разрядная Windows, то вместо 4Гб вы сможете получить 3Гб. Но для этого необходимо выполнить описанные ниже настройки.

Источник nanocad.ua/help/OptionSupport.php

Одновременная работа с несколькими базами данных в скриптах Digitals

В скрипты Digitals добавлены функции:

@SQLConnect ConnectionString - создание подключения с параметрами, заданными в ConnectionString, возвращает номер созданного подключения. Примеры строк подключения для MSSQL connectionstrings.com/sql-server.

@SQLSetActiveConnection ConnectionNum - установка активного подключения по номеру, 0 - для подключения карты (Файл>SQL соединение).

@SQLGetActiveConnection - получение номера активного подключения, 0 - если активно подключение карты.

@SQLGetConnectionCount - возвращает количество созданных подключений.

Использование этих функций позволяет выполнять запросы @SQLQuery/@SQLExec к произвольной базе данных, для которой создано подключение функцией @SQLConnect. Ранее @SQLQuery/@SQLExec работали только с подключением карты (Файл>SQL соединение).

Теперь, к примеру, вы можете использовать скриптовые SQL функции для связи карты с базой данных какого-либо бухгалтерского приложения.

HTML подписи в картах Digitals

Добавлена поддержка HTML форматирования подписей. Подписи, значения которых заключены в теги интерпретируются как HTML код и отображаются на карте с применением заданного форматирования.

Все строковые параметры теперь имеют отдельное окно редактирования, которое открывается двойным кликом по значению параметра, либо кликом по кнопке […] справа от значения параметра.

При включении опции HTML код значение параметра рассматривается как строка с HTML форматированием. Также появляются инструменты для вставки основных HTML тегов и закладка предварительного просмотра.

Если в Карта>Параметры в поле Маска ввести HTML строку, она будет использована как значение данного параметра по умолчанию. Для применения значения параметра по умолчанию на закладке Инфо выполните двойной клик по пустому значению параметра.

В HTML параметрах можно использовать формулы. Формулы заключаются в теги . Таким образом можно ссылаться на другие параметры карты, а HTML параметр использовать для форматированного вывода.

[code]

=P[4]-=P[5]


=P[6]

[/code]HTML код ссылается на параметры 4, 5 и 6. Также код содержит горизонтальную черту, образующую дробь:

HTML для подписи характеристики леса (укажите свои ID в формулах)

[code]

=P[ID_растительность1]
=P[ID_растительность2]

=P[ID_высота_деревьев]


=P[ID_толщина_деревьев]

=P[ID_расстояние_между_деревьями]
[/code] [img]https://vinmap.net/samples/HTMLForestDescr.jpg[/img]

HTML подписи можно масштабировать и вращать как обычные подписи. Можно создавать сложные таблицы, такие как таблица экспликации.


HTMLForestCaptions.dmf (2.28 KB)
HTMLCaptions.dmf (2.05 KB)