ใช้ GeoPackage แทน SpatiaLite และในทางกลับกัน


35

ฉันใช้ตอนนี้ QGIS 2.18 ซึ่งรวมถึงการสนับสนุนรูปแบบ GeoPackage

ฉันรู้ว่า GeoPackage เป็นเหมือนการแทนที่สำหรับ Shapefile แต่ก็ไม่เป็นเช่นนั้นเนื่องจาก GeoPackage มีความสามารถของฐานข้อมูล ในเวลาเดียวกัน GeoPackage ไม่สามารถทดแทน SpatiaLite ได้อย่างสมบูรณ์เนื่องจากไม่มีการสืบค้นเชิงพื้นที่และฟังก์ชั่น นอกจากนี้ Spatialite ยังรองรับ GeoPackage

ดังนั้นในบริบทของการแก้ไข QGIS มันจะใช้ GeoPackage เมื่อใด (และเข้าถึง GeoPackage จาก SpatiaLite สำหรับงาน SQL เชิงพื้นที่) และเมื่อใช้ Spatialite จะดีกว่าเมื่อใด?


1
ฉันสนใจคำถามนี้ด้วย โปรดทราบว่าขณะนี้การสนับสนุน geopackage มีข้อ จำกัด เนื่องจากข้อผิดพลาดในการล็อกหลังจากแก้ไขครั้งแรก
hilpers

แต่นี่แก้ไขได้แล้วเหรอ! ไม่ได้เข้ารหัสปัญหากับ 2.18
เคลือบ

น่าเสียดายที่ฉันใช้
2.18.3

ฉันทดสอบด้วย 2.18.3 โดยใช้ขั้นตอนที่เขียนในตัวติดตามบั๊กเก่าและไม่สามารถทำซ้ำได้ คุณประสบปัญหาในสถานการณ์ใด
เคลือบ

ฉันยังพบข้อผิดพลาดการล็อคหลังจากแก้ไขครั้งแรกกับ GeoPackage แต่เมื่อฉันใช้การนำเข้า DWG / DXF ใหม่ใน 2.18.3 ฉันสามารถนำเข้า DWG สำเร็จแล้วและเริ่มแก้ไข GeoPackage ที่สร้างขึ้น (เช่นเพื่ออ้างอิงทางภูมิศาสตร์ด้วยปลั๊กอิน Vector Bender) แต่เมื่อฉันปิดโปรเจ็กต์ QGIS และเปิดปุ่มแก้ไขสลับใหม่เป็นสีเทาและ GeoPackage ไม่สามารถแก้ไขได้อีก
Rob Willson

คำตอบ:


32

เปรียบเทียบเล็กน้อยระหว่าง GeoPackage และ SpatiaLite ใน QGIS จนถึงขณะนี้มันไม่ได้ผลจริงๆที่จะใช้ GeoPackage กับ QGIS อาจเปลี่ยนค่อนข้างเร็ว (ดูที่การเพิ่ม!)

ข้อมูลเพิ่มเติมบางส่วนเกี่ยวกับนามแฝง QGIS 2.99 ใหม่ QGIS 3, พ.ย. 2017 (เพิ่มเข้ามาเมื่อเปรียบเทียบ): ตอนนี้ GeoPackage ทำงานได้เกือบไม่มีปัญหาใด ๆ ใน QGIS 3 พบปัญหาเล็กน้อยที่อาจเกี่ยวข้องกับรุ่นนักพัฒนา QGIS นอกจากนี้ปัญหาที่เป็นปัญหามากที่สุดสำหรับ SpatiaLite ก็สามารถแก้ไขได้ สามารถลบคอลัมน์ได้ทันทีโดยไม่มีวิธีแก้ไขเพิ่มเติม ทั้งสองยังคงไม่สนับสนุนการเขียนแรสเตอร์ผ่าน GUI ซึ่งไม่ใช่ปัญหาใหญ่เนื่องจาก rasters ในฐานข้อมูลไม่ใช่จุดประสงค์หลัก ทั้งสองรูปแบบเป็นรูปแบบการทำงานที่ดีมาก โฟกัสสำหรับ GeoPackage คือรูปแบบการขนส่งและสำหรับ SpatiaLite ระบบฐานข้อมูลที่ใช้ไฟล์ได้ง่ายพร้อมเครื่องมือมากมายสำหรับการสร้างที่เก็บข้อมูลในเครื่อง (เนื่องจาก RDBMS มากกว่ารูปแบบไฟล์)

