Перерисовка слоев в своем приложении
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 03 сен 2015, 10:51
- Репутация: 0
Перерисовка слоев в своем приложении
Добрый день!
Наверняка этот вопрос уже обсуждался неоднократно, но я только недавно перешел с продуктов Панорамы на использование QGis и никак не могу прояснить для себя такой вопрос:
загружаю в своем c++ приложении через canvas (или в сам QGis 2.10) переконвертированный sxf или пусть даже shp-файл с достаточно большим количеством объектов(в пределах 1000), то каждая перерисовка идет слева-направо очень долгое время, каждое смещение карты или изменение масштаба, добавление объектов и прочее вызывает перерисовку карты и снова эту долгую загрузку.
Можно ли как-то заставить qgis отображать карту уже полностью отрисованной, а не постепенно рисовать в отдельном потоке? Чтобы пользователь в любой момент времени видел всю карту, а не ее отрисовку?
Заранее благодарен за помощь!
Наверняка этот вопрос уже обсуждался неоднократно, но я только недавно перешел с продуктов Панорамы на использование QGis и никак не могу прояснить для себя такой вопрос:
загружаю в своем c++ приложении через canvas (или в сам QGis 2.10) переконвертированный sxf или пусть даже shp-файл с достаточно большим количеством объектов(в пределах 1000), то каждая перерисовка идет слева-направо очень долгое время, каждое смещение карты или изменение масштаба, добавление объектов и прочее вызывает перерисовку карты и снова эту долгую загрузку.
Можно ли как-то заставить qgis отображать карту уже полностью отрисованной, а не постепенно рисовать в отдельном потоке? Чтобы пользователь в любой момент времени видел всю карту, а не ее отрисовку?
Заранее благодарен за помощь!
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Перерисовка слоев в своем приложении
1000 объектов это очень мало. У меня 500 000 в QGIS довольно быстро перерисовываются. Вы в QGIS те же данные смотрели что и в своем приложении, там также медленно? И медленно - это сколько?
Идею не показывать карту до полной отрисовки - это что то из прошлого, где после каждого сдвига экран очищался и все замирало на сколько то секунд (минут, часов) пока все не отрисоывавалось. Все современные ГИС показывают хоть что-то в первые секунды, что бы панить дальше можно было.
Идею не показывать карту до полной отрисовки - это что то из прошлого, где после каждого сдвига экран очищался и все замирало на сколько то секунд (минут, часов) пока все не отрисоывавалось. Все современные ГИС показывают хоть что-то в первые секунды, что бы панить дальше можно было.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 03 сен 2015, 10:51
- Репутация: 0
Re: Перерисовка слоев в своем приложении
То, что картой можно управлять во время отрисовки - это здорово, но проблема в том, что в том же QGIS после каждого сдвига, смены масштаба, добавления объекта экран полностью очищается и потом заново секунду-две-десять(в зависимости от числа векторных объектов) перерисовывается слева-направо. Можно ли как-то сделать, чтобы при сдвиге уже нарисованная область не обнулялась, а только дорисовывалась появившаяся новая, при смене масштаба просто прорисовалась на месте старой с другой детализацией, после добавления объекта дорисовывался сам объект на карте?
А то у нас, например, в реальном времени отрисовывается траектория движения объекта - что тоже приводит к полной перерисовке карты.
А то у нас, например, в реальном времени отрисовывается траектория движения объекта - что тоже приводит к полной перерисовке карты.
-
- Активный участник
- Сообщения: 214
- Зарегистрирован: 11 авг 2015, 16:13
- Репутация: 47
Re: Перерисовка слоев в своем приложении
Это вы зря так про QGIS. В отличии от других программ в нем все прозрачно, а QT движок для графики очень быстрый.
Во-первых, оцените что отображаете? Объекты в файлах, базе данных, их формат, содержимое. Например, взял векторную топо карту России в формате ArcGIS mdb - очень медленно, перевел в файловую базу - gdb - ожила, но если разобрать на shape, то снова заткнется.
Во-вторых, QGIS -> Параметры -> отрисовка. Небольшое загрубление не помешает. Есть настройки и у каждого слоя.
В-третьих, если карта медленно отрисовывается, а предыдущие пункты соблюдены, то значит она не для масштаба вашего отображения. Делайте пирамиды. Например. У меня была карта России миллионного масштаба, но в масштабах 5 млн и более будет рисоваться медленно. Делаем прореживание всех векторов и настраиваем отображение разных слоев при разных масштабах. При обзоре пользователь видит одни слои, а при приближении - другие. Скорость возросла многократно.
... Это бесконечная тема. Главное не зацикливаться на этом, а понять что и как происходит.
Во-первых, оцените что отображаете? Объекты в файлах, базе данных, их формат, содержимое. Например, взял векторную топо карту России в формате ArcGIS mdb - очень медленно, перевел в файловую базу - gdb - ожила, но если разобрать на shape, то снова заткнется.
Во-вторых, QGIS -> Параметры -> отрисовка. Небольшое загрубление не помешает. Есть настройки и у каждого слоя.
В-третьих, если карта медленно отрисовывается, а предыдущие пункты соблюдены, то значит она не для масштаба вашего отображения. Делайте пирамиды. Например. У меня была карта России миллионного масштаба, но в масштабах 5 млн и более будет рисоваться медленно. Делаем прореживание всех векторов и настраиваем отображение разных слоев при разных масштабах. При обзоре пользователь видит одни слои, а при приближении - другие. Скорость возросла многократно.
... Это бесконечная тема. Главное не зацикливаться на этом, а понять что и как происходит.
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Перерисовка слоев в своем приложении
Мне кажется вы рисуете неверно. Для динамических данных, вам надо рисовать поверх карты, а вы меняете контент слоя, что вызывает перерисовку карты.
-
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 03 сен 2015, 10:51
- Репутация: 0
Re: Перерисовка слоев в своем приложении
Рисовать динамические данные поверх карты средствами QGIS или сторонним инструментом?
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Перерисовка слоев в своем приложении
Ну либо средствами QGIS http://anitagraser.com/2015/05/08/traje ... ut-effect/ либо самостоятельно.
-
- Гуру
- Сообщения: 588
- Зарегистрирован: 30 мар 2009, 21:53
- Репутация: 55
- Откуда: Королев
Re: Перерисовка слоев в своем приложении
Поставьте период вывода перерисовки больше вашего обычного периода - например 15 сек.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость