Есть очень большой файл, весом в несколько сотен МБ. При загрузке оного, на даже достаточно хорошем среднем ПК - уходит времени много десятков минут. Плюс на внутренние “масштабирования” , “перемещения” до заданного участка - немало времени.
Разбили весь объект на квадраты. Каждый квадрат - замкнутый полигон. Все квадраты в одном файле и в одном и том же параметре имеют порядковый номер.
Есть ли возможность сделать что-либо, чтобы, без ручного “разрезания” и размножения на десятки и сотни файлов, обеспечить открывание только заданного полигона этого файла?
Возможно есть возможность прописать какой-либо макрос (или иную хитрость), чтобы файл при открытии и задании этого параметра - открывался только в требуемых границах?
Условно вопрос иллюстрирован на прикрепленной картинке.
Без того, чтобы разрезать файл на планшеты, никак. А уж после этого можно попробовать наладить какие-нибудь средства поиска. Например, можно сделать файл, содержащий номенклатуры планшетов и ссылки на их файлы (для этого используется параметр типа Файл). Сюда же можно бросить какой-нибудь минимальный навигационный набор данных: улицы, города, водные объекты, - зависит от масштаба вашей карты. Теперь можно будет открыть файл, найти место, пометить границу планшета, зайти в Инфо и щелкнуть дважды по ссылке на файл. Файл откроется на новой вкладке.
Еще пример автоматизации хранения планшетов, но уже с помощью скриптов смотрите здесь.
Тогда из сего, если кто подскажет - буду благодарен следующему:
как прописать скрипт, задающий границы обрезки и обрезающий все объекты вне этих границ? Без необходимости создавать полигон, и обрезать вручную через “Сервис”?
Возможно ли сие?
Доброго дня шановні колеги підскажіть будь ласка чи можливо в діджиталі на карті із сіткою планшетів зробити посилання на планшети, які є векторного формату, щоб планшети відображались на карти проте були на карті лише посиланням а самі знаходились десь на компі. В мене проблема в тому що є планшети 500-го масштабу на все місто, розмір цих планшетів 27 гігабайт 86 штук, всіх разом я не можу їх зшити у діджиталі не вистачає памяті для обробки, комп досить потужний. В архітектурі у мене в місті вони працюють в автокаді і програма це дозволяє зробити, а можливо це зробити у Діджиталі? Допоможіть будь ласка!
Доброго дня я спробував виконати ці скрипти про те на першому ж скрипті в мене викинуло помилку файли які помилки прикріпив, допоможіть що я роблю не так?
Ще додаю який у мене скрипт:
;нет открытых карт
$N=@MapCount @If $N<1 @Break
;карта пустая
$N=@Map.Count @If $N<1 @Break
$I=$N
%Start
;помечаем объект карты с номером $I @Map.DeselectAll @Map.SelectObject $I
$L=@Map.Object[$I].LayerID
;помечена не рамка500 - пропускаем @if $L<>666 @Goto %Skip
;запоминаем имя файла из параметра
$F=@Map.Object[$I].Parameter[ID212]
;помечаем внутри выделеного
Пометить | Внутри помеченного
Карта | Установить рамку
;создаем чистую карту и вставляем в нее помеченные объекты
Правка | Копировать
Файл | Создать
Правка | Вставить
;сохраняем файл @Map.SaveToFile $F.DMF
;закрываем файл @FileClose
%Skip
$I=$I-1
;переход к следующему объекту @if $I>1 @Goto %Start
І додаю свою карту! Допоможіть дуже потрібна! 500-ки чиста.dmf (77.9 KB)
А что вы ожидали от выполнения скрипта? В статье детально описано, что, где, зачем. Вы уверены, что вам оно подходит?
Может все-таки остановиться на параметре файлового типа?
Создайте параметр типа Файл.
Присоедините его к слою рамок.
Пропишите в каждую рамку ссылку на внешний файл планшета.
Теперь помечайте рамку, далее в Инфо выполняете двойной щелчок на содержимом параметра (где ссылка на файл). Файл должен открыться в новой карте. Попробуйте хотя бы на одной рамке, чтобы оценить полезность для себя.
Я цей варіант знаю, в цьому варіанті багато потрібно зробити дій, а карту я створюю для диспетчерських аварійних комунальних служб міста, а там сидять жіночки пенсійного віку вони цього не запамятають, хотілось якби було все простіше для них, я хотів поробити ці планшети в мене їх 1860 до них привязати планшети растри, потім коли диспетчеру потрібно зробити заявку на аварію вона ставить де ця аварія відбулася і аварійній службі розруковує планшет 500-ки (раст) все хлопці знають де можна копати і які там комунікації проходять!
Наскільки я зрозумів: скрипт має позначити всі об’єкти всередині позначеного об’єкта (obj) з шару ID666 і зберегти їх разом з obj в окрему карту?;нет открытых карт
@OpenLog
@Map.BeginUpdate
$N=@MapCount
@If $N<1 @Break
;карта пустая
$N=@Map.Count
@If $N<1 @Break
;визначаєм номер активної карти
$MapName=@Map.Filename
$NumMap=@GetMapNumber $MapName
;позначаєм всі об'єкти в шарі ID666
@Map.DeselectAll
$CountObj=@Map.SelectByParameters -7|666
@If $CountObj=0 then @Break В карті відсутні об'єкти в шарі з ID666
;список позначених в текстовий блок
$List=@Map.Selected.List
@Map.DeselectAll
@Text.Text=$List
$I=1
;создаем чистую карту и вставляем в нее помеченные объекты
$NumTempMap=@FileNew Temp
;активуєм робочу карту
@ActivateMap $NumMap
;перебираєм об'єкти зі списку
;запускаєм прогрес
@Progress.Start $CountObj Перебираю об'єкти в шарі ID666
%Start
@Progress.StepBy
$Obj=@Text.Line[$I]
@Map.SelectObject $Obj
;запоминаем имя файла из параметра
$F=@Map.Object[$Obj].Parameter[ID212]
;помечаем внутри выделеного
;Пометить | Внутри помеченного
@ExecuteMenu EditSelectInsideselected
;Карта | Установить рамку (для чого встановлювати рамку карти?)
;@ExecuteMenu MapDefineFrame
@Map.Copy
;
@Map[$NumTempMap].Paste
;сохраняем файл
@Map[$NumTempMap].SaveToFile C:\Proba\$F.DMF
;очищаєм тимчасову карту від об'єктів
@Map[$NumTempMap].Selected.Delete
@Map.DeselectAll
$I=$I+1
@If $I<=$CountObj then @Goto %Start
;закриваєм тимчасову карту
@CloseMap $NumTempMap
;дозволяєм оновлення карти на екрані
@Map.EndUpdate RefreshAlways
@Progress.Stop
@Dialog.Message Виконано збереження
@CloseLog C:\Proba\Log.txtОсь цей скрипт, зберігає окремі карти в теці C:\Proba*.*
1600 шт за 1 хвилину. У Вас проблема в скрипті була в циклі, окрім того: 1600 раз відкрити нову карту, зберегти карту і закрити карту - можна дві сигарети викурити . Прикріплюю лог-файл, там розберетесь як працює. Log.txt (1.04 MB)
Ок. Попробую еще раз сделать попытку понять, что же вы все-таки хотите. Не обижайтесь, но постановка задачи у вас та еще: то векторные планшеты, то растровые - пришел к выводу, что все-таки последнее.
В этом случае, вам нужно трансформировать все планшеты (а возможно они уже у вас трансформированные) и вставить их все по ссылке в одну карту (Вставка - Растровое изображение). Растры при этом могут даже находиться на отдельном компьютере (назовем его сервером). Сама карта при этом будет содержать только контура растров (рамочки) и ссылки в параметрах.
В этот же файл можно добавить оси улиц с названиями и/или здания оцифрованные с адресами. Можно еще что-нибудь - контур реки или что там у вас в населенном пункте словом, то, что поможет ориентироваться.
Можно даже грубый растр из гугла скачать и подключить на отдельный слой.
Далее нужно научить производить поиск по адресу (это не сложно: панель Инфо - кнопка Список или через Правка - Найти). После того, как пользователь выйдет на нужный адрес он активирует соответствующий растр, он установит рамку карты и распечатает кусок. Последние действия можно попробовать автоматизировать скриптами.