Аналитика http://www.geosystema.net/forum/ |
|
Вопрос: Загрузка отдельного полигона из очень большого файла http://www.geosystema.net/forum/viewtopic.php?f=1&t=19551 |
Страница 1 из 1 |
Автор: | kozakan [ 23 апр 2015 08:35 ] | ||
Заголовок сообщения: | Вопрос: Загрузка отдельного полигона из очень большого файла | ||
Здравствуйте, друзья! Проблема следующего плана: Есть очень большой файл, весом в несколько сотен МБ. При загрузке оного, на даже достаточно хорошем среднем ПК - уходит времени много десятков минут. Плюс на внутренние "масштабирования" , "перемещения" до заданного участка - немало времени. Разбили весь объект на квадраты. Каждый квадрат - замкнутый полигон. Все квадраты в одном файле и в одном и том же параметре имеют порядковый номер. Есть ли возможность сделать что-либо, чтобы, без ручного "разрезания" и размножения на десятки и сотни файлов, обеспечить открывание только заданного полигона этого файла? Возможно есть возможность прописать какой-либо макрос (или иную хитрость), чтобы файл при открытии и задании этого параметра - открывался только в требуемых границах? Условно вопрос иллюстрирован на прикрепленной картинке. Благодарю, если кто поможет с оным:)
|
Автор: | Dmitriy Fedorov [ 23 апр 2015 10:05 ] |
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла |
Без того, чтобы разрезать файл на планшеты, никак. А уж после этого можно попробовать наладить какие-нибудь средства поиска. Например, можно сделать файл, содержащий номенклатуры планшетов и ссылки на их файлы (для этого используется параметр типа Файл). Сюда же можно бросить какой-нибудь минимальный навигационный набор данных: улицы, города, водные объекты, - зависит от масштаба вашей карты. Теперь можно будет открыть файл, найти место, пометить границу планшета, зайти в Инфо и щелкнуть дважды по ссылке на файл. Файл откроется на новой вкладке. Еще пример автоматизации хранения планшетов, но уже с помощью скриптов смотрите здесь. |
Автор: | kozakan [ 23 апр 2015 13:33 ] |
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла |
Благодарю за ответ! Тогда из сего, если кто подскажет - буду благодарен следующему: как прописать скрипт, задающий границы обрезки и обрезающий все объекты вне этих границ? Без необходимости создавать полигон, и обрезать вручную через "Сервис"? Возможно ли сие?:) |
Автор: | EIKovtun [ 30 июл 2015 15:49 ] |
Заголовок сообщения: | Re: Нужна помощь! |
Доброго дня шановні колеги підскажіть будь ласка чи можливо в діджиталі на карті із сіткою планшетів зробити посилання на планшети, які є векторного формату, щоб планшети відображались на карти проте були на карті лише посиланням а самі знаходились десь на компі. В мене проблема в тому що є планшети 500-го масштабу на все місто, розмір цих планшетів 27 гігабайт 86 штук, всіх разом я не можу їх зшити у діджиталі не вистачає памяті для обробки, комп досить потужний. В архітектурі у мене в місті вони працюють в автокаді і програма це дозволяє зробити, а можливо це зробити у Діджиталі? Допоможіть будь ласка! |
Автор: | Dmitriy Fedorov [ 31 июл 2015 07:35 ] |
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла |
Смотрите ответ выше. Dmitriy Fedorov писал(а): ... можно сделать файл, содержащий номенклатуры планшетов и ссылки на их файлы (для этого используется параметр типа Файл) ...
|
Автор: | EIKovtun [ 04 авг 2015 10:34 ] | ||||
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла | ||||
Dmitriy Fedorov писал(а): Еще пример автоматизации хранения планшетов, но уже с помощью скриптов смотрите здесь. Доброго дня я спробував виконати ці скрипти про те на першому ж скрипті в мене викинуло помилку файли які помилки прикріпив, допоможіть що я роблю не так? Ще додаю який у мене скрипт: ;нет открытых карт $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 І додаю свою карту! Допоможіть дуже потрібна!
|
Автор: | Dmitriy Fedorov [ 05 авг 2015 11:45 ] |
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла |
EIKovtun писал(а): Доброго дня я спробував виконати ці скрипти про те на першому ж скрипті в мене викинуло помилку файли які помилки прикріпив, допоможіть що я роблю не так? А что вы ожидали от выполнения скрипта? В статье детально описано, что, где, зачем. Вы уверены, что вам оно подходит? Может все-таки остановиться на параметре файлового типа? 1. Создайте параметр типа Файл. 2. Присоедините его к слою рамок. 3. Пропишите в каждую рамку ссылку на внешний файл планшета. Теперь помечайте рамку, далее в Инфо выполняете двойной щелчок на содержимом параметра (где ссылка на файл). Файл должен открыться в новой карте. Попробуйте хотя бы на одной рамке, чтобы оценить полезность для себя. |
Автор: | EIKovtun [ 06 авг 2015 09:25 ] |
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла |
Dmitriy Fedorov писал(а): А что вы ожидали от выполнения скрипта? В статье детально описано, что, где, зачем. Вы уверены, что вам оно подходит? Может все-таки остановиться на параметре файлового типа? 1. Создайте параметр типа Файл. 2. Присоедините его к слою рамок. 3. Пропишите в каждую рамку ссылку на внешний файл планшета. Теперь помечайте рамку, далее в Инфо выполняете двойной щелчок на содержимом параметра (где ссылка на файл). Файл должен открыться в новой карте. Попробуйте хотя бы на одной рамке, чтобы оценить полезность для себя. Я цей варіант знаю, в цьому варіанті багато потрібно зробити дій, а карту я створюю для диспетчерських аварійних комунальних служб міста, а там сидять жіночки пенсійного віку вони цього не запамятають, хотілось якби було все простіше для них, я хотів поробити ці планшети в мене їх 1860 до них привязати планшети растри, потім коли диспетчеру потрібно зробити заявку на аварію вона ставить де ця аварія відбулася і аварійній службі розруковує планшет 500-ки (раст) все хлопці знають де можна копати і які там комунікації проходять! |
Автор: | voha [ 06 авг 2015 13:58 ] | ||
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла | ||
EIKovtun писал(а): Я цей варіант знаю... Наскільки я зрозумів: скрипт має позначити всі об'єкти всередині позначеного об'єкта (obj) з шару ID666 і зберегти їх разом з obj в окрему карту?Код: ;нет открытых карт Ось цей скрипт, зберігає окремі карти в теці C:\Proba\*.*@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 1600 шт за 1 хвилину. У Вас проблема в скрипті була в циклі, окрім того: 1600 раз відкрити нову карту, зберегти карту і закрити карту - можна дві сигарети викурити . Прикріплюю лог-файл, там розберетесь як працює.
|
Автор: | Dmitriy Fedorov [ 07 авг 2015 14:03 ] |
Заголовок сообщения: | Re: Вопрос: Загрузка отдельного полигона из очень большого файла |
EIKovtun писал(а): ... я хотів поробити ці планшети в мене їх 1860 до них привязати планшети растри, потім коли диспетчеру потрібно зробити заявку на аварію вона ставить де ця аварія відбулася і аварійній службі розруковує планшет 500-ки (растр) ... Ок. Попробую еще раз сделать попытку понять, что же вы все-таки хотите. Не обижайтесь, но постановка задачи у вас та еще: то векторные планшеты, то растровые - пришел к выводу, что все-таки последнее. В этом случае, вам нужно трансформировать все планшеты (а возможно они уже у вас трансформированные) и вставить их все по ссылке в одну карту (Вставка - Растровое изображение). Растры при этом могут даже находиться на отдельном компьютере (назовем его сервером). Сама карта при этом будет содержать только контура растров (рамочки) и ссылки в параметрах. В этот же файл можно добавить оси улиц с названиями и/или здания оцифрованные с адресами. Можно еще что-нибудь - контур реки или что там у вас в населенном пункте словом, то, что поможет ориентироваться. Можно даже грубый растр из гугла скачать и подключить на отдельный слой. Далее нужно научить производить поиск по адресу (это не сложно: панель Инфо - кнопка Список или через Правка - Найти). После того, как пользователь выйдет на нужный адрес он активирует соответствующий растр, он установит рамку карты и распечатает кусок. Последние действия можно попробовать автоматизировать скриптами. |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |