Погана продуктивність із збереженням великих растрових файлів у PostGIS та візуалізацією в QGIS


23

моє запитання стосується використання та продуктивності декількох програмних засобів спільно, а саме PostgreSQL, PostGIS, QGIS та GDAL.

Я давній користувач ArcGIS, Python та R, який зацікавлений у тому, щоб диверсифікуватись у вільну екосистему з відкритим кодом GIS та Linux. Нещодавно мені було дуже цікаво використовувати QGIS (ver 2.8) разом з PostgreSQL (ver 9.4) та PostGIS (ver 2.1), і я встановив програмне забезпечення на комп'ютер під керуванням Windows 8.1 x64 (комп'ютерні характеристики коротко: ThinkPad X200 з 2,1 ГГц Core 2, 8 Гб оперативної пам’яті та 240 ГБ SSD). Як тільки я дізнаюся, як керувати своїми просторовими даними (~ 100 ГБ), я хотів би запустити Ubuntu на цій машині.

На даний момент я просто намагаюся надійно зберігати та витягувати форми та растри. Досі я мав успіх у завантаженні форм-файлів у PostGIS, але растри виявляються більш проблематичними. Я успішно завершив одноразовий та пакетний імпорт невеликих файлів geoTIFF та GRID, але більші растри (скажімо, на диске розміром з розміром стільникового зображення IMG або TIFF розміром 15619x14655 на диску) вічно завантажуються в PostGIS. Я читав та конфігурував інструмент raster2pgsql для створення просторових індексів та завантаження растрових плиток за допомогою цих параметрів:

raster2pgsql -s 3161 -C -I D:\PostGIS_data\dem.img -t auto raster.dem | psql -h localhost -U postgres -p 5432 -d postgres

Ефективність імпорту все ще дуже низька, і апаратне забезпечення не є проблемою. Візуалізація растров PostGIS в QGIS ще гірша, повільно завантажуючи невеликі растри в кращому випадку або замерзаючи взагалі. Такі великі растри, як той, про який я згадував, неможливо уявити в QGIS. З документації та обговорень на форумі, цей недолік, як видається, пояснюється растровим драйвером GDAL, а не самим QGIS. На форумі дискусії коротко згадують про цю проблему, а деякі навіть припускають, що растри не слід зберігати в PostGIS (який сенс у просторовій базі даних, яка не обробляє растри без проблем?). Тим не менш, я регулярно використовую файлову базу даних ESRI, щоб швидко та легко зберігати, візуалізувати та аналізувати досить великі (~ 70 Гб) растри, і ArcGIS 10.1 ніколи не зависає або сповільнюється через такі рутинні операції.

Щось тут мені не вистачає, вузьке місце, до якого я не звертався? Чи потрібна PostgreSQL налаштування, щоб усвідомити переваги продуктивності PostGIS? Чи пропускаю я версію GDAL, яку мені потрібно шукати та компілювати? Як особливо покращити продуктивність та візуалізацію PostGIS у QGIS форм-файлів та растрах? Як я можу насолодитися славою всебічного та швидкого управління просторовими даними через термінал Linux? Будь-яка допомога в цьому питанні буде ласкаво просимо!


Я дотримувався цього керівництва Дунканом Голіхером: https://duncanjg.wordpress.com/2012/11/20/the-basics-of-postgis-raster/

Спочатку я використовував плитки з автоматичним налаштуванням, але я скинув плитку до 100x100 комірок на рядок і потім включив піраміди, як показано в цьому посібнику:

raster2pgsql -s 3161 -d -C -I -M -l 4 D:\PostGIS_data\dem.img -t 100x100 raster.dem100 | psql -h localhost -U postgres -p 5432 -d postgres

Мені вдалося вчасно вдало імпортувати растр IMG 870 Мб і відобразити його в QGIS, не уповільнюючи або збоїв програми. Час візуалізації не такий спритний, як я очікував, але прийнятний. Я прочитаю далі про параметр -l, щоб правильно його використовувати.

До речі, при імпорті файлу dem.img як таблиці dem100 була створена інша растрова таблиця під назвою "o_4_dem100". Коли я імпортую його як шар у QGIS, він має діапазон значень від 201 до 524, тоді як шар dem100 має діапазон від 36 до 524. Чи правильно я вважаю, що ця додаткова таблиця - це пірамідальна таблиця, яка має вужчу діапазон значень в результаті агрегування до нижчої роздільної здатності?


Я не думаю, що проблема в недостатньому обладнанні. Ось короткий підсумок того, що я знайшов поки що.

У растровому драйвері PostGIS у GDAL виникли минулі проблеми ( див. Також тут ). Хоча ці проблеми були відзначені у 2012 році, мені цікаво, чи GDAL 1.11.2, знайдений у QGIS 2.8, все ще має цю проблему. Напевно, є інші, які використовують QGIS та PostGIS для візуалізації та зберігання растрових?

У можливій відповідній записці у мене також виникли проблеми з продуктивністю при відкритті таблиць атрибутів PostGIS в QGIS з таблицями ~ 4,7 м записів . Після декількох пропозицій у цій темі і не виправляючи проблему, я врешті-решт подав звіт про помилку з QGIS, який врешті-решт був закритий і пов’язаний із наступним аналогічним звітом про помилку . Хоча звіт про помилку закритий, він, схоже, не виправлений ...

Підводячи підсумки моїх зусиль поки що:

  • Я оптимізував PostgreSQL-сервер для просторових даних.
  • Я створив просторові індекси для таблиць з геометрії та виконав VACUUM.
  • Поведінка QGIS для відкриття великих таблиць атрибутів (~ 4,7 м записів), схоже, намагається прочитати всі записи, а не повертати підмножину для миттєвого перегляду. Це призводить до низької продуктивності.
  • Продуктивність при візуалізації великих таблиць геометрії PostGIS не здається проблемою.

  • За допомогою raster2pgsql растри були індексовані, викладені плиткою та імпортовані як растрові таблиці з пірамідами в PostGIS.

  • Растри будь-якого розумного розміру все ще неймовірно повільні для імпорту в PostGIS, не кажучи вже про відкриття та панорамування в QGIS.

Варто також зазначити, що при імпорті великих растрових або відкриття великих таблиць атрибутів за допомогою PostGIS споживання пам'яті для raster2pgsql та qgis-bin перевищує 1 Гб. Як згадували @Michael і @Paul у відповідь на моє первинне запитання, схоже, PostGIS не принесе великої користі для зберігання растра. Однак у цей момент я сумніваюся, чому я взагалі запускаю QGIS + PostGIS для моїх потреб у ГІС, особливо коли файли ESRI fileGDB включають растрові атрибути, набори мозаїчних даних та інші растрові операції, полегшені базою даних геоданих. Тож, можливо, я щось дуже не вистачаю, або QGIS і PostGIS не відповідають моїм потребам в ГІС. В останнє мені важко повірити.


Чи повинні бути растри в PostGIS? Які вигоди / додаткову функціональність ви сподіваєтеся отримати від цього? Я виявив, що вектор PostGis прийнятний, і запропонував багатокористувацьке редагування, але растр PostGis не мав реальних переваг у порівнянні з файловим (на сервері зберігається) растром. Хороше запитання, хоча; цілком можливо, що є якісь переваги, які я пропустив у своїй оцінці ...
Майкл Стимсон,

Я подумав, що растри PostGIS дають можливість швидших обчислень растру, а також кращі показники роботи з растровими / векторними операціями. Це додатково до переваг просторової БД: надійність, доступність, резервне копіювання, більш компактне зберігання тощо. У будь-якому випадку, підхід до файлів / плиток не дозволяє виконувати функції пошуку, заздалегідь вбудовані піраміди, плитку та ін. інші можливості, що покращують спосіб використання та візуалізацію растра.
mbcaradima

Я не бачив жодної метрики, яка б говорить про те, що растрові PostGIS швидші при обчисленнях растрових. У будь-якому випадку з 240 ГБ SSD (приємний вибір BTW, швидше, ніж RAID за частку витрат / зусиль), ви дуже швидко заповните його. ... ECW / JP2 для 8-бітових або GeoTIFF з LZW / Сніс тиском стиснення більшості цих полів, заздалегідь вбудованих пірамід, плитки (через VRT), резервного копіювання у вигляді файлів тощо ... єдиною перевагою є функція пошуку. Я усвідомлюю, що я трохи замикаюсь над темою, але якщо растр PostGIS не робить те, що ви очікуєте, то чому б не дотримуватися файловий растр для відображення?
Майкл Стімсон

3
Хто коли-небудь говорив, що растри PostGIS швидші за все? Вони можуть бути зручнішими (зручний API доступу до SQL), і вони можуть бути корисними для аналізу (растровий і векторний у тому ж відрі), але швидше ? Ніколи.
Пол Рамзі

1
Я працюю над книгою про PostGIS (PostGIS в дії, 2-е видання), і здавалося, природно припустити, що переваги зберігання форм-файлів у просторовій БД також поширюватимуться на растр. Звичайно, враховуючи їх різні моделі даних, я бачу, що це припущення було суто інтуїтивним. Тим не менш, растри зазвичай зберігаються в базах геоданих з ArcGIS і дозволяють будувати піраміди, прискорювати геообробку та будувати мозаїки. Як робочий процес із програмним забезпеченням з відкритим кодом, як користувач GIS повинен працювати з растрами? До речі, я буду гідно вдарити себе в обличчя.
mbcaradima

Відповіді:


9

