คำถามของฉันเกี่ยวข้องกับการใช้งานและประสิทธิภาพของเครื่องมือซอฟต์แวร์หลายอย่างที่ใช้ร่วมกันคือ PostgreSQL, PostGIS, QGIS และ GDAL
ฉันเป็นผู้ใช้ ArcGIS, Python และ R มาเป็นเวลานานและมีความสนใจที่จะเปลี่ยนเป็นระบบ GIS โอเพ่นซอร์สและลินุกซ์ฟรี เมื่อเร็ว ๆ นี้ฉันสนใจใช้ QGIS (ver 2.8) ร่วมกับ PostgreSQL (ver 9.4) และ PostGIS (ver 2.1) และฉันได้ติดตั้งซอฟต์แวร์ลงในคอมพิวเตอร์ที่ใช้ Windows 8.1 x64 (รายละเอียดคอมพิวเตอร์โดยย่อ: ThinkPad X200s พร้อมกับ 2.1GHz Core 2, RAM 8GB และ 240GB SSD) เมื่อฉันเรียนรู้วิธีการจัดการข้อมูลเชิงพื้นที่ของฉัน (มูลค่าประมาณ 100GB) ฉันต้องการเรียกใช้ Ubuntu บนเครื่องนี้
ในขณะนี้ฉันแค่พยายามจัดเก็บและดึงไฟล์รูปร่างและแรสเตอร์อย่างน่าเชื่อถือ จนถึงตอนนี้ฉันประสบความสำเร็จในการโหลดรูปร่างเข้าสู่ PostGIS แต่ rasters กำลังพิสูจน์ปัญหาได้มากกว่า ฉันทำการนำเข้าไฟล์ geoTIFF และ GRID ขนาดเล็กและชุดนำเข้าสำเร็จแล้ว แต่มีขนาดใหญ่กว่า (เช่นไฟล์ IMG หรือเซลล์ขนาด 15619x14655 IMG หรือ TIFF ขนาด 870MB บนดิสก์) ใช้เวลาตลอดไปในการโหลดลงใน PostGIS ฉันได้อ่านและกำหนดค่าเครื่องมือ raster2pgsql เพื่อสร้างดัชนีเชิงพื้นที่และโหลด rasters ด้วยกระเบื้องโดยใช้พารามิเตอร์เหล่านี้:
raster2pgsql -s 3161 -C -I D:\PostGIS_data\dem.img -t auto raster.dem | psql -h localhost -U postgres -p 5432 -d postgres
ประสิทธิภาพในการนำเข้ายังคงแย่มากและฮาร์ดแวร์ไม่ใช่ปัญหา การมองเห็นภาพของ rasters แบบ PostGIS ใน QGIS ยิ่งแย่ลงการโหลดภาพแรสเตอร์ขนาดเล็กที่ดีที่สุดหรือแช่แข็งอย่างช้าๆ แรสเตอร์ขนาดใหญ่อย่างที่ฉันพูดถึงเป็นไปไม่ได้ที่จะเห็นภาพใน QGIS จากเอกสารและการอภิปรายในฟอรัมข้อบกพร่องนี้ดูเหมือนจะเกิดจากไดรเวอร์แรสเตอร์ PostGIS ของ GDAL ไม่ใช่ QGIS การอภิปรายในฟอรั่มพูดถึงปัญหานี้ในเวลาสั้น ๆ และบางคนถึงกับแนะนำว่าไม่ควรจัดเก็บ rasters ใน PostGIS (อะไรคือจุดสำคัญในฐานข้อมูลเชิงพื้นที่ที่ไม่จัดการ rasters ได้อย่างราบรื่น?) แต่ฉันใช้ฐานข้อมูลไฟล์ของ ESRI เป็นประจำเพื่อจัดเก็บมองเห็นและวิเคราะห์แรสเตอร์ขนาดใหญ่ (~ 70GB) อย่างรวดเร็วและง่ายดายและ ArcGIS 10.1 ไม่เคยหยุดนิ่งหรือช้าลงเนื่องจากการดำเนินการตามปกติดังกล่าว
มีบางอย่างที่ฉันขาดไปที่นี่คอขวดที่ฉันไม่ได้พูดถึงเหรอ? PostgreSQL ต้องมีการปรับแต่งเพื่อให้เกิดประโยชน์ด้านประสิทธิภาพของ PostGIS หรือไม่ ฉันหายไปจากรุ่น GDAL ที่ฉันต้องตามล่าและรวบรวมหรือไม่ ฉันจะปรับปรุงประสิทธิภาพของ PostGIS และการสร้างภาพข้อมูลใน QGIS ของ shapefiles และ rasters โดยเฉพาะได้อย่างไร ฉันจะเพลิดเพลินไปกับความรุ่งโรจน์ของการจัดการข้อมูลเชิงพื้นที่ที่ครอบคลุมและรวดเร็วผ่านช่องทาง Linux ได้อย่างไร ยินดีต้อนรับความช่วยเหลือใด ๆ เกี่ยวกับปัญหานี้!
ฉันทำตามคำแนะนำนี้โดย Duncan Golicher: https://duncanjg.wordpress.com/2012/11/11/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 870MB ได้ในเวลาที่เหมาะสมและแสดงใน QGIS โดยไม่ทำให้แอปพลิเคชันช้าหรือกระแทก เวลาในการเรนเดอร์ไม่เร็วอย่างที่ฉันคาดหวัง แต่ก็เป็นที่ยอมรับ ฉันจะอ่านเพิ่มเติมเกี่ยวกับพารามิเตอร์ -l เพื่อใช้อย่างถูกต้อง
บังเอิญในการนำเข้าไฟล์ dem.img เป็นตาราง dem100 ตารางแรสเตอร์อื่นถูกสร้างขึ้นเรียกว่า "o_4_dem100" เมื่อฉันนำเข้ามันเป็นเลเยอร์ใน QGIS นั้นจะมีช่วงค่าระหว่าง 201 ถึง 524 ในขณะที่ชั้น dem100 มีช่วงระหว่าง 36 ถึง 524 ฉันจะสมมติว่าตารางพิเศษนี้เป็นตารางพีระมิดที่แคบกว่า ช่วงค่าที่เป็นผลมาจากการรวมกับความละเอียดที่ต่ำกว่า?
ฉันไม่คิดว่าฮาร์ดแวร์ไม่เพียงพอเป็นปัญหา นี่เป็นบทสรุปโดยย่อของสิ่งที่ฉันค้นพบ
โปรแกรมควบคุมแรสเตอร์ PostGIS ของ GDAL มีปัญหาด้านประสิทธิภาพในอดีต( ดูที่นี่เช่นกัน ) แม้ว่าจะพบปัญหาเหล่านี้ในปี 2555 แต่ฉันสงสัยว่า GDAL 1.11.2 ที่พบใน QGIS 2.8 ยังคงมีปัญหานี้อยู่หรือไม่ มีผู้อื่นที่ใช้ QGIS และ PostGIS ในการสร้างภาพแรสเตอร์และการจัดเก็บไหม?
ในบันทึกที่เกี่ยวข้องเป็นไปได้ผมก็ยังมีปัญหาประสิทธิภาพการทำงานที่มีการเปิด PostGIS ตารางแอตทริบิวต์ใน QGIS กับตารางของ ~ บันทึก หลังจากที่ไม่กี่คำแนะนำในหัวข้อที่และไม่มีการแก้ไขปัญหาที่เกิดขึ้นในที่สุดฉันยื่นรายงานข้อผิดพลาดกับ QGISที่ในที่สุดก็ถูกปิดและเชื่อมโยงกับรายงานข้อผิดพลาดต่อไปนี้ที่คล้ายกัน แม้ว่ารายงานข้อผิดพลาดจะปิด แต่ดูเหมือนว่าจะไม่ได้รับการแก้ไข ...
เพื่อสรุปความพยายามของฉัน:
- ฉันปรับเซิร์ฟเวอร์ PostgreSQL ให้เหมาะกับข้อมูลเชิงพื้นที่
- ฉันสร้างดัชนีเชิงพื้นที่สำหรับตารางเรขาคณิตและสร้าง VACUUM
- พฤติกรรม QGIS สำหรับการเปิดตารางแอตทริบิวต์ขนาดใหญ่ (ระเบียน 4.7 ~ m) ดูเหมือนจะลองอ่านระเบียนทั้งหมดแทนที่จะส่งคืนชุดย่อยเพื่อการดูทันที สิ่งนี้นำไปสู่ประสิทธิภาพที่ไม่ดี
ประสิทธิภาพในการแสดงผลตารางเรขาคณิตขนาดใหญ่ของ PostGIS ได้ดูเหมือนจะเป็นปัญหา
ด้วย raster2pgsql แรสเตอร์จะถูกทำดัชนีปูกระเบื้องและนำเข้าเป็นตารางแรสเตอร์ที่มีปิรามิดใน PostGIS
- Rasters ทุกขนาดที่เหมาะสมนั้นยังคงนำเข้าสู่ PostGIS ช้าอย่างไม่น่าเชื่อปล่อยให้อยู่คนเดียวเปิดและเลื่อนไปรอบ ๆ ใน QGIS
นอกจากนี้ยังเป็นที่น่าสังเกตว่าเมื่อนำเข้า rasters ขนาดใหญ่หรือเปิดตารางแอตทริบิวต์ขนาดใหญ่ด้วย PostGIS การใช้หน่วยความจำสำหรับ raster2pgsql และ qgis-bin มีมากกว่า 1GB @Michael และ @Paul ได้พูดถึงคำถามแรกของฉันแล้วปรากฏว่า PostGIS ไม่ได้ให้ประโยชน์อย่างมากหากเก็บ rasters อย่างไรก็ตาม ณ จุดนั้นฉันถามว่าทำไมฉันจะเรียกใช้ QGIS + PostGIS เลยสำหรับความต้องการ GIS ของฉันโดยเฉพาะอย่างยิ่งเมื่อ ESRI fileGDBs เปิดใช้งานแอตทริบิวต์แรสเตอร์ชุดข้อมูลโมเสกและการดำเนินการแรสเตอร์อื่น ๆ ดังนั้นบางทีทั้งฉันกำลังมันขาดอะไรหรือ QGIS และ PostGIS ไม่ตอบสนองความต้องการของฉัน GIS ฉันพบว่าหลังยากที่จะเชื่อ