Добрый день.
Являемся обладателями лицензии на инструментарий GisToolkit Free 12, но не используем компонентов RAD Studio, поскольку работаем исключительно в Visual Studio. По этой причине отображаем карту в нашем приложении в "рукопашную", используя напрямую API библиотек gisu64acces.dll и gisu64vecex.dll.
Мы имеем большую карту, порядка 3000 x 3000 км. На мелких масштабах карта довольно сильно подтормаживает, не смотря на то, что я разгружал слои, и ни чего лишнего на карте нет. На мелких масштабах отображаются только леса, водоемы (площадные объекты) и крупные шоссе.
Воспользовавшись поиском по форуму, я понял, что проблема по поводу скорости отрисовки карты уже неоднократно поднималась.
Список стандартных рецептов таков (возможно, я что-то упустил):
Скажите, пожалуйста, данная функция доступна только в приложении Профессиональная ГИС Карта? Или имея лицензию на GisToolkit Free можно так же воспользоваться данным функционалом через какой то инструмент? Этот же вопрос касается и разбивки карты на листы.
Как я уже говорил выше, разгрузку карты я проводил, на ней нет ни чего лишнего, разве что довольно большое количество мелких водоемов, отфильтровать которые нет возможности, либо я не обладаю информацией как это сделать. У меня все площадные водоемы лежат в одном слое.
Думаю, что проблема в том, что полигоны лесов и водоемов не имеют уровней детализации (LOD) под разные масштабы, и на мелких масштабах в полигонах излишне много точек. Существуют ли какой то инструментарий, который позволит "упростить" полигоны для мелких масштабов и "включать" отображение упрощенных полигонов на определенной линейке масштабов, отключая детальные? Такой подход может сильно ускорить отображение карты, но естественно увеличит ее размер на диске, что для нас не является проблемой. Или такой метод можно применить только вручную написав инструмент, который, например, заэкспортит нужные слои в shape файл, потом изготовит линейку LOD, после чего можно будет добавить их в качестве отдельных слоев и настроить видимость в классификаторе по масштабам? Выглядит это довольно трудоемко, но по идее должно решить проблему. Как всегда лень заставляет хотеть какой то автоматический инструмент и волшебную кнопку "Сделать хорошо!"
По поводу использования растров RSW - т.к. карта большая, то изготовить растры для всей линейки масштабов не получится, по причине их огромного объема. Не знаю можно ли каким то образом сделать гибридную карту, в которой на мелких масштабах вместо векторной карты будет отображаться растровая. Если это можно, напишите, пожалуйста как это сделать средствами MAPAPI. Правда я сразу вижу еще одну проблему с растрами. У нас должен быть функционал управления видимостью определенного набора слоев. Пользователь может сам отключать отображение водоемов/надписей/растительности/дорог и т.п. Делаю я это через запросы HSELECT, mapSelectLayer, mapSetViewSelect.
Итого список моих вопросов таков:
Являемся обладателями лицензии на инструментарий GisToolkit Free 12, но не используем компонентов RAD Studio, поскольку работаем исключительно в Visual Studio. По этой причине отображаем карту в нашем приложении в "рукопашную", используя напрямую API библиотек gisu64acces.dll и gisu64vecex.dll.
Мы имеем большую карту, порядка 3000 x 3000 км. На мелких масштабах карта довольно сильно подтормаживает, не смотря на то, что я разгружал слои, и ни чего лишнего на карте нет. На мелких масштабах отображаются только леса, водоемы (площадные объекты) и крупные шоссе.
Воспользовавшись поиском по форуму, я понял, что проблема по поводу скорости отрисовки карты уже неоднократно поднималась.
Список стандартных рецептов таков (возможно, я что-то упустил):
- разгрузка карты по масштабом (настройка видимости слоев по масштабам в классификаторе)
- разбивка карты на листы
- использование растров rsw
- использование gis web server (нам не подходит)
- сжатие карты методом округления координат
Скажите, пожалуйста, данная функция доступна только в приложении Профессиональная ГИС Карта? Или имея лицензию на GisToolkit Free можно так же воспользоваться данным функционалом через какой то инструмент? Этот же вопрос касается и разбивки карты на листы.
Как я уже говорил выше, разгрузку карты я проводил, на ней нет ни чего лишнего, разве что довольно большое количество мелких водоемов, отфильтровать которые нет возможности, либо я не обладаю информацией как это сделать. У меня все площадные водоемы лежат в одном слое.
Думаю, что проблема в том, что полигоны лесов и водоемов не имеют уровней детализации (LOD) под разные масштабы, и на мелких масштабах в полигонах излишне много точек. Существуют ли какой то инструментарий, который позволит "упростить" полигоны для мелких масштабов и "включать" отображение упрощенных полигонов на определенной линейке масштабов, отключая детальные? Такой подход может сильно ускорить отображение карты, но естественно увеличит ее размер на диске, что для нас не является проблемой. Или такой метод можно применить только вручную написав инструмент, который, например, заэкспортит нужные слои в shape файл, потом изготовит линейку LOD, после чего можно будет добавить их в качестве отдельных слоев и настроить видимость в классификаторе по масштабам? Выглядит это довольно трудоемко, но по идее должно решить проблему. Как всегда лень заставляет хотеть какой то автоматический инструмент и волшебную кнопку "Сделать хорошо!"
По поводу использования растров RSW - т.к. карта большая, то изготовить растры для всей линейки масштабов не получится, по причине их огромного объема. Не знаю можно ли каким то образом сделать гибридную карту, в которой на мелких масштабах вместо векторной карты будет отображаться растровая. Если это можно, напишите, пожалуйста как это сделать средствами MAPAPI. Правда я сразу вижу еще одну проблему с растрами. У нас должен быть функционал управления видимостью определенного набора слоев. Пользователь может сам отключать отображение водоемов/надписей/растительности/дорог и т.п. Делаю я это через запросы HSELECT, mapSelectLayer, mapSetViewSelect.
Итого список моих вопросов таков:
- Функция "Сжатие карты методом округления координат" имеется только в приложении Профессиональная ГИС Карта? И имея довольно дорогостоящую лицензию на GisToolkit Free придется покупать не менее дорогостоящую лицензию на приложение Профессиональная ГИС Карта? И, к сожалению, не факт что эта функция поможет.
- Аналогичный вопрос по поводу разбивки карты на листы. Думаю, что это тоже вряд ли поможет, т.к. на мелких масштабах в окно будут попадать почти все листы карты
- Имеется ли какой либо инструмент, позволяющий отфильтровать отображение площадных объектов малой площади на мелких масштабах. Проблема в том, что есть один слой "воды", в котором имеются как крупные водоемы, так и мелкие. (тоже самое касается линейных объектов малой длины)
- Вопрос по поводу возможности использования уровней детализации для объектов в зависимости от текущего масштаба
- Можно ли каким то образом отображать гибридную карту средствами MAPAPI (векторная для крупных масштабов, RSW растры для мелких)