Sorum, PostgreSQL, PostGIS, QGIS ve GDAL gibi çeşitli yazılım araçlarının kullanımı ve performansı ile ilgilidir.
Ben uzun zamandır ücretsiz bir açık kaynaklı GIS ekosistemi ve Linux'u çeşitlendirmekle ilgilenen ArcGIS, Python ve R kullanıcısıyım. Son zamanlarda QGIS (sürüm 2.8) ile PostgreSQL (sürüm 9.4) ve PostGIS (sürüm 2.1) ile çok ilgilenmiştim ve yazılımı Windows 8.1 x64 olan bir bilgisayara yükledim (kısaca bilgisayardakiler: ThinkPad 2.1 GHz Çekirdek 2, 8 GB RAM ve 240 GB SSD olan X200'ler). Mekansal verilerimin nasıl yönetileceğini (~ 100GB değerinde) öğrendikten sonra, bu makinede Ubuntu'yu çalıştırmak istiyorum.
Şu anda sadece şekil dosyalarını ve tarama dosyalarını güvenilir bir şekilde depolamaya ve almaya çalışıyorum. Şimdiye kadar, PostGIS'e shapefiles yüklemede başarılı oldum, ancak rasterler daha problemli olduğunu kanıtladı. Küçük geoTIFF ve GRID dosyalarının tek tek ve toplu olarak içe aktarılmasını başarıyla tamamladım, ancak daha büyük rasterler (örneğin, 15619x14655 hücreli IMG veya 870 MB boyutunda TIFF dosyası diskte) PostGIS'e yükleme yapmak sonsuza dek sürüyor. Bu parametreleri kullanarak uzamsal dizinler oluşturmak ve rasterleri döşemelerle yüklemek için raster2pgsql aracını okudum ve yapılandırdım:
raster2pgsql -s 3161 -C -I D:\PostGIS_data\dem.img -t auto raster.dem | psql -h localhost -U postgres -p 5432 -d postgres
İthalatta performans hala çok düşük ve donanım sorunu değil. PostGIS rasterlerinin QGIS'de görselleştirilmesi daha da kötüdür, küçük rasterleri yavaşça en iyi şekilde yükler veya tamamen dondururlar. Bahsettiğim gibi büyük rasterlerin QGIS'te görselleştirilmesi imkansız. Dokümantasyon ve forum tartışmalarından, bu eksiklik GDAL'in PostGIS raster sürücüsü ve QGIS'in kendisinden kaynaklanıyor gibi görünüyor. Forum tartışmaları bu problemden kısaca bahseder ve hatta bazılarının rasterlerin PostGIS'te saklanmaması gerektiğini (rasterleri sorunsuz bir şekilde işlemeyen mekansal bir veritabanındaki nokta nedir?) Önerir. Yine de, oldukça büyük (~ 70GB) rasterleri hızlı ve kolay bir şekilde saklamak, görselleştirmek ve analiz etmek için ESRI'nin dosya coğrafi veritabanını rutin olarak kullanıyorum ve ArcGIS 10.1 bu rutin işlemler nedeniyle asla donmuyor veya yavaşlamıyor.
Burada özlediğim bir şey var mı, ele almadığım bir darboğaz mı? PostgreSQL'in PostGIS'in performans avantajlarını gerçekleştirmek için ayarlamaya ihtiyacı var mı? Saklamak ve derlemek için ihtiyaç duyduğum bir GDAL sürümü eksik mi? Özellikle şekil dosyalarının ve rasterlerin QGIS'sinde PostGIS performansını ve görselleştirmesini nasıl iyileştiririm? Bir Linux terminali aracılığıyla kapsamlı ve hızlı mekansal veri yönetimi görkeminin tadını nasıl çıkarabilirim? Bu konuda herhangi bir yardım memnuniyetle karşılanacaktır!
Bu kılavuzu bir Duncan Golicher tarafından takip ettim: https://duncanjg.wordpress.com/2012/11/20/the-basics-of-postgis-raster/
Orijinal olarak otomatik ayarlanmış döşemeler kullanıyordum, ancak döşemeyi her satırda 100x100 hücreye ayarlıyorum ve daha sonra kılavuzda gösterildiği gibi piramitleri ekledim
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
870 MB IMG rasterini iyi bir zamanda başarıyla içe aktardım ve uygulamayı yavaşlatmadan veya kilitlemeden QGIS'de gösterdim. Oluşturma süresi beklediğim gibi çabuk değil, ancak kabul edilebilir. Düzgün kullanmak için -l parametresinde daha fazla okuyacağım.
Bu arada, dem.img dosyasını dem100 tablosu olarak içe aktarırken "o_4_dem100" adı verilen başka bir raster tablo oluşturuldu. QGIS'te bir katman olarak içe aktardığımda, 201 ila 524 arasında bir değer aralığına sahipken, dem100 katmanı 36 ila 524 arasında bir değere sahiptir. düşük bir çözünürlükte toplanmanın sonucu olarak değer aralığı?
Yetersiz donanım sorun olduğunu sanmıyorum. İşte şimdiye dek ne bulduğuma dair kısa bir özet.
GDAL'in PostGIS raster sürücüsünün geçmiş performans sorunları var ( buraya da bakınız ). Bu sorunların 2012 yılında da belirtilmesine rağmen, QGIS 2.8'de bulunan GDAL 1.11.2'nin hala bu sorunu yaşayıp yaşamadığını merak ediyorum. Elbette, raster görselleştirme ve depolama için QGIS ve PostGIS kullananlar da var mı?
Olası bir notta, QGIS'de PostGIS özellik tablolarını QGIS'te ~ 4.7m kayıt tablolarıyla açmakla ilgili performans sorunlarım da oldu . Bu konudaki birkaç öneriden sonra ve sorunu çözmeden nihayetinde QGIS ile kapatılan ve aşağıdaki benzer hata raporuna bağlı bir hata raporu hazırladım . Hata raporu kapatılsa da, sabit görünmüyor ...
Şimdiye kadarki çabalarımı özetlemek için:
- PostgreSQL sunucusunu mekansal veriler için optimize ettim.
- Geometri tabloları için mekansal endeksler oluşturdum ve bir VAKUM yaptım.
- Büyük öznitelik tablolarını (~ 4.7m kayıtlar) açmak için QGIS davranışı , anlık görüntüleme için bir altküme döndürmek yerine tüm kayıtları okumayı deniyor gibi görünüyor . Bu düşük performansa yol açar.
Büyük PostGIS geometri tabloları render Performans gelmez değil bir sorun olarak görünmektedir.
Raster2pgsql ile, rasterler indekslendi, döşendi ve PostGIS'te piramitlerle raster tabloları olarak içe aktarıldı.
- Makul boyuttaki rasterlerin PostGIS'e aktarılması, QGIS'te serbestçe açılıp kaydırılmaya devam edilmesi hâlâ inanılmaz derecede yavaş.
Ayrıca, büyük rasterleri içe aktarırken veya PostGIS ile büyük öznitelik tablolarını açarken, raster2pgsql ve qgis-bin için bellek tüketiminin 1 GB'ın üzerinde olduğunu belirtmekte fayda var. @Michael ve @Paul ilk soruma cevaben bahsettiği gibi, PostGIS'in rasterleri saklamak için herhangi bir fayda sağlaması durumunda fazla bir şey getirmediği anlaşılıyor. Ancak, bu noktada, özellikle ESRI fileGDB'ler raster niteliklerini, mozaik veri kümelerini ve coğrafi veritabanının kolaylaştırdığı diğer raster işlemlerini etkinleştirdiğinde, CBS ihtiyaçlarım için neden QGIS + PostGIS'i çalıştırdığımı soruyorum. Öyleyse belki ya gerçekten bir şeyleri özlüyorum ya da QGIS ve PostGIS GIS ihtiyaçlarımı karşılamıyor. İkincisini inanması zor buluyorum.