ข้อมูลคลาวด์พอยต์ขนาดใหญ่ใน PostGIS - การจัดเก็บและประมวลผล


14

ฉันสงสัยว่าเป็นไปได้อย่างไรที่จะจัดเก็บชุดข้อมูลเมฆจุดสแกนขนาดใหญ่ใน PostGIS พร้อมเวลาในการประมวลผลในใจ ฉันรู้ว่ามีรูปทรงเรขาคณิต - วัตถุPointใน PostGIS แต่เท่าที่ฉันรู้ว่ามันช่วยให้แต่ละจุดใน tupel ใหม่ซึ่งสามารถทำการค้นหาจุดใดจุดหนึ่งเป็นกระบวนการที่ช้ามากหากเก็บไว้ไม่กี่ล้านหรือมากกว่านั้น

ฉันพบบทความจาก HSR Universtiy ของ Applied Science Rapperswill เพื่อหารือเกี่ยวกับหัวข้อนี้ มันแสดงให้เห็นสามวิธีในการจัดเก็บข้อมูลดังกล่าวไว้Whole data in one tupel, Each point in one tupelหรือSplitting Data into Blocksที่มีการอ้างอิงโดยข้อมูลตารางถือขยายของแต่ละบล็อก เป็นวิธีที่สามดูเหมือนว่ามีประโยชน์มากที่สุดสำหรับการค้นหาตำแหน่งที่เก็บไว้ฉันสงสัยว่าใครมีประสบการณ์มาบ้างแล้ว?

กระดาษสามารถพบได้ที่นี่: http://wiki.hsr.ch/Datenbanken/files/pgsql_point_cloud.pdf

ท้ายสุด แต่ไม่ท้ายสุดฉันขยำข้ามโครงการ github ซึ่งดูเหมือนว่าจะจัดการกับมารยาทของ cloud point ใน PostgeSQL น่าเสียดายที่มีข้อมูลไม่มากเกี่ยวกับเรื่องนี้ในเน็ต ดังนั้นคำถามเดียวกันที่นี่: มีใครบางคนได้ทำประสบการณ์กับมันแล้ว? มันใช้งานได้สำหรับวัตถุประสงค์ดังกล่าวหรือไม่

สามารถพบโครงการได้ที่นี่: https://github.com/pramsey/pointcloud

ฉันก็ยินดีที่จะรับฟังข้อเสนอแนะความคิดหรือประสบการณ์อื่น ๆ หากมี แต่ฉันต้องยอมรับว่าไม่ใช่ทางออกเชิงพาณิชย์ที่ต้องการ


1
คุณสามารถให้ความคิดคร่าว ๆ เกี่ยวกับสิ่งที่คุณหมายถึงโดยขนาดใหญ่และชนิดของข้อมูลจากจุดเมฆที่คุณต้องการ? คือเฉพาะ XYZ และความเข้มซึ่งสามารถเก็บไว้ใน MultipointZM ที่ถูกบล็อกหรือข้อมูลคุณลักษณะอื่น ๆ ซึ่งอาจต้องใช้ Point เพื่อรับค่าที่ไม่ซ้ำสำหรับการวัดแต่ละจุด
Torsti

1
ฉันเก็บ lidar ในระยะ 10 x 10 เมตรโดยแบ่งตามประเภท เราใช้เฉพาะค่าภาคพื้นดิน Z เท่านั้น
simplexio

1
@AndreSilva เป้าหมายคือเพื่อสร้างโปรไฟล์พื้นผิวถนนจากข้อมูล ตอนนี้เราเปลี่ยนคะแนนเป็น DEM-grids และใช้ PostGIS เพื่อจัดเก็บเป็น rasterblocks และ SAGA เพื่อสร้างโปรไฟล์ในที่สุด มันทำงานเพื่อวัตถุประสงค์ในการทดสอบ แต่ก็หมายถึงการสูญเสียความแม่นยำผ่านการแรสเตอร์ข้อมูลก่อนที่จะนำเข้า db นอกจากนี้การส่งออกของกริดเซลล์ที่ถูกตัดโดยเส้นโปรไฟล์ที่กำหนดจะช้ามากใน PostGIS (ขอบคุณ ST_Union) จะดีถ้าคุณสามารถแนะนำเครื่องมือสำหรับงานที่คล้ายกัน
knutella

1
@til_b: นี่คือสิ่งที่ฉันกำลังพูดถึง ... Good find :)
knutella

1
ฉันถามคำถามเดียวกันกับตัวเองแล้วนำชิ้นส่วนต่างๆมารวมกันเพื่อเป็นต้นแบบการทำงาน จนถึงตอนนี้มันใช้งานได้ดีโดยไม่มีปัญหาเรื่องความสามารถในการปรับขยายได้จากหลายล้านถึงร้อยล้านจุดโดยมีคุณลักษณะประมาณ 20 รายการ ด้วยจุดต่าง ๆ มากมายการค้นหาจุดภายในพื้นที่ใช้เวลาไม่กี่ร้อยมิลลิวินาที ใช้เวลาประมาณเดียวกันในการกรองตามเวลา (เวลาที่แม่นยำในการซื้อสำหรับฉัน) โดยรวมแล้ว perf จะเหมือนหรือดีกว่าใน"LiDAR Data Management Pipeline จาก Spatial Database Population ไปจนถึง Web-Application Visualization"ข้อมูลถูกบีบอัดลงใน DB (ประมาณ 1: 2

คำตอบ:


5

มีคำถามมากมายในคำถามของคุณ คำตอบสั้น ๆ คือใช่มันเป็นไปได้อย่างสมบูรณ์ในการจัดเก็บข้อมูลเมฆขนาดใหญ่ใน PostGIS และใช้สำหรับการประมวลผล เราได้สร้างระบบที่สมบูรณ์เช่นนี้

วิดีโอนี้มีข้อมูลล้าสมัยเล็กน้อย แต่เรามี TBs ของข้อมูลมือถือ / ภาคพื้นดินและทางอากาศในโพสต์กิสที่สามารถเข้าถึงได้ผ่านทาง Python สำหรับการประมวลผลในส่วนหลังและด้วยส่วนหน้าเว็บที่อนุญาตให้รับชม 3D https://vimeo.com/39053196

มันเป็นเรื่องเกี่ยวกับวิธีที่คุณเลือกจัดเก็บข้อมูลใน PostGIS และวิธีการเข้าถึงข้อมูลของคุณ วิธีแก้ปัญหาที่ดีสำหรับข้อมูลทางอากาศอาจเป็นการจัดตารางข้อมูลด้วยวิธีใดวิธีหนึ่งและใช้หลายจุดเพื่อประสิทธิภาพ อย่างไรก็ตามหากคุณกำลังทำงานกับข้อมูลมือถือหรือภาคพื้นดินที่ความหนาแน่นของจุดสามารถอยู่ระหว่าง 500-30000 + จุดต่อเมตรกำลังสองวิธีนี้ไม่ทำงาน ถ้าอย่างนั้นก็มาดูที่ฮาร์ดแวร์ของคุณและจำนวนผู้ใช้ที่เกิดขึ้นพร้อมกันที่คุณคาดหวัง รายละเอียดเกี่ยวกับเรื่องนี้สามารถพบได้ในเอกสารบางส่วนของเรา http://www.mendeley.com/profiles/conor-mc-elhinney/


สวัสดีขอบคุณสำหรับข้อมูลรายละเอียดมากมาย ides / การทดสอบที่นำเสนอในเอกสารของคุณดูเหมือนมีประโยชน์จริง ๆ ! ฉันต้องใช้เวลาพอสมควรกว่าจะได้เห็นทุกอย่าง แต่อย่างที่ฉันเห็นในการอ่านครั้งแรก ขอบคุณมากสำหรับการเพิ่ม! นอกจากนี้วิดีโอและโปรแกรมดูพีซีที่ใช้เบราว์เซอร์ของคุณก็น่าสนใจและดูเหมือนว่าจะทำงานได้ดีและราบรื่น! น่าเสียดายที่ฉันมีมืออื่น ๆ ฉันหวังว่าจะดำเนินการกับข้อมูลคอมพิวเตอร์ต่อไปในไม่ช้า
Knutella

โครงการ Glimpse มีการสาธิตที่ยอดเยี่ยมจริง ๆ ที่นี่: ncg.nuim.ie/glimpse/auth/login.php
Kozuch

7

(คำตอบนั้นขึ้นอยู่กับความคิดเห็นของฉันและของผู้อื่นด้านบน แต่ยังไม่ได้ทดสอบจริง ๆ )

เก็บคะแนนเป็น MultiPointZM ขนาดกริดที่ดีที่สุดอาจขึ้นอยู่กับรูปแบบการเข้าถึงและคุณจำเป็นต้องทำการทดสอบบางอย่างกับสิ่งนี้ กริดปกติที่มีดัชนีปริภูมิควรทำการสืบค้นอย่างรวดเร็ว หากการเข้าถึง 3d เป็นสิ่งสำคัญ MultiPointZM สามารถใช้บล็อก 3 มิติ (1) แทนที่จะเป็นกริด 2D ได้ดังนั้น (ถ้าคุณมี PostGIS> = 2.0) คุณจะสามารถใช้ &&& เพื่อการสืบค้น 3D ได้อย่างรวดเร็ว

คุณสามารถจัดเก็บรูปแบบกริดในตารางแยกซึ่งอาจเป็นประโยชน์เช่นเมื่ออัปเดตข้อมูลและตรวจสอบว่าบล็อก MultiPointZM อยู่ภายในขอบเขตหลังจากแก้ไขแล้วเป็นต้น

การจัดเก็บเวลาประทับหรือข้อมูลอื่น ๆ จะทำได้เพียงครั้งละหนึ่งบล็อก แต่ข้อมูลไบนารี / หมวดหมู่บางส่วนสามารถจัดเก็บได้โดยแยกการบล็อกแต่ละรายการโดยแอตทริบิวต์หากมีหมวดหมู่และ / หรือแอตทริบิวต์ไม่มากเกินไป

หากคุณต้องเก็บข้อมูลเป็น PointZM แยกต่างหากจากนั้นคีย์ต่างประเทศในตารางกริด + ดัชนี B-Tree จะทำให้โหลดเฉพาะจุดที่ระบุ (อาจ) เร็วกว่าการป้อนตารางโดยตรงแม้จะเป็นพื้นที่ ดัชนี.

(1) หากช่วงของค่า Z มีขนาดเล็ก (เป็นถนนหลังจากนั้นทั้งหมด) สิ่งนี้อาจไม่สมเหตุสมผล


ฉันคิดว่าการ 'สรุป' ของคุณจะได้รับผลกระทบค่อนข้างดีในบทสรุปของข้อเสนอที่กล่าวถึงในอดีต ดังที่คุณกล่าววิธีการที่ถูกต้องในการโหลดข้อมูลดังกล่าวจะต้องได้รับการพิจารณาตามความต้องการและแนวทางแก้ไขที่เสนอ กลายเป็นว่าเป็นไปไม่ได้ที่จะขอบคุณความคิดมากมาย มันทำให้ฉันมีแรงบันดาลใจมากมายสำหรับการทำงานต่อในเรื่องนี้ ขอบคุณมาก!
knutella
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.