• Tidak ada hasil yang ditemukan

DAFTAR PUSTAKA. 1. Bédard, Y. (1999), Visual Modelling Of Spatial Databases: Towards Spatial PVL and UML, GEOMATICA Vol. 53 No. 2.

N/A
N/A
Protected

Academic year: 2022

Membagikan "DAFTAR PUSTAKA. 1. Bédard, Y. (1999), Visual Modelling Of Spatial Databases: Towards Spatial PVL and UML, GEOMATICA Vol. 53 No. 2."

Copied!
50
0
0

Teks penuh

(1)

67

1. Bédard, Y. (1999), Visual Modelling Of Spatial Databases: Towards Spatial PVL and UML, GEOMATICA Vol. 53 No. 2.

2. Borges, K.A.V., Clodoveue A.D.Jr. and Alberto H.F.L. (2001), Integrity Constraints in Spatial Databases. Paper at http://delivery.acm.org/

10.1145/330000/320136/p1-borges.pdf.

3. Calkins, H.W. 2003, Entity-Relationship Modeling Of Spatial Data For

Geographic Information System, Paper at http://www.geo.unizh.ch/oai/spatialdb

4. Cyran, M. (2005), Oracle Database Concepts 10g Release 2 (10.2), Oracle Corporation, Redwood City-CA, USA.

5. Cockcroft, S. (1997), A Taxonomy of Spatial Data Integrity Constraints, Paper at http://divcom.otago.ac.nz:800/com/infosci.

6. Direktorat Jenderal Pajak (2000), KEP-533/PJ/2000 Tanggal 20 Desember 2000 tentang Petunjuk Pelaksanaan Pendaftaran, Pendataan dan Penilaian Objek dan Subjek Pajak Bumi dan Bangunan Dalam Rangka Pembentukan dan atau Pemeliharaan Basis Data Sistem Manajemen Informasi Objek Pajak (SISMIOP), Sekretariat Direktorat Jenderal Pajak, Jakarta.

7. de By, R.A. (2000), Principles of Geographic Information Systems, The International Institute for Aerospace Survey and Earth Science (ITC), Enschede, The Netherlands.

8. Escobar, F., G. Hunter, I. Bishop and A Zerger. 2006. Introduction to GIS, http://www.sli.unimelb.edu.au/gisweb

9. Elmasri, R., and Navathe, S. B. (2000), Fundamentals of Database System.

The Benjamin/Cummings Company, California,USA.

10. Fathansyah (2004), Sistem Basis Data. Informatika, Bandung.

11. Güting, R.H. (1994), An Introduction to Spatial Database Systems, VLDB Journal. 3(4), Oktober 1994.

12. Howe, D.R. (1991), Data Analysis for Database Design, Edward Arnold, London, UK.

13. Laudon, K.C. and Jane P.L. (2002), Management Information Systems, Prentice Hall, New Jersey, USA.

14. Laurini, R. and Derek T. (1993), Fundamental of Spatial Information

Systems, Academic Press, London, UK.

(2)

68

15. Lo, C. P. and A.K.W. Yeung (2002), Concepts and Techniques of Geographic Information Systems, Prentice Hall of India Private Limited, New Delhi, India.

16. Loney, K. (2004), Oracle Database 10g : The Complete Referenc. McGraw- Hill/Osborne, New York, USA.

17. Meadows, C. and Sushil J. (1995), Integrity in Multilevel Secure Database Management Systems, dalam Information Security: An Integrated Collection of Essays, IEEE Computer Society Press, Los Alamitos, CA USA.

18. Murray, C. (2005), Oracle Spatial User’s Guide and Reference, 10g Release 2(10.2), Oracle Corporation, Redwood City-CA, USA.

19. Nugroho, A. (2004), Konsep Pengembangan Sistem Basis Data, Informatika, Bandung.

20. Prahasta, E. (2002), Konsep-konsep Dasar Sistem Informasi Geografis.

Informatika, Bandung.

21. Rigaux, P., Michel S. and Agnes V. (2002), Spatial Databases With Application to GIS, Morgan Kaufman Publishers, San Francisco, USA

22. Santoso, B. (2005), Pengembangan Interoperabilitas Basis Data PBB dan BPN, Tesis Program Pasca Sarjana Universitas Gajah Mada, Yogyakarta.

23. Shekhar,S. and Sanjay C. (2003) Spatial Databases: A Tour, Prentice Hall.

New Jersey, USA.

24. Shiberschatz, A. et al. (2002), Database System Concepts, McGraw-Hill Co. New York, USA.

25. Sugiada, I.M. (2007), Peningkatan Keamanan Basis Data Spasial PBB Melalui Rancang Ulang Basis Data Spasial, Tesis Program Magister Teknik Geodesi dan Geomatika, FTSL-ITB, Bandung.

26. Waljiyanto (2000), Sistem Basis Data : Analisis dan Pemodelan Data. J & J Learning, Yogyakarta

27. Wikipedia (2007), Data Integrity, http://en.wikipedia.org

(3)

69 1. Daftar Entitas

No. Nama Entitas Atribut

1 Propinsi Kd_Prop, Lyr_Prop 2 Kota Kd_Kota , Lyr_Kota 3 Kecamatan Kd_Kec , Lyr_Kec 4 Kelurahan Kd_Kelurahan , Lyr_Kel 5 Blok Kd_Blok , Lyr_Blok

6 Bidang No_Urut , Kd_Jns_Op , Lyr_Bidang 7 Bangunan No_Bng , Lyr_Bng

8 Jalan Id_Jln , Nm_Jln, Lbr_Jln, Lyr_Jln

9 Sungai Id_ Sungai , Nm_ Sungai, Lbr_Sungai, Lyr_ Sungai 10 Simbol Id_ Simbol, Lyr_ Simbol

11 Zona_Proyeksi No_Zona , Nm_Zona 12 Pemakai_SIG NIP_Petugas

12 Wewenang_SIG KD_Wwg, Nm_Wwg

Keterangan: Atribut yang digarisbawahi merupakan kunci/key dari entitasnya

2. Daftar Atribut dan Batasannya

No Nama Tipe Data

Panjang Keberadaan Batasan Lainnya

1 Kd_Prop C (2) M -

2 Lyr_Prop Geometri M Bentuk geometri berupa polygon

3 Kd_Kota C (2) M -

4 Lyr_Kota Geometri M Bentuk geometri berupa polygon

5 Kd_Kec C (3) M -

6 Lyr_Kec Geometri M Bentuk geometri berupa polygon

7 Kd_Kel C (3) M -

8 Lyr_Kel Geometri M Bentuk geometri berupa polygon

9 Kd_Blok C (3) M -

10 Lyr_Blok Geometri M Bentuk geometri berupa polygon

11 No_Urut C (4) M -

12 Kd_Jns_Op C (1) M -

13 Lyr_Bidang Geometri M Bentuk geometri berupa polygon

14 No_Bng C (3) M -

15 Lyr_Bng Geometri M Bentuk geometri berupa polygon

16 Id_Jln N (5) M -

17 Lbr_Jln N 93) O -

16 Nm_Jln C (30) M -

19 Lyr_Jln Geometri M Bentuk geometri berupa polyline

20 Id_Sungai N (5) M -

(4)

70

No Nama Tipe Data

Panjang Keberadaan Batasan Lainnya

21 Nm_Sungai C (30) M -

22 Lbr_Sungai N (3) O -

23 Lyr_Sungai Geometri M Bentuk geometri berupa polyline

24 Kd_Simbol C (3) M -

25 Lyr_Simbol Geometri M Bentuk geometri berupa point

26 Nm_Zona C (30) M -

27 No_Zona C (5) M -

28 NIP_Petugas C (9) M -

29 Kd_Wwg C(2) M -

30 Nm_Wwg C (30) M -

Keterangan

 Tipe Data : C=Character, N=Number, D=Date, Geometri digunakan untuk data spasial

 Keberadaan : M=Mandatory, O=Optional

3. Daftar Relasi Entitas

No Entitas Nama

Relasi Keterangan

Ke-1 Ke-2

1 Propinsi Kota Memiliki

Data kota harus berada di dalam propinsi dimana kota tersebut berada baik data atribut (kode) maupun data spasialnya

2 Kota Kecamatan Memiliki

Data kecamatan harus berada di dalam kota dimana kecamatan tersebut berada baik data atribut (kode) maupun data spasialnya

3 Kecamatan Kelurahan Memiliki

Data kelurahan harus berada di dalam kecamatan dimana kelurahan tersebut berada baik data atribut (kode) maupun data spasialnya

4 Kelurahan Blok Memiliki

Data Blok harus berada di dalam kelurahan dimana blok tersebut berada baik data atribut maupun data spasialnya 5 Sungai Kelurahan Berada Pada Data spasial sungai harus berada pada

kelurahan dimana sungai tersebut berada 6 Jalan Kelurahan Berada Pada Data jalan sungai harus berada pada

kelurahan dimana jalan tersebut berada 7 Simbol Kelurahan Berada Pada Data spasial simbol harus berada pada

kelurahan dimana simbol tersebut berada 8 Blok Bidang Terdapat Data bidang harus berada di dalam blok

dimana bidang tersebut berada baik data atribut maupun data spasialnya

9 Bidang Bangunan Terdapat Data bangunan harus berada di dalam bidang dimana bangunan tersebut berada baik data atribut maupun data spasialnya

(5)

71

Daftar Tabel dan Deskripsi Attribut dibuat dengan tujuan untuk menjelaskan secara detail setiap attribut yang ada dalam tabel yang saling berhubungan dalam perancangan data model.

1. Daftar Tabel dan Deskripsi Kolom/Kolom a. Tabel PROPINSI

Tabel yang menyimpan data batas propinsi

No. Nama Kolom Type Key Null ? Deskripsi 1. KD_PROP Char(2) Kode Propinsi

2. LYR_PROP SDO_Geometry Data Geometri Wilayah Propinsi

b. Tabel KOTA

Tabel yang menyimpan data batas kabupaten/Kota

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_PROP Char(2) Kode Propinsi

2. KD_KOTA Char(2) Kode Kabupaten/Kota

3. LYR_KOTA SDO_Geometry Data Geometri Wilayah Kabupaten/Kota

c. Tabel KECAMATAN

Tabel yang menyimpan data batas kecamatan

No. Nama Kolom Tipe Key Null ? Deskripsi 1. KD_PROP Char(2) Kode Propinsi 2. KD_ KOTA Char(2) Kode Kabupaten/Kota 3. KD_KEC Char(3) Kode Kecamatan

4. LYR_KEC SDO_Geometry Data Geometri Wilayah Kecamatan

(6)

72

d. Tabel KELURAHAN

Tabel yang menyimpan data batas kelurahan

No. Nama Kolom Tipe Key Null ? Deskripsi 1. KD_PROP Char(2) Kode Propinsi 2. KD_ KOTA Char(2) Kode Kabupaten/Kota 3. KD_KEC Char(3) Kode Kecamatan 4. KD_KEL Char(3) Kode Kelurahan/desa

5. LYR_KEL SDO_Geometry Data Geometri Wilayah Kelurahan

e. Tabel BLOK

Tabel yang menyimpan data batas blok

No. Nama Kolom Tipe Key Null ? Deskripsi 1. KD_PROP Char(2) Kode Propinsi 2. KD_ KOTA Char(2) Kode Kabupaten/Kota 3. KD_KEC Char(3) Kode Kecamatan 4. KD_KEL Char(3) Kode Kelurahan/desa 5. KD_BLOK Char(3) Kode Blok

6. LYR_BLOK SDO_Geometry Data Geometri Area Blok

f. Tabel BIDANG

Tabel yang menyimpan data bidang

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_PROP Char(2) Kode Propinsi

2. KD_ KOTA Char(2) Kode Kabupaten/Kota

3. KD_KEC Char(3) Kode Kecamatan

4. KD_KEL Char(3) Kode Kelurahan/desa

5. KD_BLOK Char(3) Kode Blok

6. NO_URUT Char(4) Nomor Urut Objek Pajak 7. KD_JNS_OP Char(1) Kode Jenis Objek Pajak 8. NIP_PETUGAS Char(9) NIP Petugas Entri Data 9. TGL_ENTRI_BIDANG Date Tanggal Entri Data Bidang 10. LYR_BIDANG SDO_Geometry Data Geometri Bidang

(7)

g. Tabel BANGUNAN

Tabel yang menyimpan data bangunan

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_PROP Char(2) Kode Propinsi

2. KD_ KOTA Char(2) Kode Kabupaten/Kota

3. KD_KEC Char(3) Kode Kecamatan

4. KD_KEL Char(3) Kode Kelurahan/desa

5. KD_BLOK Char(3) Kode Blok

6. NO_URUT Char(4) Nomor Urut Objek Pajak 7. KD_JNS_OP Char(1) Kode Jenis Objek Pajak

8. NO_BNG Char(3) Nomor Urut Bangunan

9. NIP_PETUGAS Char(9) NIP Petugas Entri Data 10. TGL_ENTRI_BNG Date Tanggal Entri Data Bidang 11. LYR_BNG SDO_Geometry Data Geometri Bangunan

h. Tabel JALAN

Tabel yang menyimpan data jalan

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_PROP Char(2) Kode Propinsi

2. KD_ KOTA Char(2) Kode Kabupaten/Kota

3. KD_KEC Char(3) Kode Kecamatan

4. KD_KEL Char(3) Kode Kelurahan/desa 5. ID_JLN Number(5) Nomor Identitas Jalan

6. NM_JLN VarChar(30) Nama Jalan

7. LBR_JLN Numbe(3) Lebar Jalan

8. LYR_JLN SDO_Geometry Data Geometri Jalan

i. Tabel ZONA_PROYEKSI

Tabel yang menyimpan data sistem proyeksi UTM dengan datum WGS84 beserta zonanya untuk tiap kabupaten/kota

No. Nama Kolom Tipe Key Null ? Deskripsi 1. KD_PROP Char(2) Kode Propinsi 2. KD_ KOTA Char(2) Kode Kabupaten/Kota

3. NO_ZONA Char(5) Nomor Sistem Proyeksi dan Zona 4. KET_ZONA VarChar(50) Keterangan Sistem Proyeksi dan Zona

(8)

74

j. Tabel SUNGAI

Tabel yang menyimpan data sungai

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_PROP Char(2) Kode Propinsi

2. KD_ KOTA Char(2) Kode Kabupaten/Kota

3. KD_KEC Char(3) Kode Kecamatan

4. KD_KEL Char(3) Kode Kelurahan/desa

5. ID_SUNGAI Number(5) Nomor Identitas Sungai 6. NM_SUNGAI VarChar(30) Nama Sungai

7. LBR_SUNGAI Number(3) Lebar Sungai 8. LYR_ SUNGAI SDO_Geometry Data Geometri Sungai

k. Tabel SIMBOL

Tabel yang menyimpan data simbol

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_PROP Char(2) Kode Propinsi

2. KD_ KOTA Char(2) Kode Kabupaten/Kota

3. KD_KEC Char(3) Kode Kecamatan

4. KD_KEL Char(3) Kode Kelurahan/desa

5. ID_SIMBOL Char(3) Nomor Identitas Simbol 5. KETERANGAN Varchar(50) Keterangan Mengenai Simbol 6. LYR_ SIMBOL SDO_Geometry Data Geometri Simbol

l. Tabel PEMAKAI_SIG

Tabel yang menyimpan data pemakai SIG PBB

No. Nama Kolom Tipe Key Null ? Deskripsi 1. NIP_PETUGAS Char(9) NIP Petugas

2. KD_ WWNG Char(2) Kode Wewenang

m. Tabel WEWENANG_SIG

Tabel yang menyimpan data wewenang pemakai SIG PBB

No. Nama Kolom Tipe Key Null ? Deskripsi

1. KD_ WWNG Char(9) Kode Wewenang

2. NM_ WWNG Char(2) Nama Wewenang

(9)

2. Daftar Hubungan Referensi (Foreign Key)

No Nama Tabel Induk Tabel Anak Kolom

1 PROP_KOTA Propinsi Kota - Kd_Prop

2 KOTA_KEC Kota Kecamatan - Kd_Prop

- Kd_Kota

3 KEC_KEL Kecamatan Kelurahan - Kd_Prop

- Kd_Kota - Kd_Kec

4 KEL_BLOK Kelurahan Blok - Kd_Prop

- Kd_Kota - Kd_Kec - Kd_Kel

5 BLOK_BIDANG Blok Bidang - Kd_Prop

- Kd_Kota - Kd_Kec - Kd_Kel - Kd_Blok

6 BIDANG_BNG Bidang Bangunan - Kd_Prop

- Kd_Kota - Kd_Kec - Kd_Kel - Kd_Blok - No_Urut - Kd_Jns_Op

7 KEL_JLN Kelurahan Jalan - Kd_Prop

- Kd_Kota - Kd_Kec - Kd_Kel

8 KEL_SUNGAI Kelurahan Sungai - Kd_Prop

- Kd_Kota - Kd_Kec - Kd_Kel 9 PEMAKAI_BIDANG Pemakai_SIG Bidang - NIP_Petugas 10 PEMAKAI_WWNG Wewenang_SIG Pemakai_SIG - Kd_Wwng 11 PEMAKAI_BNG Pemakai_SIG Bangunan - NIP_Petugas

12 SIMBOL_KEL Kelurahan Simbol - Kd_Prop

- Kd_Kota - Kd_Kec - Kd_Kel

(10)

76

LAMPIRAN C Tablespace

LAMPIRAN C.1 Daftar Tablespace Dan Penggunannya

No Nama Tablespace Objek

Jenis Nama

1 TS_DATSIG Tabel - BLOK

- JALAN - SIMBOL - SUNGAI 2 TSI_DATSIG Indek - BLOK_PK _IDX

- JALAN_PK_IDX - SIMBOL_PK_IDX - SUNGAI_PK_IDX - BLOK_ SPATIAL _IDX - JALAN_ SPATIAL _IDX - SIMBOL_ SPATIAL _IDX - SUNGAI_ SPATIAL _IDX

3 TS_REFSIG Tabel - PROPINSI

- KOTAK - KECAMATAN - KELURAHAN - REFSIMBOL - PEMAKAI_SIG - ZONA_PROYEKSI - WEWENANG 4 TSI_REFSIG Indek - PROPINSI_PK_IDX

- KOTA_PK_IDX

- KECAMATAN_PK_IDX - KELURAHAN_PK_IDX - REFSIMBOL_PK_IDX - PEMAKAI_SIG_PK_IDX - ZONA_PROYEKSI_PK_IDX - WEWENANG_PK_IDX - PROPINSI_SPATIAL_IDX - KOTA_ SPATIAL _IDX

- KECAMATAN_ SPATIAL _IDX - KELURAHAN_ SPATIAL _IDX

5 TS_BANGUNAN Tabel - BANGUNAN

6 TSI_BANGUNAN Indek - BANGUNAN_PK_IDX - BANGUNAN_ SPATIAL _IDX

7 TS_BIDANG Tabel - BIDANG

8 TSI_BIDANG Indek - BIDANG_PK_IDX - BIDANG_ SPATIAL _IDX

(11)

LAMPIRAN C. 2 Skrip Pembuatan Tablespace

-- Pembuatan tablespace TS_DATSIG

drop tablespace TS_DATSIG including contents cascade constraints;

create tablespace TS_DATSIG

datafile 'D:\ORACLE\ORADATA\SISMIOP\TS_DATSIG_01.ORA' size 10 reuse autoextend on next 1 maxsize UNLIMITED;

-- Pembuatan tablespace TSI_DATSIG

drop tablespace TSI_DATSIG including contents cascade constraints;

create tablespace TSI_DATSIG

datafile 'D:\ORACLE\ORADATA\SISMIOP\TSI_DATSIG_01.ORA' size 10 reuse autoextend on next 2 maxsize UNLIMITED;

-- Pembuatan tablespace TS_REFSIG

drop tablespace TS_REFSIG including contents cascade constraints;

create tablespace TS_REFSIG

datafile 'D:\ORACLE\ORADATA\SISMIOP\TS_REFSIG_01.ORA' size 10 reuse autoextend on next 1 maxsize UNLIMITED;

-- Pembuatan tablespace TSI_REFSIG

drop tablespace TSI_REFSIG including contents cascade constraints;

create tablespace TSI_REFSIG

datafile 'D:\ORACLE\ORADATA\SISMIOP\TSI_REFSIG_01.ORA' size 10 reuse autoextend on next 1 maxsize UNLIMITED;

-- Pembuatan tablespace TS_BIDANG

drop tablespace TS_BIDANG including contents cascade constraints;

create tablespace TS_BIDANG

datafile 'D:\ORACLE\ORADATA\SISMIOP\TS_BIDANG_01.0RA' size 50 reuse autoextend on next 5 maxsize UNLIMITED;

-- Pembuatan tablespace TSI_BIDANG

drop tablespace TSI_BIDANG including contents cascade constraints;

create tablespace TSI_BIDANG

datafile 'D:\ORACLE\ORADATA\SISMIOP\TSI_BIDANG_01.ORA' size 50 reuse autoextend on next 5 maxsize UNLIMITED;

-- Pembuatan tablespace TS_BANGUNAN

drop tablespace TS_BANGUNAN including contents cascade constraints;

create tablespace TS_BANGUNAN

datafile 'D:\ORACLE\ORADATA\SISMIOP\TS_BANGUNAN_01.0RA' size 50 reuse autoextend on next 5 maxsize UNLIMITED;

-- Pembuatan tablespace TSI_BANGUNAN

drop tablespace TSI_BANGUNAN including contents cascade constraints;

create tablespace TSI_BANGUNAN

datafile 'D\ORACLE\ORADATA\SISMIOP\TSI_BANGUNAN_01.ORA', size 50 reuse autoextend on next 5 maxsize UNLIMITED;

(12)

78

LAMPIRAN D Beberapa Contoh Algoritma Trigger Data Spasial

1. Algoritma Pengecekan Representasi Objek Data Spasial

(13)

2. Algoritma Pengecekan Hubungan Spasial Objek Bidang dengan Objek Blok

(14)

80

3. Algoritma Pengecekan Hubungan Spasial Objek Bidang dengan Objek Jalan

(15)

4. Algoritma Pengecekan Hubungan Spasial antar Objek Bidang

(16)

82

LAMPIRAN E Skrip Pembuatan Basis Data

/*===================================================*/

/* DBMS name: ORACLE */

/* Created By: Sunaryo */

/* Created on: 04/01/2008 5:39:37 */

/*===================================================*/

/*===================================================*/

/* Table: PROPINSI /*===================================================*/

create table SIGPBB.PROPINSI ( KD_PROP CHAR(2) not null,

LYR_PROP MDSYS.SDO_Geometry not null, constraint PK_PROPINSI primary key (KD_PROP)) tablespace TS_REFSIG;

/*===================================================*/

/* Index: PROP_SPATIAL_IDX /*===================================================*/

create index SIGPBB.PROP_SPATIAL_IDX on SIGPBB.PROPINSI (LYR_PROP) tablespace TSI_REFSIG

indextype is mdsys.spatial_index;

/*===================================================*/

/* Table: REF_SIMBOL /*===================================================*/

create table SIGPBB.REF_SIMBOL ( KD_SIMBOL CHAR(2) not null, NM_SIMBOL VARCHAR2(30),

GAMBAR_SIMBOL BLOB,

constraint PK_REF_SIMBOL primary key (KD_SIMBOL)) tablespace TS_REFSIG;

/*===================================================*/

/* Table: WEWENANG_SIG

/*===================================================*/

create table SIGPBB.WEWENANG_SIG ( KD_WWNG CHAR(2) not null, NM_WWNG VARCHAR2(30),

constraint PK_WEWENANG_SIG primary key (KD_WWNG)) tablespace TS_REFSIG;

/*===================================================*/

/* Table: ZONA_PROYEKSI /*===================================================*/

create table SIGPBB.ZONA_PROYEKSI ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_ZONA NUMBER(5) not null, KET_ZONA VARCHAR(200),

constraint PK_ZONA_PROYEKSI primary key (KD_PROP, KD_KOTA, KD_ZONA))

tablespace TS_REFSIG;

(17)

/*===================================================*/

/* Table: KOTA

/*===================================================*/

create table SIGPBB.KOTA ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null,

LYR_KOTA MDSYS.SDO_Geometry not null,

constraint PK_KOTA primary key (KD_PROP, KD_KOTA), constraint FK_KOTA_PROP foreign key (KD_PROP) references SIGPBB.PROPINSI (KD_PROP)) tablespace TS_REFSIG;

/*===============================================*/

/* Index: KOTA_SPATIAL_IDX /*===============================================*/

create index SIGPBB.KOTA_SPATIAL_IDX on SIGPBB.KOTA (LYR_KOTA)tablespace TSI_REFSIG

indextype is mdsys.spatial_index;

/*===================================================*/

/* Table: PEMAKAI_SIG

/*===================================================*/

create table SIGPBB.PEMAKAI_SIG ( NIP_PETUGAS CHAR(9) not null, KD_WWNG CHAR(2) not null,

constraint PK_PEMAKAI_SIG primary key (NIP_PETUGAS), constraint FK_PEMAKAI_WWNG foreign key (KD_WWNG) references SIGPBB.WEWENANG_SIG (KD_WWNG)) tablespace TS_REFSIG;

/*===================================================*/

/* Index: PEMAKAI_WEWENANG_FK

/*===================================================*/

create index SIGPBB.PEMAKAI_WEWENANG_FK on SIGPBB.PEMAKAI_SIG (KD_WWNG ASC);

/*===================================================*/

/* Table: KECAMATAN

/*===================================================*/

create table SIGPBB.KECAMATAN ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null,

LYR_KEC MDSYS.SDO_Geometry not null,

constraint PK_KECAMATAN primary key (KD_PROP, KD_KOTA, KD_KEC), constraint FK_KEC_KOTA foreign key (KD_PROP, KD_KOTA)

references SIGPBB.KOTA (KD_PROP, KD_KOTA)) tablespace TS_REFSIG;

/*===================================================*/

/* Index: KEC_SPATIAL_IDX

/*===================================================*/

create index SIGPBB.KEC_SPATIAL_IDX on SIGPBB.KECAMATAN (LYR_KEC)tablespace TSI_REFSIG

indextype is mdsys.spatial_index;

(18)

84

/*=================================================*/

/* Table: KELURAHAN

/*=================================================*/

create table SIGPBB.KELURAHAN ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null,

TGL_ENTRI_KEL DATE default sysdate, LYR_KEL MDSYS.SDO_Geometry not null,

constraint PK_KELURAHAN primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL),

constraint FK_KEL_KEC foreign key (KD_PROP, KD_KOTA, KD_KEC) references SIGPBB.KECAMATAN (KD_PROP, KD_KOTA, KD_KEC)) tablespace TS_REFSIG;

/*================================================*/

/* Index: KEL_SPATIAL_IDX

/*================================================*/

create index SIGPBB.KEL_SPATIAL_IDX on SIGPBB.KELURAHAN (LYR_KEL)tablespace TSI_REFSIG

indextype is mdsys.spatial_index;

/*=================================================*/

/* Table: JALAN

/*=================================================*/

create table SIGPBB.JALAN (

KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null, ID_JLN NUMBER(5) not null, NM_JLN VARCHAR2(30),

LBR_JLN NUMBER(3),

LYR_JLN MDSYS.SDO_Geometry not null,

constraint PK_JALAN primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, ID_JLN),

constraint FK_JALAN_KEL foreign key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL)

references SIGPBB.KELURAHAN (KD_PROP, KD_KOTA, KD_KEC,KD_KEL)) tablespace TS_DATSIG;

/*==============================================*/

/* Index: JALAN_SPATIAL_IDX

/*==============================================*/

create index SIGPBB.JALAN_SPATIAL_IDX on SIGPBB.JALAN (LYR_JLN)tablespace TSI_DATSIG

indextype is MDSYS.SPATIAL_INDEX;

/*==================================================*/

/* Table: SIMBOL

/*==================================================*/

create table SIGPBB.SIMBOL ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null, ID_SIMBOL CHAR(3) not null, KD_SIMBOL CHAR(2) not null,

(19)

KETERANGAN VARCHAR2(50) not null,

LYR_SIMBOL MDSYS.SDO_Geometry not null,

constraint PK_SIMBOL primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, ID_SIMBOL),

constraint FK_SIMBOL_KEL foreign key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL)

references SIGPBB.KELURAHAN (KD_PROP, KD_KOTA, KD_KEC, KD_KEL), constraint FK_SIMBOL_REFSIMBOL foreign key (KD_SIMBOL)

references SIGPBB.REF_SIMBOL (KD_SIMBOL)) tablespace TS_DATSIG;

/*==================================================*/

/* Index: SIMBOL_SPATIAL_IDX

/*==================================================*/

create index SIGPBB.SIMBOL_SPATIAL_IDX on SIGPBB.SIMBOL (LYR_SIMBOL)tablespace TSI_DATSIG

indextype is mdsys.spatial_idx;

/*===================================================*/

/* Table: SUNGAI

/*===================================================*/

create table SIGPBB.SUNGAI ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null, ID_SUNGAI NUMBER(5) not null, NM_SUNGAI VARCHAR2(30),

LBR_SUNGAI NUMBER(3),

LYR_SUNGAI MDSYS.SDO_Geometry not null,

constraint PK_SUNGAI primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, ID_SUNGAI),

constraint FK_SUNGAI_KEL foreign key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL)

references SIGPBB.KELURAHAN (KD_PROP, KD_KOTA, KD_KEC, KD_KEL) on delete cascade)

tablespace TS_DATSIG;

/*===================================================*/

/* Index: SUNGAI_SPATIAL_IDX

/*===================================================*/

create index SIGPBB.SUNGAI_SPATIAL_IDX on SIGPBB.SUNGAI (LYR_SUNGAI)tablespace TSI_DATSIG

indextype is MDSYS.SPATIAL_INDEX;

/*===============================================*/

/* Table: BLOK

/*===============================================*/

create table SIGPBB.BLOK (

KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null, KD_BLOK CHAR(3) not null,

LYR_BLOK MDSYS.SDO_Geometry not null,

constraint PK_BLOK primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, KD_BLOK),

constraint FK_BLOK_KEL foreign key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL)

(20)

86

references SIGPBB.KELURAHAN (KD_PROP, KD_KOTA, KD_KEC, KD_KEL)) tablespace TSI_DATSIG;

/*===================================================*/

/* Index: BLOK_SPATIAL_IDX

/*===================================================*/

create index SIGPBB.BLOK_SPATIAL_IDX on SIGPBB.BLOK (LYR_BLOK)tablespace TSI_DATSIG

indextype is MDSYS.SPATIAL_INDEX;

/*=================================================*/

/* Table: BIDANG

/*==================================================*/

create table SIGPBB.BIDANG (

KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null, KD_BLOK CHAR(3) not null, NO_URUT CHAR(4) not null, KD_JNS_OP CHAR(1) not null, NIP_PETUGAS CHAR(9) not null,

TGL_ENTRI_BIDANG DATE default sysdate, LYR_BIDANG MDSYS.SDO_Geometry not null,

constraint PK_BIDANG primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, KD_BLOK, NO_URUT, KD_JNS_OP),

constraint FK_BIDANG_PEMAKAI foreign key (NIP_PETUGAS) references SIGPBB.PEMAKAI_SIG (NIP_PETUGAS),

constraint FK_BIDANG_BLOK foreign key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, KD_BLOK)

references SIGPBB.BLOK (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, KD_BLOK))

tablespace TS_BIDANG;

/*===================================================*/

/* Index: PEMAKAI_BIDANG_FK

/*===================================================*/

create index SIGPBB.PEMAKAI_BIDANG_FK on SIGPBB.BIDANG (NIP_PETUGAS ASC)tablespace TSI_BIDANG;

/*==================================================*/

/* Index: BDG_SPATIAL_IDX

/*==================================================*/

create index SIGPBB.BDG_SPATIAL_IDX on SIGPBB.BIDANG (LYR_BIDANG ASC) tablespace TSI_BIDANG

indextype is MDSYS.SPATIAL_INDEX;

/*===================================================*/

/* Table: BANGUNAN

/*===================================================*/

create table SIGPBB.BANGUNAN ( KD_PROP CHAR(2) not null, KD_KOTA CHAR(2) not null, KD_KEC CHAR(3) not null, KD_KEL CHAR(3) not null, KD_BLOK CHAR(3) not null, NO_URUT CHAR(4) not null, KD_JNS_OP CHAR(1) not null, NO_BNG CHAR(3) not null,

(21)

NIP_PETUGAS CHAR(9) not null,

TGL_ENTRI_BNG DATE default sysdate,

LYR_BNG MDSYS.SDO_Geometry not null,

constraint PK_BANGUNAN primary key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, KD_BLOK, NO_URUT, KD_JNS_OP, NO_BNG), constraint FK_BANGUNAN_PEMAKAI foreign key (NIP_PETUGAS) references SIGPBB.PEMAKAI_SIG (NIP_PETUGAS),

constraint FK_BANGUNAN_BIDANG foreign key (KD_PROP, KD_KOTA, KD_KEC, KD_KEL, KD_BLOK, NO_URUT, KD_JNS_OP) references SIGPBB.BIDANG (KD_PROP, KD_KOTA, KD_KEC, KD_KEL,

KD_BLOK, NO_URUT, KD_JNS_OP) on delete cascade)

tablespace ts_bangunan;

/*===============================================*/

/* Index: PEMAKAI_BNG_FK

/*===============================================*/

create index SIGPBB.PEMAKAI_BNG_FK on SIGPBB.BANGUNAN (NIP_PETUGAS ASC)tablespace TSI_BANGUNAN;

/*=================================================*/

/* Index: BNG_SPATIAL_IDX

/*=================================================*/

create index SIGPBB.BNG_SPATIAL_IDX on SIGPBB.BANGUNAN (LYR_BNG)tablespace TSI_BANGUNAN

indextype is MDSYS.SPATIAL_INDEX;

(22)

88

LAMPIRAN F Skrip Pembuatan Triggers

/* Trigger TIUBS_PROPINSI pada tabel propinsi dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER tiubs_propinsi BEFORE INSERT OR UPDATE

ON sigpbb.propinsi FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_id VARCHAR2 (5);

BEGIN

IF :NEW.kd_prop IS NOT NULL THEN

var_id := :NEW.kd_prop;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_prop, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri propinsi ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_KOTA pada tabel kota dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER tiubs_kota BEFORE INSERT OR UPDATE OF lyr_kota ON sigpbb.kota

FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

(23)

var_geo SDO_GEOMETRY;

var_relation VARCHAR2 (255);

var_id VARCHAR2 (10);

var_pro VARCHAR2 (10);

-- Deklarasi cursor data spasial tabel kecamatan CURSOR cek_lyr_prop (var_kd_prop VARCHAR) IS SELECT lyr_prop

FROM propinsi

WHERE kd_prop = var_kd_prop;

BEGIN

-- "Kota/kabupaten harus mempunyai hubungan INSIDE atau COVEREDBY dengan propinsi "

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL THEN

var_id := :NEW.kd_prop || :NEW.kd_kota;

var_pro := :NEW.kd_prop;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_kota, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri kota ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_kota);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah';

RAISE integrity_error;

END IF;

-- ==============================================

OPEN cek_lyr_prop (:NEW.kd_prop);

FETCH cek_lyr_prop INTO var_geo;

FOUND := cek_lyr_prop%FOUND;

CLOSE cek_lyr_prop;

-- Cek relasi spasial kota/kabupaten dengan propinsi

var_relation := sdo_geom.relate (:NEW.lyr_kota, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20002;

errmsg := 'Wilayah propinsi ' || var_pro || ' tidak ada. Tidak bisa insert atau update objek kota/kabupaten';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE') THEN

errno := -20003;

(24)

90

errmsg := 'Kota/kabupaten ' || var_id || ' tidak berada pada wilayah propinsi yang benar';

RAISE integrity_error;

END IF;

END IF;

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_KECAMATAN pada tabel kecamatan dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER tiubs_kecamatan BEFORE INSERT OR UPDATE OF lyr_kec ON sigpbb.kecamatan

FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

var_geo SDO_GEOMETRY;

var_relation VARCHAR2 (255);

var_id VARCHAR2 (20);

var_kt VARCHAR2 (20);

-- Deklarasi cursor data spasial tabel kecamatan

CURSOR cek_lyr_kota (var_kd_prop VARCHAR, var_kd_kota VARCHAR) IS SELECT lyr_kota

FROM kota

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota;

BEGIN

-- "Kecamatan harus mempunyai hubungan INSIDE atau COVEREDBY dengan kota/kabupaten "

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL

THEN

var_id := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec;

var_kt := :NEW.kd_prop || :NEW.kd_kota;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_kec, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri kecamatan ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

(25)

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_kec);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah';

RAISE integrity_error;

END IF;

-- ==============================================

OPEN cek_lyr_kota (:NEW.kd_prop, :NEW.kd_kota);

FETCH cek_lyr_kota INTO var_geo;

FOUND := cek_lyr_kota%FOUND;

CLOSE cek_lyr_kota;

-- Cek relasi spasial kecamatan dengan kota/kabupaten

var_relation := sdo_geom.relate (:NEW.lyr_kec, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20002;

errmsg := 'Wilayah kota '|| var_kt|| ' tidak ada. Tidak bisa insert atau update objek kecamatan';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE') THEN

errno := -20003;

errmsg := 'Objek kecamatan ' || var_id || ' tidak berada pada wilayah kota/kabupaten yang benar';

RAISE integrity_error;

END IF;

END IF;

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_KELURAHAN pada tabel kelurahan dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER sigpbb.tiubs_kelurahan BEFORE INSERT OR UPDATE OF lyr_kel

ON sigpbb.kelurahan FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

(26)

92

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

var_geo SDO_GEOMETRY;

var_relation VARCHAR2 (255);

var_id VARCHAR2 (25);

var_kec VARCHAR2 (25);

-- Deklarasi cursor data spasial tabel kecamatan CURSOR cek_lyr_kec (var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR) IS SELECT lyr_kec

FROM kecamatan

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec;

BEGIN

-- "Kelurahankecamatan harus mempunyai hubungan INSIDE atau COVEREDBY dengan kecamatan "

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL AND :NEW.kd_kel IS NOT NULL THEN

var_id := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec || :NEW.kd_kel;

var_kec := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_kel, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri kelurahan ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_kel);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah';

RAISE integrity_error;

END IF;

-- ==============================================

OPEN cek_lyr_kec (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec);

FETCH cek_lyr_kec INTO var_geo;

FOUND := cek_lyr_kec%FOUND;

CLOSE cek_lyr_kec;

-- Cek relasi spasial kelurahan dengan kecamatan

var_relation := sdo_geom.relate (:NEW.lyr_kel, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20002;

(27)

errmsg := 'Wilayah kecamatan '|| var_kec|| ' tidak ada. Tidak bisa insert/update objek kelurahan';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE') THEN

errno := -20003;

errmsg := 'Posisi objek kelurahan '|| var_id || ' tidak berada pada kecamatan yang benar';

RAISE integrity_error;

END IF;

END IF;

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_BLOK pada tabel blok dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER tiubs_blok BEFORE INSERT OR UPDATE OF lyr_blok ON sigpbb.blok

FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

var_geo SDO_GEOMETRY;

var_relation VARCHAR2 (255);

var_cek_geo VARCHAR2 (255);

var_id VARCHAR2 (25);

var_kel VARCHAR2 (25);

-- Deklarasi cursor data spasial tabel kelurahan

CURSOR cek_lyr_kel (var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR )

IS SELECT b.lyr_kel FROM kelurahan b

WHERE b.kd_prop = var_kd_prop AND b.kd_kota = var_kd_kota AND b.kd_kec = var_kd_kec AND b.kd_kel = var_kd_kel;

BEGIN

-- "Blok harus mempunyai hubungan INSIDE atau COVEREDBY dengan Kelurahan"

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL AND :NEW.kd_kel IS NOT NULL AND :NEW.kd_blok IS NOT NULL

THEN

(28)

94

var_id := :NEW.kd_prop|| :NEW.kd_kota|| :NEW.kd_kec ||:NEW.kd_kel||

:NEW.kd_blok;

var_kel := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec || :NEW.kd_kel;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_blok, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri blok ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_blok);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah ';

RAISE integrity_error;

END IF;

-- ==============================================

OPEN cek_lyr_kel (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec, :NEW.kd_kel);

FETCH cek_lyr_kel INTO var_geo;

FOUND := cek_lyr_kel%FOUND;

CLOSE cek_lyr_kel;

-- Cek relasi spasial blok dengan kelurahan

var_relation := sdo_geom.relate (:NEW.lyr_blok, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20002;

errmsg := 'Wilayah kelurahan ' || var_kel || ' tidak ada. Tidak bisa insert atau update objek blok';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE') THEN

errno := -20003;

errmsg := 'Blok ' || var_id || ' tidak berada pada wilayah kelurahan yang benar';

RAISE integrity_error;

END IF;

END IF;

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

(29)

/* Trigger TIUBS_BIDANG pada tabel bidang dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER sigpbb.tiubs_bidang BEFORE INSERT OR UPDATE

ON sigpbb.bidang FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

var_relation VARCHAR2 (255);

var_geo SDO_GEOMETRY;

var_cek NUMBER (1);

var_id VARCHAR2 (25);

var_blok VARCHAR2 (25);

-- Deklarasi cursor data spasial tabel blok

CURSOR cek_lyr_blok (var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR, var_kd_blok VARCHAR ) IS SELECT lyr_blok

FROM blok

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec AND kd_kel = var_kd_kel

AND kd_blok = var_kd_blok;

-- -- Deklarasi cursor data spasial tabel jalan

CURSOR cek_lyr_jln (var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR )

IS SELECT lyr_jln FROM jalan

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec AND kd_kel = var_kd_kel;

-- -- Deklarasi cursor data spasial tabel sungai CURSOR cek_lyr_sg (

var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR ) IS SELECT lyr_sungai

FROM sungai

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec AND kd_kel = var_kd_kel;

BEGIN

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL AND :NEW.kd_kel IS NOT NULL AND :NEW.kd_blok IS NOT NULL AND :NEW.no_urut IS NOT NULL AND :NEW.kd_jns_op IS NOT NULL

THEN

var_id := :NEW.kd_prop|| :NEW.kd_kota|| :NEW.kd_kec|| :NEW.kd_kel||

:NEW.kd_blok|| :NEW.no_urut|| :NEW.kd_jns_op;

var_blok := :NEW.kd_prop || :NEW.kd_kota|| :NEW.kd_kec|| :NEW.kd_kel||

:NEW.kd_blok;

(30)

96

- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_bidang, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri bidang ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_bidang);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat salah dan atau zonanya salah';

RAISE integrity_error;

END IF;

-- ==============================================

-- "Bidang harus mempunyai hubungan INSIDE atau COVEREDBY dengan Blok"

-- ====================================================

OPEN cek_lyr_blok (:NEW.kd_prop, :NEW.kd_kota,:NEW.kd_kec,:NEW.kd_kel, :NEW.kd_blok );

FETCH cek_lyr_blok INTO var_geo;

FOUND := cek_lyr_blok%FOUND;

CLOSE cek_lyr_blok;

-- Cek relasi spasial bidang dengan blok

var_relation := sdo_geom.relate (:NEW.lyr_bidang, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20003;

errmsg := 'Blok ' || var_blok || ' tidak ada. Tidak bisa update objek bidang';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE') THEN

errno := -20004;

errmsg := 'Bidang ' || var_id || ' tidak berada pada blok yang benar';

RAISE integrity_error;

END IF;

END IF;

-- ====================================================

-- "Bidang tidak boleh berpotongan/OVERLAP dengan Jalan"

-- ====================================================

OPEN cek_lyr_jln (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec, :NEW.kd_kel);

LOOP

FETCH cek_lyr_jln INTO var_geo;

EXIT WHEN cek_lyr_jln%NOTFOUND;

var_relation := sdo_geom.relate (:NEW.lyr_bidang, 'determine', var_geo, 0.005);

(31)

IF var_relation LIKE 'OVERLAP%' THEN

errno := -20004;

errmsg := 'Bidang '|| var_id ||' tidak boleh berpotongan/overlap dengan Jalan';

RAISE integrity_error;

END IF;

END LOOP;

CLOSE cek_lyr_jln;

-- =================================================

-- "Bidang tidak boleh berpotongan/OVERLAP dengan Sungai"

-- ====================================================

OPEN cek_lyr_sg (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec, :NEW.kd_kel);

LOOP

FETCH cek_lyr_sg INTO var_geo;

EXIT WHEN cek_lyr_sg%NOTFOUND;

var_relation := sdo_geom.relate (:NEW.lyr_bidang, 'determine', var_geo, 0.005);

IF var_relation LIKE 'OVERLAP%' THEN

errno := -20004;

errmsg := 'Bidang '||var_id||' tidak boleh berpotongan/overlap dengan Sungai';

RAISE integrity_error;

END IF;

END LOOP;

CLOSE cek_lyr_sg;

-- =====================================================

-- "Cek relasi bidang dengan bidang (jika 0 ok, 1 ada yg overlap)"

-- ===================================================

var_cek := cek_rel_antar_bidang (:NEW.kd_prop,:NEW.kd_kota,:NEW.kd_kec, :NEW.kd_kel,:NEW.kd_blok,:NEW.no_urut,:NEW.kd_jns_op, :NEW.lyr_bidang );

IF var_cek = 1 THEN

errno := -20005;

errmsg := 'Bidang '||var_id ||' tidak boleh berpotongan/OVERLAP dengan bidang lainnya';

RAISE integrity_error;

END IF;

-- ===================================================

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_BANGUNAN pada tabel bangunan dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER sigpbb.tiubs_bangunan BEFORE INSERT OR UPDATE OF lyr_bgn

ON sigpbb.bangunan

(32)

98

FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

var_relation VARCHAR2 (255);

var_cek_geo VARCHAR2 (255);

var_geo SDO_GEOMETRY;

var_id VARCHAR2 (25);

var_nop VARCHAR2 (25);

-- Deklarasi cursor data spasial tabel blok

CURSOR cek_lyr_bidang ( var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR, var_kd_blok VARCHAR, var_no_urut VARCHAR, var_kd_jns_op VARCHAR )

IS SELECT lyr_bidang FROM bidang

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec AND kd_kel = var_kd_kel AND kd_blok = var_kd_blok AND no_urut = var_no_urut AND kd_jns_op = var_kd_jns_op;

BEGIN

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL AND :NEW.kd_kel IS NOT NULL AND :NEW.kd_blok IS NOT NULL AND :NEW.no_urut IS NOT NULL AND :NEW.kd_jns_op IS NOT NULL AND :NEW.no_bgn IS NOT NULL THEN

var_id := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec || :NEW.kd_kel ||

:NEW.kd_blok || :NEW.no_urut|| :NEW.kd_jns_op || :NEW.no_bgn;

var_nop :=:NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec || :NEW.kd_kel ||

:NEW.kd_blok || :NEW.no_urut|| :NEW.kd_jns_op;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_bgn, 3);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri bangunan ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_bgn);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah';

RAISE integrity_error;

(33)

END IF;

-- ==============================================

-- "Bangunan harus mempunyai hubungan INSIDE, COVEREDBY atau EQUAL dengan Bidang"

-- ===================================================

OPEN cek_lyr_bidang (:NEW.kd_prop,:NEW.kd_kota,:NEW.kd_kec,:NEW.kd_kel, :NEW.kd_blok,:NEW.no_urut,:NEW.kd_jns_op);

FETCH cek_lyr_bidang INTO var_geo;

FOUND := cek_lyr_bidang%FOUND;

CLOSE cek_lyr_bidang;

-- Cek relasi spasial bangunan dengan bidang

var_relation := sdo_geom.relate (:NEW.lyr_bgn, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20003;

errmsg := 'Bidang ' || var_nop|| ' tidak ada. Tidak bisa insert/update objek bangunan';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE', 'EQUAL') THEN

errno := -20004;

errmsg := 'Objek bangunan ' ||var_id|| ' tidak berada pada bidang yang benar';

RAISE integrity_error;

END IF;

END IF;

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_JALAN pada tabel jalan dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER sigpbb.tiubs_jalan BEFORE INSERT OR UPDATE OF lyr_jln

ON sigpbb.jalan FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

var_cek_sk NUMBER (1);

var_geo SDO_GEOMETRY;

var_relation VARCHAR2 (255);

var_cek_geo VARCHAR2 (255);

var_id VARCHAR2 (50);

(34)

100

var_kel VARCHAR2 (25);

-- Deklarasi cursor data spasial tabel kelurahan

CURSOR cek_lyr_kel (var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR)

IS SELECT b.lyr_kel FROM kelurahan b

WHERE b.kd_prop = var_kd_prop AND b.kd_kota = var_kd_kota AND b.kd_kec = var_kd_kec AND b.kd_kel = var_kd_kel;

-- Deklarasi cursor data spasial tabel kelurahan

CURSOR cek_lyr_bidang (var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR )

IS SELECT lyr_bidang FROM bidang

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec AND kd_kel = var_kd_kel;

BEGIN

-- "JALAN harus mempunyai hubungan INSIDE atau COVEREDBY dengan Kelurahan"

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL AND :NEW.kd_kel IS NOT NULL AND :NEW.id_jalan IS NOT NULL

THEN

var_id := :NEW.nm_jalan;

var_kel := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec || :NEW.kd_kel;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_jln, 2);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri jalan ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_jln);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah';

RAISE integrity_error;

END IF;

-- ==============================================

OPEN cek_lyr_kel (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec, :NEW.kd_kel);

FETCH cek_lyr_kel INTO var_geo;

FOUND := cek_lyr_kel%FOUND;

CLOSE cek_lyr_kel;

(35)

-- Cek relasi spasial JALAN dengan kelurahan

var_relation := sdo_geom.relate (:NEW.lyr_jln, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

errno := -20002;

errmsg := 'Wilayah kelurahan '|| var_kel|| ' tidak ada. Tidak bisa insert/update objek jalan';

RAISE integrity_error;

ELSE

IF var_relation NOT IN ('COVEREDBY', 'INSIDE') THEN

errno := -20003;

errmsg := 'Jalan '|| var_id|| ' tidak berada pada area kelurahan yang benar';

RAISE integrity_error;

END IF;

END IF;

-- cek relasi dengan bidang

OPEN cek_lyr_bidang (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec, :NEW.kd_kel);

LOOP

FETCH cek_lyr_bidang INTO var_geo;

EXIT WHEN cek_lyr_bidang%NOTFOUND;

var_relation := sdo_geom.relate (:NEW.lyr_jln, 'determine', var_geo, 0.005);

IF var_relation LIKE 'OVERLAP%' THEN

errno := -20004;

errmsg := 'Jalan ' || var_id || ' tidak boleh memotong bidang';

RAISE integrity_error;

END IF;

END LOOP;

CLOSE cek_lyr_bidang;

END IF;

-- Errors handling EXCEPTION

WHEN integrity_error THEN

raise_application_error (errno, errmsg);

END;

/

/* Trigger TIUBS_SUNGAI pada tabel sungai dijalankan saat insert atau update data */

CREATE OR REPLACE TRIGGER tiubs_sungai BEFORE INSERT OR UPDATE OF lyr_sungai ON sigpbb.sungai

FOR EACH ROW DECLARE

integrity_error EXCEPTION;

errno INTEGER;

errmsg CHAR (200);

dummy INTEGER;

FOUND BOOLEAN;

var_cek_geom NUMBER (1);

(36)

102

var_cek_sk NUMBER (1);

var_geo SDO_GEOMETRY;

var_relation VARCHAR2 (255);

var_cek_geo VARCHAR2 (255);

var_id VARCHAR2 (50);

var_kel VARCHAR2 (25);

-- Deklarasi cursor data spasial tabel kelurahan CURSOR cek_lyr_kel (

var_kd_prop VARCHAR, var_kd_kota VARCHAR, var_kd_kec VARCHAR, var_kd_kel VARCHAR ) IS SELECT lyr_kel

FROM kelurahan

WHERE kd_prop = var_kd_prop AND kd_kota = var_kd_kota AND kd_kec = var_kd_kec AND kd_kel = var_kd_kel;

BEGIN

-- "SUNGAI harus mempunyai hubungan INSIDE atau COVEREDBY dengan Kelurahan"

IF :NEW.kd_prop IS NOT NULL AND :NEW.kd_kota IS NOT NULL AND :NEW.kd_kec IS NOT NULL AND :NEW.kd_kel IS NOT NULL AND :NEW.id_sungai IS NOT NULL

THEN

var_id := :NEW.nm_sungai;

var_kel := :NEW.kd_prop || :NEW.kd_kota || :NEW.kd_kec || :NEW.kd_kel;

-- Cek bentuk geometri

-- ==============================================

var_cek_geom := cek_geometri (:NEW.lyr_sungai, 2);

IF var_cek_geom = 0 THEN

errno := -20003;

errmsg := 'Bentuk geometri sungai ' || var_id || ' tidak valid';

RAISE integrity_error;

END IF;

-- ==============================================

-- Cek sistem koordinat

-- ==============================================

var_cek_sk := cek_sis_koor (:NEW.kd_prop, :NEW.kd_kota, :NEW.lyr_sungai);

IF var_cek_sk = 0 THEN

errno := -20003;

errmsg := 'Sistem koordinat dan atau zonanya salah';

RAISE integrity_error;

END IF;

-- ==============================================

OPEN cek_lyr_kel (:NEW.kd_prop, :NEW.kd_kota, :NEW.kd_kec, :NEW.kd_kel);

FETCH cek_lyr_kel INTO var_geo;

FOUND := cek_lyr_kel%FOUND;

CLOSE cek_lyr_kel;

-- Cek relasi spasial sungai dengan kelurahan

var_relation := sdo_geom.relate (:NEW.lyr_sungai, 'determine', var_geo, 0.005);

IF NOT FOUND THEN

Gambar

Tabel yang menyimpan data batas kecamatan
Tabel yang menyimpan data bidang
Tabel yang menyimpan data sistem proyeksi UTM dengan datum WGS84  beserta zonanya untuk tiap kabupaten/kota
Tabel yang menyimpan data sungai

Referensi

Dokumen terkait

Hasil analisis kualitatif mendukung hasil kuantitatif yang menunjukkan bahwa penyerapan anggaran terkait pengadaan barang/jasa dapat dipengaruhi pengetahuan peraturan dari

: Mak/2/III/2020 tentang KEPATUHAN TERHADAP KEBIJAKAN PEMERINTAH DALAM PE- NANGANAN PENYEBARAN VIRUS CORONA (COVID-19), Surat Majelis Pekerja Harian PGI No. Peneguhan Sidi

Tetapi telur yang telah diovulasikan tersebut tidak akan dikeluarkan karena sistem duktus Muller pada unggas betina berkembang secara unilateral sehingga tidak

Hasil uji validitas oleh para validator untuk LKPD berorientasi blended learning untuk melatihkan keterampilan berpendapat peserta didik kelas X SMA pada materi reaksi

Oleh karena itu dalam Tugas akhir ini akan dibuat versi pembaharuan sistem dimana pada versi sebelumnya robot hanya mengikuti pergerakan wajah (objek) dan

Tujuan penelitian ini adalah untuk mengetahui seberapa besar potensi antibiotik yang dihasilkan oleh isolat Actinomycetes dari material vulkanik Gunung Merapi

laporan kerja praktek pada Kantor Pelayanan Pajak Pratama Sumedang yaitu. dimulai dari bulan Juli 2010 sampai dengan bulan

Hasil penelitian menunjukkan bahwa pada Serat Babad Banyuurip Pupuh Maskumambang Karya Ki Amat Takjin terdapat beberapa penyimpangan frasa dan sintaksis yang sulit dibaca