ทั้งสองมี:

  1. การทำธุรกรรม
  2. SQL และมุมมอง (แต่มุมมองจะถูกนำไปใช้งานต่างกันในซอฟต์แวร์ที่ใช้)
  3. "all in one" เวกเตอร์เลเยอร์, ​​สัญลักษณ์และข้อความ, แรสเตอร์
  4. -client-tables ที่แทบจะไม่มีข้อ จำกัด เทียบกับ shapefile
  5. ต้องการ VACUUM เป็นครั้งคราว (ที่เก็บข้อมูลเฉพาะฐานข้อมูล)
  6. ประเภทเรขาคณิตส่วนใหญ่ (เช่นเส้นโค้ง)

GeoPackage:

  1. เป็นมาตรฐาน OGC บนพื้นฐานของ SQLite หมายถึงการดำเนินการควรจะสอดคล้องกันมากขึ้นในซอฟต์แวร์ที่แตกต่างกัน ตัวอย่างเช่นสัญลักษณ์อาจทำงานใน QGIS และ ArcMap ในอนาคตเมื่อมีการใช้สไตล์ SLD
  2. สาวสวย (2014), ค่อนข้างมีปัญหากับมันใน QGIS มากถึง 2.18 (อัปเดต: รองรับดีใน QGIS 3)
  3. อนุญาตให้ลบคอลัมน์ใน QGIS ได้ง่ายสำหรับผู้ใช้ "ปกติ" ที่ต่อต้าน SpatiaLite
  4. ตอนนี้ DB-Manager ทำงานได้ไม่ดีนักและการสนับสนุนแบบ raster จำกัด อยู่ที่การอ่าน raster แบบรวมเดียว (ไม่เขียนลงไป) (ใช้ QGIS 2.18.3) (อัพเดต: DB-Manager ทำงานได้ดีกับ geopackage)
  5. มุมมองไม่ทำงานใน QGIS แต่ผ่านเลเยอร์เสมือนไม่เกิดปัญหามากเกินไปเมื่อไม่ได้ใช้สำหรับการแชร์ระหว่างผู้ใช้หลายคน (อัปเดต: ยังไม่มีมุมมองเนื่องจาก QGIS 3 สามารถสร้างมุมมองได้จริง แต่ไม่สามารถอ่านได้ในภายหลัง)
  6. เครื่องมือการประมวลผลทางภูมิศาสตร์ไม่อนุญาตให้ผนวกไฟล์ที่มีอยู่ (แทนที่ทั้งไฟล์เท่านั้น) (อัปเดต: ใช้งานได้ทันที)

SpatiaLite:

  1. เป็นส่วนเสริมสำหรับ SQLite ซึ่งมีการใช้งานในซอฟต์แวร์ GI ต่างกัน (ส่วนใหญ่เกิดจากไดรเวอร์และปัญหารุ่น)
  2. อายุมากและมากถึงตอนนี้รวมเข้ากับ QGIS ได้ดีขึ้น
  3. ใน QGIS คุณไม่สามารถลบคอลัมน์ที่ไม่มี SQL-Query ที่ไม่ซับซ้อน แต่สำหรับผู้ใช้บางคน "รหัส" มากเกินไปแล้ว (อัปเดต: QGIS 3 ทำได้ในขณะนี้)
  4. ไฟล์ที่ค่อนข้างใหญ่เมื่อมีมือที่เต็มไปด้วยรูปทรงเรขาคณิตไม่ดีเท่ารูปแบบการขนส่ง แต่สำหรับการจัดเก็บฐานข้อมูลท้องถิ่น (มันเริ่มต้นด้วยบางสิ่งบางอย่างประมาณ 5MB)
  5. เครื่องมือเพิ่มเติมจำนวนมาก (มุมมองอาจสร้างเครือข่ายถนนรูปแบบการนำเข้า / ส่งออกหลายรูปแบบ ST_Queries และอื่น ๆ )

คุณวางแผนที่จะใช้ GeoPackage หรือ SpatiaLite กับ QGIS หรือซอฟต์แวร์อื่น ๆ ด้วยหรือไม่? SpatiaLite ยังสนับสนุนทั้งหมดนี้gaia-gis.it/gaia-sins/spatialite-sql-latest.htmlแบบสแตนด์อโลนโดยไม่ต้อง QGIS
user30184

ฉันใช้ SpatiaLite เป็นส่วนใหญ่ร่วมกับ QGIS แต่ใช้กับ SpatiaLite-GUI ฉันแนะนำในหลักสูตรการฝึกอบรมสำหรับ QGIS จุดเดียวที่มีปัญหาในการลบคอลัมน์สำหรับผู้เริ่มต้นคือ ฉันไม่แนะนำในการฝึกอบรม ArcGIS เนื่องจากพวกเขามี FileGeodatabase ที่มีอยู่ในหน่วยงานบางอย่างที่จำเป็น (ใน 10% ที่ไม่ใช่แฟ้มข้อมูลที่ยังคงทันสมัย ​​... ) ฉันเริ่มประกาศ GeoPackage ในหลักสูตร QGIS ขั้นสูง แต่ด้วยการจับหลังเขียนไว้ข้างต้น แต่เนื่องจาก GDAL มีการใช้งานที่ดีจึงไม่สามารถใช้เวลานานจนกว่า QGIS จะมีปุ่มที่จำเป็น
เคลือบ

อย่างที่คุณบอกการเปรียบเทียบของคุณเกี่ยวกับการใช้งาน QGIS ฉันอยากจะเน้นว่าการตัดสินว่า SpatiaLite หรือ GeoPackage ดีกว่าเพราะกรณี "drop column" นั้นมีความเฉพาะเจาะจงมาก QGIS SQLite ตัวเองไม่ได้สนับสนุนการดำเนินงานนี้โดยตรงsqlite.org/lang_altertable.html วิธีแก้ปัญหาแบบเดียวกันนี้ใช้ได้กับทั้ง SpatiaLite และ GeoPackage แม้ซอฟต์แวร์บางตัวอาจพลาดปุ่ม
user30184

1
ฉันใส่ลงในบริบทของคำถามเดิมว่าเป็นเรื่องเกี่ยวกับ QGIS จุดที่มีคอลัมน์เป็นตัวอย่างหนึ่งที่ฉันหวังว่ามาตรฐานจะนำไปสู่การใช้ที่สอดคล้องกันมากขึ้นในโปรแกรมเนื่องจากเป็นหัวข้อสำหรับผู้ใช้ "ปกติ" ไม่แน่ใจว่าสิ่งนี้จะเป็นไปได้กับ SpatiaLite หรือไม่เนื่องจากระดับการรวมกลุ่มมีความแตกต่างกันมากแม้หลังจากผ่านไปหลายปี ในที่สุดสำหรับฉันมันจะนำไปสู่จุดที่มันอาจเป็นรูปแบบการขนส่งมาตรฐานใหม่ (GeoPackage) SpatiaLite เป็นเหมือน GIS มากขึ้นด้วยฟังก์ชั่นในตัว (ST-Queries, ตัวเลือกการนำเข้าข้อมูลมากมาย, เครือข่าย ... )
เคลือบ

ทั้ง GeoPackage และ SpatiaLite เป็นแบบ SQLite
Matthias Kuhn
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.