全部产品
Search
文档中心

ApsaraDB RDS:Model awan titik

更新时间:Jun 25, 2025

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

    Drop extension ganos_pointcloud_geometry;
    Drop extension ganos_pointcloud cascade;

Referensi

Untuk informasi lebih lanjut, lihat Referensi SQL awan titik.