PostgreSQL รองรับประเภทข้อมูลเชิงพื้นที่ตัวดำเนินการและการทำดัชนีแล้ว
PostGIS ให้อะไรที่ทำให้จำเป็นต้องมีอยู่เพื่อเป็นส่วนเสริมของ PostgreSQL
ทำไมเราไม่เพียงแค่ใช้ฟังก์ชันเชิงพื้นที่ของ PostgreSQL
PostgreSQL รองรับประเภทข้อมูลเชิงพื้นที่ตัวดำเนินการและการทำดัชนีแล้ว
PostGIS ให้อะไรที่ทำให้จำเป็นต้องมีอยู่เพื่อเป็นส่วนเสริมของ PostgreSQL
ทำไมเราไม่เพียงแค่ใช้ฟังก์ชันเชิงพื้นที่ของ PostgreSQL
คำตอบ:
ถ้าคุณกระทบกระเทือนจักรวาลจนถึงต้นปี 2544 และไม่เพียง แต่ให้นักประดิษฐ์ของ PostGIS มองเห็นอนาคต แต่ยังปล่อยให้ PSC ของ PgSQL มองเห็นอนาคตบางที PostGIS จะเป็นชุดข้อมูลแก้ไขบน PgSQL แต่อย่างน้อยถ้าเราเริ่มต้นเป็นแพทช์ถึงหลักสิ่งแรกที่เราจะต้องเจอคือ:
และแกน PgSQL ก็บอกว่า: "ไม่แน่นอนไม่ใช่พื้นที่ที่มีความหมายที่เข้าใจดีอยู่แล้วและเราไม่สามารถทำการเปลี่ยนแปลงย้อนหลังที่เข้ากันไม่ได้เช่นนั้น"
ในฐานะนักพัฒนาที่ไม่ใช่ธุรกิจหลัก PostGIS สามารถตีพิมพ์เผยแพร่รายเดือนและรายเดือน 6 เดือนเป็นเวลาหลายปีในขณะที่ PgSQL core ได้รับการปรับแต่งพร้อมกับการเผยแพร่รายปีและอีกต่อไป เรายังสามารถเพิ่มคุณสมบัติใด ๆ ที่เราต้องการได้ทุกเมื่อเนื่องจากเรามีสิทธิ์ในโครงการของเรา แต่การได้รับสิทธิ์ใน PgSQL นั้นใช้เวลานานมาก
เมื่อถึงเวลาที่ PostGIS แสดงให้เห็นว่ามีค่าภายนอกเพียงพอที่แกน PgSQL มองข้ามและพูดกับตัวเองว่า "อืมน่าจะดีที่มีแกนเป็นคุณลักษณะพิเศษ" แล้วก็มีรหัสมาตรฐานและสไตล์ที่แตกต่างกันมากมาย PgSQL (ไม่ต้องพูดถึงภายใต้ใบอนุญาตที่เข้ากันไม่ได้) ว่าแนวคิดของการผสานนั้นเป็นไปไม่ได้จริงๆ
แต่ PostGIS ได้กลายเป็นตัวอย่างที่ยอมรับได้ของส่วนขยายที่ซับซ้อนขนาดใหญ่จริง ๆ ซึ่งช่วยให้ PgSQL ยังคงเป็นแบบแยกส่วนและขยายได้ "สิ่งนี้จะมีผลอย่างไรกับ PostGIS" เป็นคำถามที่มักถูกถามเป็นหลัก PgSQL ประเมินการเปลี่ยนแปลงบางอย่าง สิ่งนี้เป็นสิ่งที่ดีบางทีอาจไม่ดีเท่า PostGIS ที่เป็นส่วนหนึ่งของหลัก แต่ก็ดีพอ
มีเหตุผลอื่น ๆ เช่นรายการพึ่งพา PgSQL หลักที่น่าเกลียดการดูความสม่ำเสมอของโค้ดที่ต่ำกว่าและความสะอาดของ API ซึ่งพวกเขาจะหมดหวังในการปรับปรุงและต่อ ๆ ไป แม้แต่ในความคิด PostGIS ก็มีก้อนผมใหญ่เกินกว่าที่ PgSQL จะกลืนได้ในครั้งเดียว
นั่นไม่ใช่เรื่องจริง PostgreSQL ไม่สนับสนุนประเภทข้อมูลเชิงพื้นที่ รองรับประเภทเรขาคณิต สิ่งเหล่านี้ดีสำหรับบางสิ่งบางอย่าง แต่มันแยกออกจากระบบพิกัดโลกแห่งความเป็นจริงโดยสิ้นเชิง ประเภทพื้นเมือง
สำหรับคำถามดัชนีนั้นอยู่ในคำถามที่พบบ่อย
เหตุใดจึงไม่สนับสนุนดัชนี PostgreSQL R-Tree
รุ่นก่อนหน้าของ PostGIS ใช้ดัชนี PostgreSQL R-Tree อย่างไรก็ตาม PostgreSQL R-Trees ได้ถูกยกเลิกอย่างสมบูรณ์ตั้งแต่เวอร์ชั่น 0.6 และการจัดทำดัชนีเชิงพื้นที่มีให้กับโครงการ R-Tree-over-GiST
การทดสอบของเราแสดงความเร็วในการค้นหาเพื่อให้ R-Tree และ GiST นั้นเทียบเคียงได้ Native PostgreSQL R-Trees มีข้อ จำกัด สองประการซึ่งทำให้ไม่พึงประสงค์สำหรับการใช้งานกับคุณสมบัติ GIS (โปรดทราบว่าข้อ จำกัด เหล่านี้เกิดจากการใช้งาน R-Tree ดั้งเดิม PostgreSQL ปัจจุบันไม่ใช่แนวคิด R-Tree โดยทั่วไป):
ดัชนี R-Tree ใน PostgreSQL ไม่สามารถจัดการคุณสมบัติที่มีขนาดใหญ่กว่า 8K ดัชนี GiST สามารถทำได้โดยใช้เคล็ดลับ "lossy" ของการแทนที่กล่องขอบเขตสำหรับคุณลักษณะนั้น
ดัชนี R-Tree ใน PostgreSQL ไม่ได้ "ปลอดภัย" ดังนั้นการสร้างดัชนีในคอลัมน์รูปทรงเรขาคณิตซึ่งมีรูปทรงที่เป็นโมฆะจะล้มเหลว [ดัชนี GiST ปลอดภัยแล้ว]
PostGISเป็นตัวขยายฐานข้อมูลเชิงพื้นที่สำหรับฐานข้อมูลเชิง วัตถุเชิงสัมพันธ์ของPostgreSQL มันเพิ่มการสนับสนุนสำหรับวัตถุทางภูมิศาสตร์ที่ช่วยให้แบบสอบถามสถานที่ทำงานใน SQL
SELECT superhero.name FROM city, superhero WHERE ST_Contains(city.geom, superhero.geom) AND city.name = 'Gotham';
นอกเหนือจากการรับรู้ตำแหน่งพื้นฐานแล้ว PostGIS ยังมีคุณสมบัติมากมายที่ไม่ค่อยพบในฐานข้อมูลเชิงพื้นที่อื่น ๆ เช่น Oracle Locator / Spatial และ SQL Server อ้างถึงรายการคุณสมบัติของ PostGISสำหรับรายละเอียดเพิ่มเติม
รายการคุณสมบัติ PostGISขยายขีดความสามารถเหล่านั้นเช่นกัน:
PostGIS เพิ่มประเภทพิเศษ (เรขาคณิตภูมิศาสตร์แรสเตอร์และอื่น ๆ ) ลงในฐานข้อมูลPostgreSQL นอกจากนี้ยังเพิ่มฟังก์ชันตัวดำเนินการและการปรับปรุงดัชนีที่ใช้กับประเภทเชิงพื้นที่เหล่านี้ ฟังก์ชั่นเพิ่มเติมเหล่านี้ตัวดำเนินการการเชื่อมดัชนีและชนิดเพิ่มความแข็งแกร่งของ Core PostgreSQL DBMS ทำให้เป็นระบบการจัดการฐานข้อมูลเชิงพื้นที่ที่รวดเร็วมีคุณสมบัติและมีประสิทธิภาพ
รายการคุณสมบัติ
ซีรี่ส์ PostGIS 2+ มี:
- การประมวลผลและฟังก์ชั่นการวิเคราะห์สำหรับทั้งเวกเตอร์และข้อมูลแรสเตอร์สำหรับการประกบ, การหั่น, การทำ morphing, การจัดประเภทใหม่และการรวบรวม / การรวมกับพลังของพีชคณิตแผนที่เชิงภาพ SQL สำหรับการประมวลผลเชิงภาพเชิงภาพ
- ฟังก์ชันการปฏิเสธ SQL เชิงพื้นที่สำหรับข้อมูลเวกเตอร์และแรสเตอร์รองรับการนำเข้า / ส่งออกข้อมูลเวกเตอร์ Shapefile ของ ESRI ผ่านทั้ง commandline และ GUI เครื่องมือที่บรรจุแพคเกจและสนับสนุนรูปแบบเพิ่มเติมผ่านเครื่องมือโอเพนซอร์สอื่น ๆ
บรรจุบรรทัดคำสั่งสำหรับการนำเข้าข้อมูลแรสเตอร์จากหลายรูปแบบมาตรฐาน: GeoTiff, NetCDF, PNG, JPG
ฟังก์ชั่นการสนับสนุนการเรนเดอร์และอิมพอร์ตข้อมูลเวกเตอร์สำหรับรูปแบบข้อความมาตรฐานเช่น KML, GML, GeoJSON, GeoHash และ WKT โดยใช้ SQL ข้อมูลเรนเดอร์แรสเตอร์ในรูปแบบมาตรฐานต่างๆ GeoTIFF, PNG, JPG, NetCDF
ฟังก์ชันการเรียกใช้ SQL แบบแรสเตอร์ / เวกเตอร์ที่ไร้รอยต่อสำหรับการอัดค่าพิกเซลตามภูมิภาคเรขาคณิตสถิติการวิ่งตามภูมิภาคการตัดแรสเตอร์ตามเรขาคณิตและการสนับสนุนวัตถุสามมิติแบบเวกเตอร์แรสเตอร์ดัชนีเชิงพื้นที่และฟังก์ชั่น / ใช้ประโยชน์จากข้อมูลUS Census Tiger
นอกจากนี้ไปยังจุด / ส่วนที่กล่าวถึงแล้วในโพสต์นี้ ฉันจะเพิ่มดังที่กล่าวไว้ในเว็บไซต์ PostGIS มันทำงานอย่างไร
เนื่องจาก PostGIS อยู่ใน C มันสามารถใช้ประโยชน์จากไลบรารี่อื่นใน C และ C ++ และมันทำแบบอิสระ PostGIS ขึ้นอยู่กับ: