0% menganggap dokumen ini bermanfaat (0 suara)
2 tayangan4 halaman

Chapter 02 Lab

Dokumen ini adalah manual lab yang mengajarkan cara mendefinisikan tabel dengan aturan SRID, membandingkan hasil kalkulasi antara Geometry dan Geography, serta menggunakan fungsi proyeksi ST_Transform untuk mendapatkan ukuran yang akurat. Langkah-langkah mencakup pembuatan tabel, penyisipan data, perhitungan jarak, dan penanganan SRID yang tidak diketahui. Tujuan utama adalah untuk memastikan pemahaman yang kuat tentang tipe data spasial dalam PostGIS.

Diunggah oleh

rizqi ardiansyah
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
2 tayangan4 halaman

Chapter 02 Lab

Dokumen ini adalah manual lab yang mengajarkan cara mendefinisikan tabel dengan aturan SRID, membandingkan hasil kalkulasi antara Geometry dan Geography, serta menggunakan fungsi proyeksi ST_Transform untuk mendapatkan ukuran yang akurat. Langkah-langkah mencakup pembuatan tabel, penyisipan data, perhitungan jarak, dan penanganan SRID yang tidak diketahui. Tujuan utama adalah untuk memastikan pemahaman yang kuat tentang tipe data spasial dalam PostGIS.

Diunggah oleh

rizqi ardiansyah
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

chapter_02_lab.

md 2026-05-01

chapter_02_lab

LAB MANUAL - CHAPTER 2

Mastering SRID, Measurement, and Data Types


Lab Objective: Peserta mampu mendefinisikan tabel dengan aturan SRID yang ketat, memahami perbedaan
hasil kalkulasi antara Geometry dan Geography, serta mahir menggunakan fungsi proyeksi (ST_Transform)
untuk mendapatkan ukuran yang akurat.

Penting - Anti-Error Tip:

Selalu ingat kaidah standar OGC/PostGIS:

X = Longitude (Garis Bujur / Barat-Timur)

Y = Latitude (Garis Lintang / Utara-Selatan)

Koordinat Jakarta adalah -6.2 (Lat), 106.8 (Long). Maka di PostGIS ditulis: POINT(106.8 -6.2) ->
POINT(X Y).

Step 1: Membuat Tabel dengan SRID & Tipe Data yang Ketat

Kita akan membandingkan pendekatan Geometry biasa dengan Geography.

1. Jalankan script ini di DBeaver untuk membuat tabel pengiriman barang (Logistics):

SQL

CREATE TABLE delivery_points (


id SERIAL PRIMARY KEY,
location_name VARCHAR(50),
-- Kolom 1: Geometry standar (WGS 84 / Derajat)
geom_4326 GEOMETRY(Point, 4326),
-- Kolom 2: Geography (Otomatis WGS 84, Kalkulasi Meter)
geog_point GEOGRAPHY(Point, 4326)
);

Instructor Note: Penggunaan GEOMETRY(Point, 4326) adalah best practice untuk memblokir
masuknya tipe data Polygon atau SRID lain yang salah ke dalam kolom titik ini.

Step 2: Insert Data (Simulasi Jarak Jauh)

Kita akan memasukkan titik koordinat Jakarta dan Bandung.

Jakarta: Long 106.8228, Lat -6.1756

1/4
chapter_02_lab.md 2026-05-01

Bandung: Long 107.6191, Lat -6.9175

1. Jalankan perintah INSERT berikut (kita isi kedua kolom spasial dengan data yang sama):

SQL

INSERT INTO delivery_points (location_name, geom_4326, geog_point)


VALUES
('Gudang Jakarta', ST_GeomFromText('POINT(106.8228 -6.1756)', 4326),
ST_GeomFromText('POINT(106.8228 -6.1756)', 4326)),
('Cabang Bandung', ST_GeomFromText('POINT(107.6191 -6.9175)', 4326),
ST_GeomFromText('POINT(107.6191 -6.9175)', 4326));

Step 3: Perangkap Kalkulasi Jarak (Geometry vs Geography)

Sekarang, kita asumsikan manajer operasional bertanya: "Berapa jarak lurus dari Gudang Jakarta ke Cabang
Bandung?"

1. Mari kita hitung menggunakan kolom Geometry terlebih dahulu:

SQL

SELECT
a.location_name AS asal,
b.location_name AS tujuan,
ST_Distance(a.geom_4326, b.geom_4326) AS jarak_geometry
FROM delivery_points a, delivery_points b
WHERE [Link] = 1 AND [Link] = 2;

❌ Hasil/Output: Anda akan mendapat angka 1.08...


Tentu saja jarak Jakarta-Bandung bukan 1 meter atau 1 km. Angka 1.08 itu adalah satuan Derajat
Cartesian. Angka ini tidak berguna untuk business logic.

2. Sekarang mari kita hitung menggunakan kolom Geography:

SQL

SELECT
a.location_name AS asal,
b.location_name AS tujuan,
ST_Distance(a.geog_point, b.geog_point) AS jarak_geography_meter
FROM delivery_points a, delivery_points b
WHERE [Link] = 1 AND [Link] = 2;

✅ Hasil/Output: Anda akan mendapat angka 119854.76...

2/4
chapter_02_lab.md 2026-05-01

Karena tipe Geography otomatis memproyeksikan bumi bulat, hasilnya langsung akurat dalam satuan
Meter (~119 KM).

Step 4: Solusi Transformasi Proyeksi (ST_Transform)

Bagaimana jika arsitektur database kita terlanjur hanya memakai tipe Geometry(Point, 4326) tapi kita
butuh hasil ukuran dalam meter? Solusinya adalah proyeksi on-the-fly menggunakan ST_Transform.

Untuk area Jakarta/Jawa Barat, zona UTM yang akurat adalah UTM Zone 48S (EPSG: 32748).

1. Jalankan kalkulasi menggunakan ST_Transform:

SQL

SELECT
a.location_name AS asal,
b.location_name AS tujuan,
ST_Distance(
ST_Transform(a.geom_4326, 32748), -- Proyeksi Jakarta ke UTM 48S
ST_Transform(b.geom_4326, 32748) -- Proyeksi Bandung ke UTM 48S
) AS jarak_transform_meter
FROM delivery_points a, delivery_points b
WHERE [Link] = 1 AND [Link] = 2;

✅ Hasil/Output: Anda akan mendapat angka sekitar 119782.88... Meter. Angkanya sedikit berbeda
dengan Geography, namun ini sangat valid dan lebih cepat diproses oleh CPU.

Step 5: Fixing Unknown SRID (Troubleshooting)

Sering terjadi aplikasi backend menembak data tanpa menyebutkan SRID-nya (SRID = 0).

1. Buat data dummy tanpa SRID (SRID 0):

SQL

SELECT ST_GeomFromText('POINT(106.0 -6.0)') AS bad_geom;

2. Coba transform data tersebut (Pasti akan ERROR):

SQL

-- INI AKAN ERROR


SELECT ST_Transform(ST_GeomFromText('POINT(106.0 -6.0)'), 32748);

3/4
chapter_02_lab.md 2026-05-01

❌ Error Output: "Input geometry has unknown (0) SRID" (PostGIS tidak tahu titik awalnya WGS 84 atau
sistem lain).

3. Cara Fix (ST_SetSRID): Kita harus beri tahu PostGIS secara paksa bahwa data tersebut adalah 4326
sebelum di-transform.

SQL

-- INI CARA YANG BENAR


SELECT ST_Transform(
ST_SetSRID(ST_GeomFromText('POINT(106.0 -6.0)'), 4326),
32748
);

✅ Hasil: Query berhasil dieksekusi tanpa error.

[End of Lab 2]

4/4

Anda mungkin juga menyukai