Вопрос: Загрузка отдельного полигона из очень большого файла

Здравствуйте, друзья!

Проблема следующего плана:

Есть очень большой файл, весом в несколько сотен МБ. При загрузке оного, на даже достаточно хорошем среднем ПК - уходит времени много десятков минут. Плюс на внутренние “масштабирования” , “перемещения” до заданного участка - немало времени.

Разбили весь объект на квадраты. Каждый квадрат - замкнутый полигон. Все квадраты в одном файле и в одном и том же параметре имеют порядковый номер.

Есть ли возможность сделать что-либо, чтобы, без ручного “разрезания” и размножения на десятки и сотни файлов, обеспечить открывание только заданного полигона этого файла?
Возможно есть возможность прописать какой-либо макрос (или иную хитрость), чтобы файл при открытии и задании этого параметра - открывался только в требуемых границах?

Условно вопрос иллюстрирован на прикрепленной картинке.

Благодарю, если кто поможет с оным:)

Без того, чтобы разрезать файл на планшеты, никак. А уж после этого можно попробовать наладить какие-нибудь средства поиска. Например, можно сделать файл, содержащий номенклатуры планшетов и ссылки на их файлы (для этого используется параметр типа Файл). Сюда же можно бросить какой-нибудь минимальный навигационный набор данных: улицы, города, водные объекты, - зависит от масштаба вашей карты. Теперь можно будет открыть файл, найти место, пометить границу планшета, зайти в Инфо и щелкнуть дважды по ссылке на файл. Файл откроется на новой вкладке.

Еще пример автоматизации хранения планшетов, но уже с помощью скриптов смотрите здесь.

Благодарю за ответ!

Тогда из сего, если кто подскажет - буду благодарен следующему:
как прописать скрипт, задающий границы обрезки и обрезающий все объекты вне этих границ? Без необходимости создавать полигон, и обрезать вручную через “Сервис”?
Возможно ли сие?:slight_smile:

Доброго дня шановні колеги підскажіть будь ласка чи можливо в діджиталі на карті із сіткою планшетів зробити посилання на планшети, які є векторного формату, щоб планшети відображались на карти проте були на карті лише посиланням а самі знаходились десь на компі. В мене проблема в тому що є планшети 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)


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

Может все-таки остановиться на параметре файлового типа?

  1. Создайте параметр типа Файл.
  2. Присоедините его к слою рамок.
  3. Пропишите в каждую рамку ссылку на внешний файл планшета.

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

Я цей варіант знаю, в цьому варіанті багато потрібно зробити дій, а карту я створюю для диспетчерських аварійних комунальних служб міста, а там сидять жіночки пенсійного віку вони цього не запамятають, хотілось якби було все простіше для них, я хотів поробити ці планшети в мене їх 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 раз відкрити нову карту, зберегти карту і закрити карту - можна дві сигарети викурити :wink: . Прикріплюю лог-файл, там розберетесь як працює.
Log.txt (1.04 MB)

Ок. Попробую еще раз сделать попытку понять, что же вы все-таки хотите. :slight_smile: Не обижайтесь, но постановка задачи у вас та еще: то векторные планшеты, то растровые - пришел к выводу, что все-таки последнее.

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

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

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