Objek Geografis dan Tema (Recap)
Sebagaimana dibahas di Intro to Spatial Database, sebuah tema adalah kumpulan objek geografis: . Setiap objek geografis memiliki deskripsi (atribut alfanumerik) dan komponen spasial (geometri + topologi, disebut spatial object).
Theme Algebra (Aljabar Tema)
Aljabar tema menyediakan operasi-operasi dasar untuk memanipulasi tema, analog dengan aljabar relasional pada basis data konvensional.
1. Theme Projection
Memproyeksikan tema ke subset atribut deskriptif tertentu, sambil tetap mempertahankan atribut spasial (geo) tanpa berubah.
Contoh: menghasilkan tema baru yang hanya berisi atribut populasi (deskripsi objek dihapus selain populasi, tapi bentuk geometrinya tetap sama).
2. Theme Selection
Memilih objek pada tema yang memenuhi predikat pada atribut deskriptifnya.
Contoh: — hanya negara dengan populasi > 50 juta yang dipertahankan (baik deskripsi maupun geometrinya).
3. Theme Union
Menggabungkan dua tema dengan skema (atribut deskriptif dan atribut spasial) yang sama.
Menghasilkan tema berisi semua objek geografis dari dan .
4. Theme Overlay (Spatial Join)
Menghasilkan tema baru dari dua tema yang di-overlay-kan: geometri hasil dihitung dengan irisan (intersection) geometri objek-objek yang beririsan, sedangkan deskripsinya merupakan kombinasi dari atribut deskriptif kedua tema partisipan.
Contoh: overlay tema Countries dan Languages menghasilkan tema baru di mana tiap bagian negara diberi label bahasa yang dituturkan di area tersebut — ini adalah bentuk dari spatial join.
5. Geometric Selection
Tiga varian seleksi berbasis geometri:
- Windowing: pada tema dan window (biasanya persegi panjang), mengembalikan tema berisi objek-objek yang beririsan dengan (objek tidak dipotong, tetap utuh).
- Point query: pada tema dan titik , mengembalikan tema berisi objek-objek yang geometrinya mengandung .
- Clipping: pada tema dan area , mengembalikan bagian dari tema yang berada di dalam (objek yang memotong batas akan dipotong mengikuti batas — berbeda dengan windowing yang tidak memotong objek).
6. Merger
Melakukan union geometris dari bagian spasial sejumlah objek geografis yang berada pada tema yang sama, berdasarkan suatu kondisi yang diberikan pengguna. Bergantung pada konsep object aggregation (agregasi objek).
Contoh klasik: menggabungkan geometri “Former West Germany” dan “Former East Germany” menjadi satu objek “Germany”.
Abstraksi Model Data
Model data geografis dapat dipandang sebagai kombinasi dua lapis abstraksi:
Pada lapisan spatial data model, representasi kumpulan objek dapat berupa struktur spaghetti atau topological (lihat Physical Representation).
Studi Kasus: Model Data Geografis Indonesia
Tiga studi kasus disederhanakan (diadaptasi dari Rigaux et al., 2002), dimodelkan dengan Entity-Relationship Model (dapat juga menggunakan UML):
Kasus 1: Unit Administratif Indonesia
Sebuah province (mis. Jawa Barat) terdiri atas beberapa kabupaten, dan sebuah kabupaten terdiri atas beberapa kecamatan. Setiap unit memiliki ID, nama, dan bagian geometri; kecamatan tambahan memiliki atribut populasi.
Skema relasional (extended relational model):
Province = (prov_id, prov_name, geometry)
Kabupaten = (kab_id, kab_name, prov_id, geometry)
Kecamatan = (kec_ID, kec_name, population, kab_id, geometry)
FK: Kabupaten(prov_id) -> Province(prov_id)
FK: Kecamatan(kab_id) -> Kabupaten(kab_id)
Contoh query alfanumerik — jumlah penduduk kecamatan Soreang di kabupaten Bandung:
select population
from Kecamatan, Kabupaten
where Kecamatan.kab_id = Kabupaten.kab_id
and kab_name = 'Bandung'
and kec_name = 'Soreang'Contoh query spasial — kecamatan yang bertetangga dengan Soreang di kabupaten yang sama:
select kec1.kec_name
from Kecamatan kec1, Kecamatan kec2, Kabupaten kab
where kab.kab_id = kec1.kab_id
and kab.kab_id = kec2.kab_id
and kab.kab_name = 'Bandung'
and kec2.kec_name = 'Soreang'
and Meets(kec1.geometry, kec2.geometry)Contoh query interaktif — nama kecamatan yang ditunjuk pada layar (titik @point):
select kec_name
from Kecamatan
where PointInRegion(geometry, @point)Kasus 2: Jaringan Jalan Indonesia
Road memiliki nama dan tipe (jalan nasional/provinsi/tol). Sebuah road terdiri atas beberapa section, dan satu section bisa dipakai bersama oleh >1 road (relasi many-to-many). Setiap section menghubungkan dua city.
Road = (road_id, road_name, road_type)
Section = (section_id, section_name, number_lanes, city_start, city_end, geometry)
RoadSection = (road_id, section_id, section_number)
City = (city_id, city_name, population, geometry)
Contoh query spasial — panjang jalan “Purwakarta-Bandung”:
select sum(Length(s.geometry))
from Section s, RoadSection rs, Road r
where s.section_id = rs.section_id
and rs.road_id = r.road_id
and r.road_name = 'Purwakarta-Bandung'Kasus 3: Tata Guna Lahan (Land Use)
Setiap area dikaitkan dengan satu jenis penggunaan lahan (residensial, pertanian, hutan).
Land_Use = (Region_Name, Land_Use_Type, Geometry)
Contoh query gabungan dengan kasus 1 — menampilkan area residensial di kecamatan Soreang:
select Intersection(k.geometry, l.geometry)
from Land_Use l, Kecamatan k
where k.kec_name = 'Soreang'
and l.land_use_type = 'residential area'
and Overlaps(k.geometry, l.geometry)Spatial Data Types (Definisi Formal untuk Studi Kasus)
Pemilihan tipe data spasial bergantung pada kebutuhan aplikasi. Definisi yang dipakai pada studi kasus di atas:
- point (0-D): sebuah titik.
- polyline (1-D): daftar segmen garis yang terhubung berpasangan (segmen garis adalah bagian dari garis yang dibatasi dua titik). Batasan tambahan: satu titik ujung (endpoint) paling banyak dipakai bersama oleh dua segmen garis (sehingga tidak boleh bercabang).
- region (2-D): himpunan polygon yang tidak saling tumpang tindih (non-overlapping). Polygon dengan lubang (hole) tidak dipertimbangkan pada model sederhana ini.
Dengan definisi ini, ada bentuk-bentuk polyline yang tidak dapat direpresentasikan (mis. polyline kompleks yang bercabang), karena melanggar batasan struktur di atas.
Operasi Spatial ADT
Region ADT
| Operasi | Signature | Deskripsi |
|---|---|---|
PointInRegion | region × point → bool | Menguji apakah titik berada dalam region |
Overlaps | region × region → bool | Menguji apakah dua region beririsan |
OverlapsRect | region × rectangle → bool | Menguji apakah region beririsan dengan rectangle |
Clipping | region × rectangle → region | Menghitung irisan region dan rectangle (bisa kosong) |
Intersection | region × region → region | Mengembalikan irisan dua region (bisa kosong) |
Meets | region × region → bool | Menguji ketetanggaan (adjacency) dua region |
Area | region → real | Menghitung luas region |
RegionUnion | {region} → region | Union dari sekumpulan region |
Polyline ADT dan Point ADT
| Operasi | Signature | Deskripsi |
|---|---|---|
PointInLine | polyline × point → bool | Menguji apakah titik ada pada polyline |
Length | polyline → real | Panjang polyline |
OverlapsLR | polyline × region → bool | Menguji apakah polyline beririsan dengan region |
Distance | region × point → real | Jarak titik ke boundary region (0 jika titik ada di dalam region) |
Jenis-Jenis Operasi Spatial ADT (Klasifikasi Umum)
- Unary, hasil boolean: menguji properti objek tunggal, mis. apakah suatu objek konveks atau terhubung (connected).
- Unary, hasil skalar: menghitung panjang, luas, keliling objek.
- Unary, hasil spasial: transformasi topologis (rotasi, translasi, scaling, refleksi), transformasi dimensi (mis. boundary polygon 2-D → 1-D), ekstraksi objek (minimal bounding rectangle, centroid).
- N-ary, hasil spasial: mis. konstruksi Voronoi diagram, convex hull.
- Binary, hasil spasial: operasi himpunan — intersection, union, difference. Basis dari map overlay.
- Binary, hasil boolean (predikat spasial):
- Predikat topologis: invarian terhadap transformasi topologis, mis.
intersects,contains,adjacent,is enclosed by. Digunakan pada point query, range/region query, dan windowing query. - Predikat direksional: mis.
north of,above of. - Predikat metrik: mis. apakah jarak dua objek kurang dari nilai tertentu.
- Predikat topologis: invarian terhadap transformasi topologis, mis.
- Binary, hasil skalar: mis.
distanceantar dua objek spasial.
Hubungan Topologis Antarobjek Spasial
Basis dari predikat topologis adalah definisi formal boundary dan interior suatu objek spasial. Untuk objek spasial (himpunan titik):
- = interior dari , yaitu union dari semua open set di .
- = boundary dari , yaitu .
- = complement dari terhadap ruang embedding , yaitu semua titik di yang tidak ada di .
Untuk dua objek spasial dan , terdapat kombinasi kemungkinan hubungan antara boundary dan interior keduanya (, , , — masing-masing kosong/tidak kosong), namun secara geometris hanya 8 kombinasi yang mungkin terjadi (8 sisanya kontradiktif secara geometris).
Delapan hubungan topologis tersebut (dengan penamaan standar):
| Nama | ||||
|---|---|---|---|---|
| A disjoint B | ∅ | ∅ | ∅ | ∅ |
| A meets B | ≠∅ | ∅ | ∅ | ∅ |
| A equals B | ≠∅ | ≠∅ | ∅ | ∅ |
| A inside B | ∅ | ≠∅ | ≠∅ | ∅ |
| B covers A | ≠∅ | ≠∅ | ≠∅ | ∅ |
| B inside A | ∅ | ≠∅ | ∅ | ≠∅ |
| A covers B | ≠∅ | ≠∅ | ∅ | ≠∅ |
| A overlaps B | ≠∅ | ≠∅ | ≠∅ | ≠∅ |
Sumber
- P. Rigaux, M. Scholl, A. Voisard: “Spatial Databases With Application to GIS”, Chapter 1 & Chapter 3, Elsevier Science, 2002.
Flashcard
flashcards
Sebutkan enam operasi utama theme algebra :: Theme projection, theme selection, theme union, theme overlay (spatial join), geometric selection (windowing/point query/clipping), dan merger.
Apa perbedaan windowing dan clipping pada geometric selection? :: Windowing mengembalikan objek yang beririsan window tanpa memotongnya; clipping memotong objek mengikuti batas area yang diberikan.
Bagaimana geometri hasil dihitung pada theme overlay (spatial join)? :: Dengan menerapkan operasi intersection terhadap geometri objek-objek yang beririsan dari dua tema.
Apa syarat struktural pada definisi polyline pada studi kasus (agar tidak bercabang)? :: Satu titik ujung (endpoint) paling banyak dipakai bersama oleh dua segmen garis.
Apa itu interior () dan boundary () suatu objek spasial secara formal? :: Interior = union semua open set di A; boundary = A dikurangi interior-nya ().
Dari 16 kombinasi teoretis hubungan boundary/interior dua objek, berapa yang secara geometris mungkin? :: 8 kombinasi (disjoint, meets, equals, inside, covers, inside-oleh, covers-oleh, overlaps).
Predikat topologis mana yang dipakai untuk point query, dan berikan contohnya :: Predikat seperti contains/PointInRegion, mis. “siapa pemilik lahan yang mengandung titik yang diklik di layar?“.
Apa perbedaan predikat topologis dan predikat metrik? :: Predikat topologis invarian terhadap transformasi topologis (mis. intersects, adjacent); predikat metrik bergantung pada ukuran/jarak (mis. jarak dua objek < nilai tertentu).