Topik ini menjelaskan detail dan penggunaan data awan titik. Data awan titik terdiri dari titik-titik yang dihasilkan ketika pemindai 3D memindai sebuah objek. Setiap titik berisi satu set koordinat 3D, dan beberapa titik mungkin mencakup informasi RGB atau intensitas. Data awan titik mencakup koordinat spasial serta sejumlah besar titik yang disajikan dalam dimensi atribut yang kompleks.
Ikhtisar
GanosBase PointCloud adalah Plugin PostgreSQL. Plugin ini menyediakan fitur seperti kompresi data awan titik, dekompresi data awan titik, dan pengumpulan statistik atribut, sehingga memungkinkan PostgreSQL untuk menyimpan dan mengelola data awan titik secara efisien dan cepat. GanosBase PointCloud dapat bekerja dengan GanosBase Geometry untuk melakukan analisis spasial pada data awan titik.
Tipe data awan titik
Jenis data awan titik meliputi pcpoint dan pcpatch. Untuk tipe data pcpoint, setiap titik disimpan sebagai baris, dengan dimensi suatu titik didefinisikan dalam skema awan titik. Untuk tipe data pcpatch, sejumlah titik disimpan sebagai satu set. Data awan titik dari tipe data pcpatch mendukung kueri spasial dan dapat dikompresi untuk mengurangi penggunaan penyimpanan. Parameter kompresi dalam skema awan titik menentukan metode yang digunakan untuk mengompresi data awan titik.
Skema awan titik
Tabel pointcloud_formats menyimpan skema awan titik. Setiap skema mencakup dimensi atribut dari objek awan titik serta informasi tentang setiap dimensi, termasuk ukuran, tipe, nama, dan deskripsi.
Memulai
Aktifkan GanosBase PointCloud.
Create extension ganos_pointcloud with schema public cascade; Create extension ganos_pointcloud_geometry with schema public cascade;Masukkan skema awan titik.
INSERT INTO pointcloud_formats (pcid, srid, schema) VALUES (1, 4326, '<?xml version="1.0" encoding="UTF-8"?> <pc:PointCloudSchema xmlns:pc="http://example.org/schemas/PC/1.1" xmlns:xsi="http://www.example.org/2001/XMLSchema-instance"> <pc:dimension> <pc:position>1</pc:position> <pc:size>4</pc:size> <pc:description>Koordinat X sebagai bilangan bulat panjang. Anda harus menggunakan informasi skala dan offset dari header untuk menentukan nilai ganda.</pc:description> <pc:name>X</pc:name> <pc:interpretation>int32_t</pc:interpretation> <pc:scale>0.01</pc:scale> </pc:dimension> <pc:dimension> <pc:position>2</pc:position> <pc:size>4</pc:size> <pc:description>Koordinat Y sebagai bilangan bulat panjang. Anda harus menggunakan informasi skala dan offset dari header untuk menentukan nilai ganda.</pc:description> <pc:name>Y</pc:name> <pc:interpretation>int32_t</pc:interpretation> <pc:scale>0.01</pc:scale> </pc:dimension> <pc:dimension> <pc:position>3</pc:position> <pc:size>4</pc:size> <pc:description>Koordinat Z sebagai bilangan bulat panjang. Anda harus menggunakan informasi skala dan offset dari header untuk menentukan nilai ganda.</pc:description> <pc:name>Z</pc:name> <pc:interpretation>int32_t</pc:interpretation> <pc:scale>0.01</pc:scale> </pc:dimension> <pc:dimension> <pc:position>4</pc:position> <pc:size>2</pc:size> <pc:description>Nilai intensitas adalah representasi integer dari besaran pulsa kembali. Nilai ini opsional dan spesifik sistem. Namun, selalu harus disertakan jika tersedia.</pc:description> <pc:name>Intensity</pc:name> <pc:interpretation>uint16_t</pc:interpretation> <pc:scale>1</pc:scale> </pc:dimension> <pc:metadata> <Metadata name="compression">dimensional</Metadata> </pc:metadata> </pc:PointCloudSchema>');Buat tabel awan titik.
-- Gunakan tipe data pcpoint. CREATE TABLE points ( id SERIAL PRIMARY KEY, pt PCPOINT(1) ); -- Gunakan tipe data pcpatch. CREATE TABLE patches ( id SERIAL PRIMARY KEY, pa PCPATCH(1) );Masukkan data tipe pcpoint.
INSERT INTO points (pt) SELECT ST_MakePoint(1, ARRAY[x,y,z,intensity]) FROM ( SELECT -127+a/100.0 AS x, 45+a/100.0 AS y, 1.0*a AS z, a/10 AS intensity FROM generate_series(1,100) AS a ) AS values; SELECT ST_MakePoint(1, ARRAY[-127, 45, 124.0, 4.0]); ------------------------- 010100000064CEFFFF94110000703000000400 SELECT ST_AsText('010100000064CEFFFF94110000703000000400'::pcpoint); ------------------------- nullMasukkan data tipe pcpatch.
INSERT INTO patches (pa) SELECT ST_Patch(pt) FROM points GROUP BY id/10; SELECT ST_AsText(ST_MakePatch(1, ARRAY[-126.99,45.01,1,0, -126.98,45.02,2,0, -126.97,45.03,3,0])); ------------------------- {"pcid":1,"pts":[ [-126.99,45.01,1,0],[-126.98,45.02,2,0],[-126.97,45.03,3,0] ]}Hitung nilai rata-rata semua dimensi atribut dalam objek pcpatch.
SELECT ST_AsText(ST_PatchAvg(pa)) FROM patches WHERE id = 7; ------------------------- nullNonaktifkan GanosBase PointCloud.
Drop extension ganos_pointcloud_geometry; Drop extension ganos_pointcloud cascade;
Referensi
Untuk informasi lebih lanjut, lihat Referensi SQL awan titik.