All Products
Search
Document Center

ApsaraDB RDS:Model point cloud

Last Updated:Aug 27, 2026

Topik ini menjelaskan detail dan penggunaan data point cloud. Data point cloud terdiri atas titik-titik yang dihasilkan ketika pemindai 3D memindai suatu objek. Setiap titik berisi satu set koordinat 3D, dan beberapa titik mungkin juga menyertakan informasi RGB atau intensitas. Data point cloud mencakup koordinat spasial serta sejumlah besar titik yang disajikan dalam dimensi atribut kompleks.

Ikhtisar

GanosBase PointCloud adalah plug-in PostgreSQL yang menyediakan fitur seperti kompresi dan dekompresi data point cloud serta pengumpulan statistik atribut, sehingga PostgreSQL dapat menyimpan dan mengelola data point cloud secara efisien dan cepat. GanosBase PointCloud dapat diintegrasikan dengan GanosBase Geometry untuk melakukan analisis spasial pada data point cloud.

Tipe data point cloud

Tipe data point cloud mencakup pcpoint dan pcpatch. Pada tipe pcpoint, setiap titik disimpan sebagai satu baris, dengan dimensinya didefinisikan dalam skema point cloud. Pada tipe pcpatch, sejumlah titik disimpan sebagai satu set. Data point cloud bertipe pcpatch mendukung kueri spasial dan dapat dikompresi untuk mengurangi penggunaan penyimpanan. Metode kompresi ditentukan oleh parameter kompresi dalam skema point cloud.

Skema point cloud

Skema point cloud disimpan dalam tabel pointcloud_formats. Setiap skema berisi dimensi atribut objek point cloud beserta informasi terkait masing-masing dimensi, seperti 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 point cloud.

    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 double-nya.</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 double-nya.</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 double-nya.</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 merupakan representasi bilangan bulat dari
                        besarnya pantulan pulsa. Nilai ini bersifat opsional
                        dan spesifik sistem. Namun, nilai ini sebaiknya selalu
                        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 point cloud.

    -- 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 dengan 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);
    -------------------------
    null
  • Masukkan data dengan 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;
    -------------------------
    null
  • Nonaktifkan GanosBase PointCloud.

    Drop extension ganos_pointcloud_geometry;
    Drop extension ganos_pointcloud cascade;

Referensi

Untuk informasi lebih lanjut, lihat Referensi SQL point cloud.