Якщо ви хочете відображати великі растри в QGIS, вам доведеться будувати піраміди або для зображення tif у файловій системі, або для зображення, зареєстрованого в Postgis.

Різниця в ефективності візуалізації QGIS між великим растром у файловій системі або в Postgis є злочинною. Користувачі не помітять різниці. Але - якщо і тільки якщо - ви будуєте піраміди з можливістю -l.

Якщо ви просто імпортуєте зображення без параметра -l, або з ним просто -l 4 не вийде .

Якщо ви використовуєте, наприклад, -l 2,4,8,16буде створено чотири рівні пірамід, як у шарі нижче:

Піраміди, породжені з -l 2,4,8,16

Якщо ви хочете мати кращий досвід користувача, вам слід додати більше рівнів пірамід, наприклад -l 2,4,8,16,32,64,128,256. Це створить вісім рівнів пірамід.

введіть тут опис зображення

Підводячи підсумок, відповідь на це запитання полягає в тому, що: імпортуйте растр із можливістю -lвикористання та використовуйте таку ж кількість пірамідних рівнів, що і для того самого растру у файловій системі.

Наприклад:

raster2pgsql -s 3161 -d -C -I -M -l 2,4,8,16,32,64,128,256 D:\PostGIS_data\dem.img -t 100x100 raster.dem100 | psql -h localhost -U postgres -p 5432 -d postgres

5

У мене виникають ті ж самі проблеми з рендерінгом растрових файлів у QGIS від PostGIS (див. Моє останнє запитання ). Я вважаю цю публікацію корисною та трохи збільшую наступне покращене растрове відображення:

shared_buffers = 5000MB work_mem = 100MB обслуговування_work_mem = 100MB

Однак, з урахуванням сказаного, я повністю погоджуюся з тим, що продуктивність растров PostGIS в QGIS не є великою. Я маю справу з 608 стиснутими геотифами, які чудово завантажуються як VRT, але по суті є непридатними для PostGIS. Спробуйте збільшити продуктивність сервера dbase, але я не можу бути надто корисним. Я також, можливо, доведеться покладатися на файлову систему, щоб обслуговувати растри в моїй організації.


Дякую за Ваш коментар, Кліфф. Я застосував деякі ваші зміни та повідомить про будь-які значні покращення ефективності. Загалом, я маю сказати, що ефективність QGIS невтішна для візуалізації растрових файлів PostGIS та завантаження / запитування таблиць атрибутів. Растрові показники в PostGIS також невтішні. У мене немає жодної проблеми з файлами геоданих, тому мені цікаво, що не так?
mbcaradima

1
Мої настрої точно. Я провів тиждень, намагаючись це зробити, і просто не міг змусити його працювати. Зараз я тестую свій VM (Ubuntu Server) з 10 процесорами та 10 ГБ оперативної пам’яті. Якщо це все-таки мляво, я повинен робити щось інше не так. Я також здивований, чому шари WMS в QGIS в основному непридатні через їх повільну швидкість візуалізації. Нам слід більше підключитися з цього приводу, оскільки ми обоє в одному човні.
Кліф

Якщо вони завантажуються чудово як VRT, чому ви не зупинилися на цьому? Якого виграшу ви очікуєте від цієї великої растрової подорожі?
Пол Рамзі

Я здогадуюсь, що моя відповідь на це, Пол, саме те, що в наступному дописі сказав ОП: "Однак у цей момент я сумніваюся, чому я взагалі запускаю QGIS + PostGIS для моїх потреб у ГІС, особливо коли файли ESD-файлівGDB включають растрові атрибути, мозаїчні набори даних та інші растрові операції, що сприяють базі даних геоданих. Тому, можливо, мені щось дійсно не вистачає, або QGIS і PostGIS не відповідають моїм потребам в ГІС. Мені в це важко повірити ".
Кліф

1
Крім того, я б сказав, що приблизно 70% аналізу, який я роблю, відбувається на растрах, і приблизно 40% даних, які я хочу надати моїй організації через QGIS, є растровими даними. Просто має сенс мати всі растрові та векторні дані в одній базі даних, щоб користувачі могли встановити одне з'єднання та мати доступ до бази даних всієї нашої організації. Натомість мені доведеться створити записи для dbase та записи для спільної роботи з файлами. Крім того, я серйозно розглядаю питання про те, щоб скасувати QGIS і створити веб-додаток з Geoserver (ps: завжди готовий співпрацювати над цим з усіма зацікавленими).
Кліф

4

Не впевнений, чи це було у вашому випадку, але я виявив, що -Iйого не слід використовувати разом із доданими даними -a.

Я імпортував багато файлів TIF в БД, і -Iфактично знову створює індекс і виконує analyseна столі кожен файл, що займає в 10 разів більше часу.

-Iслід використовувати лише при створенні таблиці, з -pопцією.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.