Отображение карты из PostGis
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Отображение карты из PostGis
Хочу использовать QGis для отображения карты из PostGIS.
В качестве теста скачал http://gis-lab.info/data/vmap0/eur-sql.7z и залил файл trans_road_l.sql в Postgress/PostGis -данные о дорогах в Европе.После чего запускаю QGis и настраиваю его на PostGis - дороги нарисовались.
Вопрос: Почему отрисовка происходит очень медленно - при каждом скроле или передвижении карты программа начинает долго думать?Посмотрел в БД там всего 160000 записей, непонятно если она при таких обьемах тормозит, то возможно ли таким образом загрузить карту России и нормально работать? Может мне нужно как то создать индексы для БД ? Да и почему при масштабировании карты отрисовываются все данные, даже те которых при таком масштабе не должно быть видно - может это как то настраивается?
В качестве теста скачал http://gis-lab.info/data/vmap0/eur-sql.7z и залил файл trans_road_l.sql в Postgress/PostGis -данные о дорогах в Европе.После чего запускаю QGis и настраиваю его на PostGis - дороги нарисовались.
Вопрос: Почему отрисовка происходит очень медленно - при каждом скроле или передвижении карты программа начинает долго думать?Посмотрел в БД там всего 160000 записей, непонятно если она при таких обьемах тормозит, то возможно ли таким образом загрузить карту России и нормально работать? Может мне нужно как то создать индексы для БД ? Да и почему при масштабировании карты отрисовываются все данные, даже те которых при таком масштабе не должно быть видно - может это как то настраивается?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Отображение карты из PostGis
Используемая ОС и версия QGIS? Индексы в базе построены?
Включите кеш ренедера в настройках QGIS («Settings-Options-Rendering-Use render caching...»)
Включите кеш ренедера в настройках QGIS («Settings-Options-Rendering-Use render caching...»)
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Re: Отображение карты из PostGis
Windows7. Насчет индексов не знаю - я просто выполнил sql скрипт trans_road_l.sql из http://gis-lab.info/data/vmap0/eur-sql.7z и все - как их строить? Так же пробовал подключиться к
Сервер: gis-lab.info
База: osm
Порт: 5432
Имя/пароль: guest/guest
так же при работе с любым слоем тормозит.
Геометрический объект, в котором много точек, но его нужно показать на картинке 100*100 - Почему QGis не выбрасывает точки (которые не сильно изменится геометрия).
Сервер: gis-lab.info
База: osm
Порт: 5432
Имя/пароль: guest/guest
так же при работе с любым слоем тормозит.
Геометрический объект, в котором много точек, но его нужно показать на картинке 100*100 - Почему QGis не выбрасывает точки (которые не сильно изменится геометрия).
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Отображение карты из PostGis
Про индексы написано здесь.
P.S.: версию QGIS вы так и не озвучили
Если правильно понял, то речь идет о генерализации полигонов/линий. Насколько знаю, «на лету» это и в другом ПО не делается.anton21 писал(а):Геометрический объект, в котором много точек, но его нужно показать на картинке 100*100 - Почему QGis не выбрасывает точки (которые не сильно изменится геометрия).
P.S.: версию QGIS вы так и не озвучили
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Re: Отображение карты из PostGis
Тогда как мне в QGis отобразить карту России из Postgres/PostGis, при этом я бы мог производить манипуляции с картой(перемещение , скролл) например как в Google , а не ждать перерисовки карты при каждом действии- это возможно?
А если я буду использовать QGis в своей программе как карту - смогу ли я нормаль грузить карту из Postgress/Postgis(то есть будет ли достаточно быстро происходить растеризация вектора)?
В том же Open Street Map используется Mapnik - при растеризации вектора в масштабе мира он же не рисует(откидывает) поселки.
А если я буду использовать QGis в своей программе как карту - смогу ли я нормаль грузить карту из Postgress/Postgis(то есть будет ли достаточно быстро происходить растеризация вектора)?
В том же Open Street Map используется Mapnik - при растеризации вектора в масштабе мира он же не рисует(откидывает) поселки.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Отображение карты из PostGis
Настройте отрисовку в зависимости от масштабаanton21 писал(а):В том же Open Street Map используется Mapnik - при растеризации вектора в масштабе мира он же не рисует(откидывает) поселки.
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Re: Отображение карты из PostGis
Не совсем понял поясните пожалуйста.
А как в QGis настроить отрисовку в зависимости от масштаба - и может это зависеть от проекции?
Хотелось бы понять как в том же Mapnik задается при каком масштабе что отбрасывать?
А как в QGis настроить отрисовку в зависимости от масштаба - и может это зависеть от проекции?
Хотелось бы понять как в том же Mapnik задается при каком масштабе что отбрасывать?
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Отображение карты из PostGis
PostGIS тут непричем.
Вы пытаетесь загрузить в программу большой объем данных, миллионы узлов, разумеется она тормозит (при том, что QGIS и сам по себе не быстр).
OSM быстро показывает данные потому что это растр, а не вектор, если вы попробуете сконвертировать shape в osm.xml и загрузить в редактор - тормозить будет не меньше, а может больше. Конечно OSM и любой другой веб-сервис карт выкидывает часть данных при показе всего мира, это суть генерализации - упрощения данных.
И напоследок построение индекса (свойства слоя)

Вы пытаетесь загрузить в программу большой объем данных, миллионы узлов, разумеется она тормозит (при том, что QGIS и сам по себе не быстр).
OSM быстро показывает данные потому что это растр, а не вектор, если вы попробуете сконвертировать shape в osm.xml и загрузить в редактор - тормозить будет не меньше, а может больше. Конечно OSM и любой другой веб-сервис карт выкидывает часть данных при показе всего мира, это суть генерализации - упрощения данных.
И напоследок построение индекса (свойства слоя)

пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Re: Отображение карты из PostGis
То есть получается в QGis нельзя работать с картой России(OSM) которая на лету рендериться из вектора?
Может можно как то включить отрисовку в зависимости от масштаба(т.е чтобы обращала на zoom level), ведб тот же Mapnik рендерит как то с учетом zoom level?
Может можно как то включить отрисовку в зависимости от масштаба(т.е чтобы обращала на zoom level), ведб тот же Mapnik рендерит как то с учетом zoom level?
- Дмитрий Барышников
- Гуру
- Сообщения: 2572
- Зарегистрирован: 17 ноя 2009, 19:17
- Репутация: 261
- Откуда: Москва
Re: Отображение карты из PostGis
У вас все перепуталось.
Mapnik и иже с ним это WMS сервисы которые растр выдают с нужным zoom level, а PostGIS - это база пространственных данных, что-то круче шейпа или таба. Т.е. PostGIS это источник данных и для QGIS и для WMS серверов.
Mapnik и иже с ним это WMS сервисы которые растр выдают с нужным zoom level, а PostGIS - это база пространственных данных, что-то круче шейпа или таба. Т.е. PostGIS это источник данных и для QGIS и для WMS серверов.
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Отображение карты из PostGis
Да, можно. Каждый слой может отображаться в своем диапазоне масштабов. Например, если у вас отображается все Россия, то отрисовывать здания нет смысла.anton21 писал(а):Может можно как то включить отрисовку в зависимости от масштаба(т.е чтобы обращала на zoom level)
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9129
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 748
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Отображение карты из PostGis
anton21, и разберитесь окончательно с разницей между понятиями растр и вектор
пристегивайтесь, турбулентность прямо по курсу
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Re: Отображение карты из PostGis
Упрощаю вопрос: Как пользоваться картой России(OSM) в QGis, если она храниться в Postgres/PostGis словно работаешь с картой на openstreetmap.ru(если у вас отображается все Россия, то отрисовывать здания нет смысла)?
Ситуация следующая - я заливаю Россия.osm в Postgres/PostGis, после этого я хочу с помощью api QGIS(qgis_core.dll qgis_gui.dll и т.п) получить картинку из PostGis(т.е QGis возьмет вектор и отрендерит его).Так вот мне не понятно как она поймет(может это как то задается?) что при масштабе страны не нужно отрисовывать здания?Может быть в Postgres/Postgis данные залитые из Россия.osm храняться ввиде слоев для определенного zoom level и в определенные момент нужно отрисовывать слой для текущего zoomlevel?
Ситуация следующая - я заливаю Россия.osm в Postgres/PostGis, после этого я хочу с помощью api QGIS(qgis_core.dll qgis_gui.dll и т.п) получить картинку из PostGis(т.е QGis возьмет вектор и отрендерит его).Так вот мне не понятно как она поймет(может это как то задается?) что при масштабе страны не нужно отрисовывать здания?Может быть в Postgres/Postgis данные залитые из Россия.osm храняться ввиде слоев для определенного zoom level и в определенные момент нужно отрисовывать слой для текущего zoomlevel?
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Отображение карты из PostGis
Провторяю ответanton21 писал(а):Упрощаю вопрос: Как пользоваться картой России(OSM) в QGis, если она храниться в Postgres/PostGis словно работаешь с картой на openstreetmap.ru(если у вас отображается все Россия, то отрисовывать здания нет смысла)?

Совершенно верно, «это как то задается». Через все то же «api QGIS(qgis_core.dll qgis_gui.dll и т.п)».anton21 писал(а):Ситуация следующая - я заливаю Россия.osm в Postgres/PostGis, после этого я хочу с помощью api QGIS(qgis_core.dll qgis_gui.dll и т.п) получить картинку из PostGis(т.е QGis возьмет вектор и отрендерит его).Так вот мне не понятно как она поймет(может это как то задается?) что при масштабе страны не нужно отрисовывать здания?
Вы опять путаетесь. PostgreSQL/PostGIS это хранилище данных и больше ничего. Его задача — отдать данные по запросу в ваше приложение. А что приложение будет с ними делать, и как отображать — это уже не забота PostGIS.anton21 писал(а):Может быть в Postgres/Postgis данные залитые из Россия.osm храняться ввиде слоев для определенного zoom level и в определенные момент нужно отрисовывать слой для текущего zoomlevel?
-
- Новоприбывший
- Сообщения: 11
- Зарегистрирован: 25 янв 2012, 14:39
- Репутация: 0
Re: Отображение карты из PostGis
Как сказать QGis что при таком масштабе отображай такой то слой , а при другом нет?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей