• Tidak ada hasil yang ditemukan

BAB 3 PERANCANGAN SISTEM

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 PERANCANGAN SISTEM"

Copied!
15
0
0

Teks penuh

(1)

BAB 3

PERANCANGAN SISTEM

Pada bab ini akan dibahas mengenai perancangan dan pembuatan aplikasi visualisasi 3D. Pada tujuan utamanya, sistem yang akan dibuat mengacu kepada pembuatan sebuah kerangka yang dapat digunakan, dikembangkan, dan dimodifikasi dengan mudah diwaktu yang akan datang, oleh karena itu dibutuhkan perancangan sistem yang benar – benar baik dan cermat agar tujuan utama tersebut dapat tercapai.

Sistem yang direncanakan adalah sistem yang mempunyai data sumber berupa file gambar grayscale yang digunakan sebagai peta ketinggian dan file shp serta file dbf yang digunakan untuk menyimpan data-data layer seperti area, obyek, label, dan lain-lain. Desain ini berbeda dengan desain yang diajukan pada proposal proyek akhir, dimana data ketinggian didapatkan melalui pendefinisian secara manual pada sebuah file shp.

Berikut dibawah ini adalah gambar desain sistem yang telah dibuat :

(2)

Berikut adalah penjelasan gambar 3.1: 3.1 Pembacaan Citra Grayscale

Dalam proyek akhir ini digunakan citra grayscale sebagai data sumber untuk peta ketinggian, berbeda dengan rencana yang dicantumkan pada proposal proyek akhir sebelumnya, dimana ketinggian wilayah didefinisikan pada sebuah file shp. Dalam pembacaan citra ini, yang dilakukan hanyalah mendapatkan salah satu nilai dari komponen R, G, atau B dalam sebuah pixel, untuk kemudian disimpan dan digunakan sebagaidata ketinggian pada sebuah elemen dalam matriks peta 3D. Proses pembacaan data ketinggian dapat dilihat pada gambar 3.2.

Gambar 3.2 Pembacaan Citra Grayscale Pada gambar

Gambar 3.3 Matriks Peta 3.2 Pembacaan File SHP

Untuk pembacaan file shp, perlu untuk mengetahui secara pasti struktur dari sebuah file shp, setelah itu melakukan pembacaan file byte

(3)

demi byte untuk mendapatkan semua data yang ada didalamnya. Data yang tersimpan dalam sebuah file shp adalah data berupa koordinat dari titik-titik penyusun sebuah bentuk geometri, sebagai contoh adalah bentuk polygon dan polyline. Berikut ini adalah struktur sebuah file shp untuk memudahkan ilustrasi dari sebuah struktur file shp, dapat dilihat pada gambar 3.3.

Gambar 3.4 Struktur File SHP

Berikut ini adalah potongan program untuk membaca header dan record sebuah file shp :

bb.order(ByteOrder.BIG_ENDIAN); FileCode = bb.getInt(0); FileLength = bb.getInt(24); bb.order(ByteOrder.LITTLE_ENDIAN); Version = bb.getInt(28); ShapeType = bb.getInt(32); BoundingXMin = bb.getDouble(36); BoundingYMin = bb.getDouble(44); BoundingXMax = bb.getDouble(52); BoundingYMax = bb.getDouble(60); BoundingZMin = bb.getDouble(68); BoundingZMax = bb.getDouble(76); BoundingMMin = bb.getDouble(84); BoundingMMax = bb.getDouble(92);

Gambar 3.5 Listing Program Pembaca Header SHP

Pada potongan program diatas, yang dilakukan adalah mengambil informasi header file shp. Pada header tersebut ada beberapa informasi antara lain informasi tentang bersi shp yang digunakan, koordinat bounding box yang dipakai, serta beberapa informasi lainnya.

switch(shapeTypeTemp) { case DataType.POINT: Double x = bb.getDouble(); Double y = bb.getDouble(); points.add(new Point(x, y, this.dbf.records.get(dataCount))); break; File Header

Record Header Record Data

.... ....

(4)

case DataType.POLY_LINE: getBoundingBoxData(); getNumPartsData(); getNumPointsData(); getPartsData(); getPointsData();

polyLines.add(new PolyLine(Box, numParts, numPoints, Parts, Points));

break;

Gambar 3.6 Listing Program Pembaca Informasi SHP

Berdasarkan gambar 3.3, pada potongan program diatas dilakukan pembacaan record file shp, dimana dilakukan pengecekan terhadap tipe bentuk yang sedang dibaca, hasilnya akan menentukan obyek apakah yang akan ditambahkan kedalam program, kemungkinannya antara lain adalah polygon, polyline, dan point.

3.3 Pembacaan File DBF

Untuk file dbf, informasi yang perlu diambil adalah attribut atau informasi tambahan dari masing-masing data yang terdapat pada file shp, untuk kemudian dipasangkan dengan data yang bersesuaian pada file shp. Untuk mempermudah ilustrasi, dapat dilihat pada gambar 3.4 dibawah ini :

Gambar 3.7 Struktur File DBF

Berikut ini adalah potongan program untuk membaca definisi kolom pada tabel file dbf :

byte[] nameBuffer = new byte[11]; sourceBuffer.get(nameBuffer);

this.fieldName = new String(nameBuffer); int limit = this.fieldName.indexOf(0x00); if(limit>1)

this.fieldName = this.fieldName.substring(0, Header

Column 1 Definition Column n Definition

Record 1 Column 1 Data Record 1 Column n Data Record m Column 1 Data Record m Column n Data

(5)

limit);

sourceBuffer.order(ByteOrder.LITTLE_ENDIAN); this.fieldType = sourceBuffer.getChar(); sourceBuffer.order(ByteOrder.BIG_ENDIAN); /* skip byte ke-12 s/d 15 (3 byte) */

sourceBuffer.position(sourceBuffer.position()+3); this.fieldLength = sourceBuffer.get() & 0xFF; this.decimalCount = sourceBuffer.get(); /* skip byte ke-18 dan 19 (2 byte) */

sourceBuffer.position(sourceBuffer.position()+2); this.workAreaID = sourceBuffer.get();

/* skip byte ke-21 dan 22 (2 byte) */

sourceBuffer.position(sourceBuffer.position()+2); this.flagForSetField = sourceBuffer.get();

Gambar 3.8 Listing Program Pembaca Definisi Kolom DBF (sambungan)

Pada potongan program diatas, yang dilakukan adalah mengambil informasi yang terkandung dalam sebuah file dbf, informasinya antara lain adalah mengenai nama field, tipe data field, dan panjang field.

Berikut ini adalah potongan program untuk membaca record dari file dbf :

this.fields = fields;

this.deletedFlag = sourceBuffer.get(); this.mainData = new String[fields.size()]; byte buffer[] = new byte[RecordLength-1]; sourceBuffer.get(buffer);

this.mainString = new String(buffer); this.mainData = new String[fields.size()]; int offset = 0;

for (int i = 0; i < this.mainData.length; i++){ this.mainData[i] = this.mainString.substring(offset,

offset + fields.get(i).fieldLength); offset += fields.get(i).fieldLength;

(6)

if(fields.get(i).fieldType==DBFField.TYPE_NUMERIC{ this.mainData[i] = this.mainData[i].trim(); } if(fields.get(i).fieldType==DBFField.TYPE_CHARACTER)

{this.mainData[i] =

StringUtils.trimRight(this.mainData[i]); } } Gambar 3.9 Listing Program Pembaca Data DBF

Mekanisme atau urutan penyimpanan record pada file dbf sama persis dengan urutan yang digunakan dalam penyimpanan shape pada file shp, oleh karena itu untuk memasangkan atrribut pada masing shape, perlu untuk mengetahui index dari masing-masing shape pada file shp.

Gambar 3.10 Relasi Antara Data SHP dan DBF 3.4 Layer Area

Layer ini adalah layer yang digunakan untuk menyimpan informasi mengenai area suatu wilayah dan atributnya, misalkan area kabupaten atau kecamatan. Tipe data dari file shp tyang digunakan pada layer ini adalah polygon. Layer ini mempunyai beberapa fitur antara lain animasi, kemampuan menampilkan attribut dari masing-masing area yang didefinisikan, serta merepresentasikan sebuah keadaan yang berkaitan dengan attribute bertipe numerik pada masing-masing area. Layer ini dirancang untuk bisa menentukan kolom attribut manakah yang ditampilkan, setiap pilihan berubah, maka layer ini akan memberikan animasi berupa naik turunnya masing-masing area yang mempunyai nilai attribut yang berbeda.

(7)

Gambar 3.11 Polygon

Gambar 3.12 Attribut File SHP 3.5 Layer Obyek

Layer obyek adalah layer yang dibuat untuk menampilkan obyek, seperti rumah, pohon, gedung, dan sebagainya. Layer ini menggunakan tipe data point yang didefinisikan pada file shp, untuk attribut yang digunakan, tidak ada perbedaan dengan attribut yang digunakan pada layer area,yaitu

(8)

attribut bertipe numerik atau string.

Gambar 3.13 Definisi Point Untuk Layer Obyek. 3.6 Layer Disaster

Layer disaster ini berbeda dengan 2 layer yang lain, karena data yang digunakan bukan hanya merupakan data yang didefinisikan pada sebuah file shp, tetapi merupakan data yang beraneka ragam, antara lain data hotspot pada kebakaran hutan, dan data wilayah air pada bencana banjir.

3.7 Mapping Koordinat

Setelah semua data berhasil diambil, yang kemudian dilakukan dalam proyek akhir ini adalah mengolah data-data tersebut agar bisa digunakan pada base-map yang berupa matriks ketinggian yang diperoleh dari sebuah gambar graysale. Pengolahan yang dilakukan cukup sederhana, hanya mengkonversi atau menyesuaikan nilainya (mapping) dengan ukuran matriks yang digunakan.

(9)

Gambar 3.14 Matriks Hasil Mapping

Nilai yang digunakan dalam pemetaan nilai kedalam matrix adalah nilai dari varibel bounding box yang didapat dari header file shp, dari nilai

bounding box tersebut, dapat diketahui nilai koordinat minimum pada

sumbu x dan y, serta nilai koordinat maksimum pada sumbu x dan y. Jadi, yang perlu dilakukan hanya melakukan mapping nilai-nilai koordinat tersebut kedalam matriks dengan resolusi yang telah ditentukan. Untuk menentukan ukuran matrix dalam proyek akhir ini, yang digunakan adalah data bounding box yang didapat dari header file shp, caranya adalah dengan mengalikan dengan sebuah bilangan agar didapatkan ukuran matriks yang sesuai untuk kemudian divisualisasikan. Berikut ini adalah contoh data bounding box dari file kalteng.shp :

Xmin : 110.72972106933594 Ymin : -3.5460453033443757 Xmax : 115.8460006706667 Ymax : 0.7943595275676686

Dari data tersebut, maka bisa diketahui ukuran peta yang digunakan, dengan mencari selisih antara nilai maksimum dengan nilai minimum : lebar = Xmax – Xmin = 5.116279601

tinggi = Ymax – Ymin = 4.340404831

Dengan mempertimbangkan kemampuan komputasi dari hardware yang dipakai pada proyek akhir ini, maka dipilih ukuran matrix dibawah 10.000 x 10.000, oleh karena itu pada proyek akhir ini dipilih bilangan 1000 untuk dikalikan dengan ukuran peta sebenarnya (satuan dalam latittude dan

(10)

longittude), sehingga peta yang dihasilkan mempunyai resolusi 5116x4340.

Gambar 3.15 Matriks Ukuran 5116x4340 3.8 Penggambaran Pada OpenGL

Dalam proyek akhir ini dipilih OpenGL sebagai library untuk pemrosesan visualisasi karena beberapa hal. Salah satu yang utama adalah ketersediaan binding oleh bahasa pemrograman JAVA (JOGL) yang digunakan dalam proyek akhir ini. Langkah-langkah yang dilakukan dalam melakukan penggambaran antara lain sebagai berikut :

3.8.1 Penggambaran Base Map

Dalam melakukan penggambaran base map, yang bisa dilakukan adalah mengatur resolusi dari map yang ditampilkan, caranya adalah dengan menentukan setiap berapa elemen matrix dilakukan penggambaran.

(11)

Gambar 3.16 Cara Penggambaran Base Map

(12)

3.8.2 Penggambaran Layer Data

Layer data didesain agar fleksibel dalam kemampuan menampilkan data GIS yang disimpan didalam sebuah file shp, oleh karena itu desainnya dibuat seperti berikut :

a. Area Layer

Gambar 3.18 Area Layer Data Base Layer

Area Layer

Disaster Layer Object Layer

(13)

Tipe data yang digunakan dalam definisi data area adalah tipe bentuk polygon, data yang dipakai dalam proyek akhir ini adalah data kecamatan dan kabupaten propinsi kalimantan tengah, yang meliputi 123 kecamatan dan 7 kabupaten. Visualisasi 3D pada layer ini menggunakan salah satu fitur yang ada pada opengl, yaitu tesselation, yang berfungsi untuk melakukan

triangularization pada bentuk yang sulit seperti yang digunakan pada

bentuk diatas. b. Object Layer

Gambar 3.19 Polygon Dan Point Didalamnya

Tipe data yang digunakan dalam pendefinisian obyek adalah tipe data Point, yang berisi koordinat latittude dan longittude dari sebuah Point. Layer ini digunakan untuk menyimpan lokasi sebuah obyek, misalkan rumah, pos pemantau bencana alam, dan lain-lain. Dalam proyek akhir ini data yang digunakan adalah data simulasi, yang digunakan untuk merepresentasikan lokasi dari titik-titik obyek

(14)

Pada proyek akhir ini, layer disaster ini digunakan untuk menyimpan definisi tentang berbagai macam bencana alam yang terjadi, antara lain banjir dan kebakaran hutan. Pendefinisiannya bukan melalui file shp, tetapi dihasilkan pada saat program berjalan, inputnya bisa berbeda tergantung dari macam bencana alamnya, misalkan untuk kasus kebakaran hutan, data definisinya didapat dari hasil pendeteksian hotspot.

Dalam penggambaran layer data (Area dan Obyek), langkah-langkahnya bisa dilihat pada gambar 3.15 :

Gambar 3.20 Skema Penggambaran Data File SHP

Selain hal-hal diatas, pada proyek akhir ini juga dirancang sebuah

shp viewer sederhana yang dapat menampilkan bentuk geometri yang telah

didapatkan oleh library shp yang telah dibuat. Pada shp viewer ini, disediakan fitur zoom-in, zoom-out, serta informasi mengenai koordinat latittude dan longittude.

File SHP Ekstraksi Data (Point, Polygon) Matriks Mapping

(15)

Gambar

Gambar 3.1 Desain sistem
Gambar 3.3 Matriks Peta  3.2  Pembacaan File SHP
Gambar 3.5 Listing Program Pembaca Header SHP
Gambar 3.6 Listing Program Pembaca Informasi SHP
+7

Referensi

Dokumen terkait

Grafik fungsi ini digambar dalam tata koordinat Cartesius yang menggunakan dua sumbu, yakni sumbu-X sebagai nilai sudut, dan sumbu-Y sebagai nilai fungsinya.. Namun untuk

Setelah kalian dapat menentukan koordinat suatu titik dan jarak titik tersebut terhadap sumbu-x dan sumbu-y dalam bidang koordinat , sekarang kalian akan mempelajari

Jurusan Teknik Elektro FT UMY.. Dalam sistem koordinat Kartesian, terdapat tiga sumbu koordinat yaitu sumbu x, y, dan z. Suatu titik koordinat A memenuhi pasangan

Model data vektor merupakan model data yang merupakan referensi dari suatu area.. atau lokasi yang dideskripsikan dengan sepasang koordinat sumbu x dan sumbu

Koordinat sistem dipilih pada titik tengah permukaan shell, untuk sumbu x sejajar sumbu silinder, sumbu y menurut garis singgung (tangensial) busur lingkaran dan sumbu z adalah

X adalah koordinat foto yang dikoreksi sepanjang sumbu x untuk titik a, y adalah koordinat foto yang dikoreksi sepanjang sumbu y untuk titik a, xc adalah jarak fiducial

Hasil interseksi perangkat lunak Australis mendefinisikan sumbu X dan sumbu Y yang berbeda dengan sistem koordinat lokal yang didefinisikan. Berdasarkan hasil

Misalkan A(x, y) adalah titik pada bidang koordinat Cartesius, sumbu-y adalah cermin, dan A'(x', y') adalah bayangan dari A terhadap sumbu-y maka jarak A ke sumbu-y sama dengan