All Products
Search
Document Center

ApsaraDB RDS:Konsep Dasar

Last Updated:Aug 21, 2026

Trajectory SQL adalah ekstensi GanosBase untuk ApsaraDB RDS for PostgreSQL yang memodelkan dan menjalankan kueri terhadap pergerakan objek melalui ruang dan waktu. Topik ini memperkenalkan tipe data inti dan konsep yang perlu Anda pahami sebelum menulis kueri spatio-temporal.

Objek Trajectory

Trajectory merepresentasikan catatan lengkap pergerakan suatu objek—meliputi lokasi objek tersebut, waktu keberadaannya di lokasi itu, serta kejadian apa pun yang terjadi pada setiap momen. Trajectory SQL menyusun catatan ini ke dalam komponen-komponen berikut:

Konsep Deskripsi
Trajectory Point Snapshot objek bergerak pada momen tertentu: lokasinya (dalam koordinat 2D atau 3D) ditambah sejumlah bidang atribut (misalnya kecepatan atau tingkat bahan bakar).
Trajectory Object Catatan lengkap berdimensi tinggi dari objek bergerak, yang menggabungkan waktu, ruang, atribut, dan event.
Trajectory Timeline Urutan stempel waktu yang tersusun dalam sebuah trajectory. Stempel waktu harus berurutan.
Trajectory Spatial Geometri spasial dari lintasan trajectory, biasanya direpresentasikan sebagai LineString.
Trajectory Leaf Lokasi spasial objek bergerak pada satu titik waktu tertentu — setara dengan lokasi satu Trajectory Point.
Trajectory Attributes Data atribut per titik yang direkam sepanjang trajectory, seperti kecepatan dan arah. Setiap atribut memiliki satu nilai per Trajectory Point.
Trajectory Attribute Field Kolom atribut bernama dalam trajectory (misalnya speed). Bidang ini memiliki jumlah nilai yang sama persis dengan jumlah Trajectory Point.
Trajectory Field Value Nilai dari Trajectory Attribute Field tertentu pada titik waktu tertentu.
Trajectory Events Event diskrit yang terjadi sepanjang trajectory — misalnya, pengisian bahan bakar, kerusakan kendaraan, atau event penguncian pintu pada rute kendaraan. Setiap event mencatat ID jenis event dan stempel waktu.

Contoh: Trajectory kendaraan pengiriman berisi Trajectory Point yang direkam secara berkala. Setiap Trajectory Point menyimpan koordinat GPS kendaraan (Trajectory Leaf), serta Trajectory Attribute Field seperti speed_kmh dan engine_temp yang mencatat pembacaan sensor pada setiap titik. Saat kendaraan berhenti untuk mengisi bahan bakar, kejadian tersebut direkam sebagai Trajectory Event.

Gambar berikut menunjukkan trajectory objek bergerak.

Objek BoxNDF

Komputasi spatio-temporal pada data trajectory mentah sangat mahal. Tipe data BoxNDF menyediakan pendekatan ringan berupa kotak pembatas multidimensi yang dapat mempercepat kueri dengan mempersempit ruang pencarian sebelum menerapkan operasi trajectory yang presisi.

Objek BoxNDF adalah kubus yang didefinisikan oleh nilai minimum dan maksimum pada hingga empat sumbu: x, y, z (ruang), dan t (waktu). Tidak semua sumbu wajib digunakan—BoxNDF dapat mencakup hanya x dan y, atau keempat sumbu sekaligus.

Gunakan BoxNDF untuk:

  • Menentukan wilayah kueri: Definisikan batas spasial dan temporal yang ingin Anda cari.

  • Mendekati trajectory atau geometri: Gunakan kotak pembatasnya sebagai pre-filter cepat sebelum menjalankan pemeriksaan irisan atau ketercakupan yang presisi.

Gambar berikut menunjukkan kotak pembatas objek yang bergerak sepanjang sumbu-x, sumbu-y, dan sumbu-t.

Example bounding box

Tipe data nilai waktu

PostgreSQL mendukung tiga tipe data terkait waktu. Pilih berdasarkan kasus penggunaan Anda:

Tipe Deskripsi Kapan digunakan
TIMESTAMP Titik waktu tanpa informasi zona waktu. Gunakan ini dalam modul trajectory GanosBase. Semua stempel waktu trajectory menggunakan TIMESTAMP.
TIMESTAMPTZ Titik waktu dengan informasi zona waktu. Gunakan ini ketika aplikasi Anda harus menangani data lintas beberapa zona waktu.
INTERVAL Durasi (misalnya 30 hari, 1 bulan). Gunakan ini untuk aritmetika tanggal—menambah atau mengurangi durasi dari nilai TIMESTAMP.
Modul trajectory GanosBase menyimpan dan menjalankan kueri stempel waktu menggunakan tipe TIMESTAMP.

Nilai TIMESTAMP menggunakan format YYYY-MM-DD HH:MM:SS, misalnya 2000-01-01 10:00:00.

Operasi Umum pada Nilai Waktu:

-- Buat nilai TIMESTAMP.
SELECT '2000-01-01 10:00:00'::timestamp;

-- Konversi stempel waktu UNIX ke TIMESTAMP. Memerlukan ekstensi ganos_trajectory.
SELECT ST_UnixEpochToTS(1649765331);

-- Konversi TIMESTAMP ke stempel waktu UNIX.
SELECT ST_TsToUnixEpoch('2022-04-12 12:08:51');

-- Tambahkan INTERVAL ke TIMESTAMP.
SELECT '2000-01-01 10:00:00'::timestamp + '30 day'::interval;

-- Kurangi INTERVAL dari TIMESTAMP.
SELECT '2000-01-01 10:00:00'::timestamp - '1 month'::interval;

Tipe geometri

GanosBase mendukung titik, garis, dan poligon dalam ruang 2D maupun 3D. Tipe geometri ini kompatibel dengan antarmuka PostGIS, dan modul trajectory mendukung komputasi spasial antara trajectory dan objek geometri.

Konstruksi geometri dasar

Contoh berikut menggunakan notasi Well-Known Text (WKT) untuk membuat objek geometri:

-- Buat titik di (2, 4).
SELECT 'POINT(2 4)'::geometry;

-- Buat garis melalui (2,4), (0,0), dan (5,3).
SELECT 'LINESTRING(2 4, 0 0, 5 3)';

-- Buat poligon segitiga dengan simpul di (3,3), (5,5), dan (2,2).
SELECT 'POLYGON(3 3, 5 5, 2 2, 3 3)';

-- Pendekatan lingkaran: pusat (0,1), jari-jari 3.
-- Untuk kueri jarak melingkar, gunakan ST_DistanceWithin alih-alih ST_Buffer.
SELECT ST_Buffer('POINT(0 1)', 3);

Koordinat dan sistem referensi spasial

Pilih pendekatan koordinat berdasarkan cakupan wilayah data Anda:

  • Koordinat Cartesian biasa (tanpa SRID): Gunakan ketika data Anda terbatas pada area kecil sehingga permukaannya dapat dianggap datar. Perhitungan jarak Euclidean cukup cepat dan akurat untuk data skala lokal.

  • Koordinat geografis dengan SRID 4326 (WGS84): Gunakan ketika data Anda menggunakan lintang dan bujur—misalnya, koordinat GPS yang mencakup wilayah luas. Dengan koordinat geografis, jarak Euclidean tidak relevan; gunakan perhitungan jarak berdasarkan permukaan Bumi.

-- Buat titik di bujur 2, lintang 4, menggunakan WGS84.
SELECT 'SRID=4326;POINT(2 4)'::geometry;

-- Buat garis dengan koordinat WGS84.
SELECT 'SRID=4326;LINESTRING(2 4, 0 0, 5 3)';

-- Buat poligon dengan koordinat WGS84.
SELECT 'SRID=4326;POLYGON(3 3, 5 5, 2 2, 3 3)';

-- Pendekatan lingkaran di (0,1) dengan jari-jari 3, lalu tetapkan SRID 4326.
SELECT ST_SetSRID(ST_Buffer('POINT(0 1)', 3), 4326);

Sistem koordinat terproyeksi

Koordinat geografis (lintang dan bujur) menyatakan posisi sebagai sudut, bukan jarak. Untuk mengukur jarak dalam meter, ubah ke sistem koordinat terproyeksi (PCS) menggunakan ST_Transform.

Dua proyeksi umum:

Proyeksi Kode EPSG Deskripsi Paling cocok untuk
Spherical Mercator EPSG:3857 Mengukur dalam satuan meter; banyak digunakan dalam layanan pemetaan web Aplikasi peta web umum
Gauss-Kruger EPSG:4479 Proyeksi berbasis meter yang lebih akurat untuk Tiongkok Perhitungan jarak berakurasi tinggi di Tiongkok
-- Konversi koordinat WGS84 ke Spherical Mercator (meter).
SELECT ST_Transform('SRID=4326;POINT(114 39)'::geometry, 3857);

-- Konversi koordinat WGS84 ke Gauss-Kruger (meter, akurat untuk Tiongkok).
SELECT ST_Transform('SRID=4326;POINT(114 39)'::geometry, 4479);