• Tidak ada hasil yang ditemukan

3. DESAIN DAN IMPLEMENTASI PROGRAM

N/A
N/A
Protected

Academic year: 2022

Membagikan "3. DESAIN DAN IMPLEMENTASI PROGRAM"

Copied!
31
0
0

Teks penuh

(1)

30

Dalam perancangan dan pembuatan program dibutuhkan beberapa proses. Proses-proses tersebut bertujuan untuk membuat sebuah sistem dan mengimplementasikan ke dalam bahasa pemograman.

3.1. Desain Sistem

Karena perangkat lunak merupakan bagian dari sistem yang lebih besar maka pengembangannya dimulai dari pengumpulan semua kebutuhan-kebutuhan elemen-elemen sistem. Tahap ini sangat menekankan pada masalah pengumpulan kebutuhan pengguna pada tingkatan sistem dengan mendefinisikan konsep sistem beserta interface yang menghubungkannya dengan lingkungan sekitarnya. Hasil akhir dari tahap ini adalah spesifikasi sistem.

Kebutuhan dari program pemodelan tiga dimensi ini dapat dilihat pada input yang dibutuhkan pada sistem ini yaitu peta. Hasil yang diharapkan melalui sistem ini adalah suatu model tiga dimensi dari bagian peta tersebut.

Gambar 3.1. Bagan Sistem Secara Umum

(2)

Pada pembuatan sistem digunakan pendekatan sistem GIS dengan membuang beberapa atribut yang tidak terpakai dan merubah beberapa bagian pada sistem tersebut.

Gambar 3.2. Bagan Sistem Secara Rinci

Pada gambar 3.2 yang menggambarkan rancangan sistem secara detil dapat ditentukan domain-domain data, fungsi, proses, atau prosedur yang diperlukan beserta kinerjanya, dan interfacenya. Hasil akhirnya adalah spesifikasi kebutuhan perangkat lunak.

Data input dari rancangan sistem utama yang telah dibuat adalah sebagai berikut beserta dengan penjelasannya

(3)

a. Gambar Peta, gambaran yang dimaksud adalah peta itu sendiri dalam bentuk softcopy , yaitu suatu peta yang telah di scan dengan resolusi 360 dpi.

b. Judul Peta, yaitu identitas daerah yang tergambar pada peta, umumnya dituliskan nama daerah atau identitas yang paling menonjol. Judul peta dicantumkan pada bagian pojok kanan atas peta.

c. Nomor Peta, yaitu nomor registrasi peta. dicantumkan disisi kanan atas.

d. Skala Peta, yaitu perbandingan jarak di dunia nyata dengan yang ada pada peta. Skala peta dicantumkan pada bagian pojok kanan atas peta.

e. Tahun Peta, yaitu tahun dari pembuatan peta tersebut. Tahun peta dicantumkan pada bagian pojok kanan atas peta.

f. Deklinasi Peta, yaitu besarnya sudut penyimpangan antara utara grid (peta) dengan utara sebenarnya. deklinasi peta dicantumkan pada gambar di pojok kiri bawah peta.

g. Deklinasi Magnetik, yaitu besarnya sudut penyimpangan antara utara peta (grid) dengan utara magnetis. Deklinasi magnetis dicantumkan pada gambar di pojok kiri bawah peta.

h. Variasi Magnetis, yaitu besarnya variasi magnetis tiap tahunnya pada peta ini.

Variasi magnetis dicantumkan pada gambar di pojok kiri bawah peta.

i. Batasan Peta, yaitu batasan ini merupakan daerah dalam gambar (peta) yang akan dimodelkan kedalam bentuk tiga dimensi, daerah batasan ini berbentuk kotak. Variabel batasan ini terdiri atas batas kiri, batas atas, batas kanan, batas bawah,

j. Koordinat geografi, yaitu merupakan informasi koordinat geografi pada batas kiri dan informasi koordinat geografi pada batas atas.

k. Kontur Peta, yaitu atribut yang dibutuhkan mencakup koordinat X, Y, Z dari kontur. Kontur ini berbentuk poligon (face) yang terdiri dari kumpulan titik (vertex) yang memiliki koordinat X dan Y.

Pada data management and manipulation pada rancangan sistem diatas menggambarkan proses dari data (input) diterima untuk kemudian didigitalisasikan (processing) dan hasilnya disimpan (storage) kedalam file yang nantinya dapat pula diambil kembali (retrieval) untuk diproses kembali.

Kemudian selanjutnya file diambil kembali untuk digunakan dalam membuat

(4)

model objek tiga dimensi, model objek tiga dimensi yang berupa informasi digital inilah yang merupakan hasil akhir (output) dari rancangan sistem utama yang akan dibuat.

Pada rancangan sistem utama diatas terdiri atas dua bagian yang merupakan subsistem. Bagian pertama dinamakan subsistem digitalisasi dan bagian kedua dinamakan subsistem pemodelan. Dua subsistem tersebut nantinya akan menjadi dua program terpisah. Penjelasan dari kedua subsistem itu adalah sebagai berikut

3.1.1 Subsistem Digitalisasi

Subsistem ini merupakan bagian sistem yang menangani proses digitalisasi kontur-kontur pada peta inputan dan menghasilkan output berupa file digitalizer project bagian sistem yang menangani proses pemodelan kontur-kontur peta kedalam bentuk tiga dimensi. Input pada bagian ini adalah file digitalizer project dan digitalizer data dan output yang dihasilkan adalah model tiga dimensi.dan digitalizer data (*.dgd). File digitalizer project menyimpan informasi mengenai atribut-atribut peta yang diperlukan sedangkan file digitalizer data menyimpan informasi mengenai data kontur-kontur yang telah selesai didigitalisasi.

Seperti yang telah dijelaskan diatas bahwa subsistem ini mempunyai tujuan utama untuk mendigitalisasikan kontur-kontur pada peta. Proses yang terjadi adalah dari sebuah gambar peta yang telah di scan (softcopy), kontur- konturnya “diambil” dengan cara menelusuri garis kontur tersebut dan kemudian menyimpan titik-titik yang membentuk garis kontur ke dalam suatu file. File ini nantinya dapat dipanggil kembali untuk dapat dimodifikasi lagi, atau digunakan oleh subsistem pemodelan untuk mempresantasikan objek dalam bentuk tiga dimensi. Pada subsistem digitalisasi ini terdapat beberapa procedure untuk menangani proses-poses digitalisasi.

Pada subsistem digitalisasi ini terdapat beberapa menu yaitu

a. Menu File, dalam menu ini terdapat fungsi new, open, save, save as, close, dan exit. New befungsi untuk membuat suat proyek baru, sedangkan open berfungsi untuk memanggil proyek yang telah ada. Save befungsi untuk menyimpan proyek

(5)

yang sekarang sedang dibuka, sedangkan save as befungsi untuk menyimpan dengan nama proyek yang baru. Close befungsi untuk menutup proyek sekarang yang sedang dibuka, sedangkan exit befungsi untuk keluar dari aplikasi.

b. Menu Tools, dalam menu ini terdapat fungsi track dan coord. Track befungsi untuk melakukan tracking suatu garis kontur, sedangkan coord befungsi untuk mengetahui koordinat geografi suatu titik dalam gambar.

c. Menu About, dalam menu ini terdapat about yang fungsinya untuk menampilakan informasi pembuat aplikasi.

3.1.2 Subsistem Pemodelan

Subsistem ini merupakan bagian sistem yang menangani proses pemodelan kontur-kontur peta kedalam bentuk tiga dimensi. Input pada subsistem ini adalah file digitalizer project (*.dgp) dan digitalizer data (*.dgd) dan output yang dihasilkan adalah suatu objek tiga dimensi. Untuk menghasilkan objek tiga dimensi yang diinginkan diperlukan koordinat titik-titik yang menyusun garis kontur bersama ketinggiannya, informasi ini terdapat pada file yang dihasilkan subsistem digitalisasi.

Seluruh informasi pada file mengenai titik koordinatnya dan ketinggiannya akan disimpan sementara ke memory dalam bentuk simpul berantai (gambar 3.3), hal ini dimaksudkan untuk mempercepat proses penggambaran daripada harus selalu mengambilnya dari file.

Gambar 3.3. Rangkaian Simpul Induk dan Simpul Anak

(6)

Pada subsistem pemodelan ini terdapat beberapa menu yaitu

a. Menu File, dalam menu ini terdapat fungsi open dan exit. Open befungsi untuk membuka file proyek untuk membuat model objek tiga dimensi, sedangkan exit befungsi untuk keluar dari aplikasi.

b. Menu About, dalam menu ini terdapat about yang befungsi untuk menampilkan informasi tentang pembuat aplaikasi.

3.2 Implementasi Sistem

Implementasi sistem ini berisi tentang rancangan program beserta listing program secara garis besar.

3.3.1 Prosedur Utama pada Aplikasi Digitalizer

Pada rancangan sistem utama telah dijelaskan bahwa sistem utama tediri dari subsistem digitalisasi dan subsistem pemodelan, berikut ini adalah prosedur- prosedur utama yang terdapat dalam subsistem digitalisasi.

a. Prosedur Zooming(X,Y)

Prosedur ini berfungsi untuk memperbesar daerah tertentu pada gambar peta yang telah discan dengan argumen ‘x’ dan ‘y’ sebagai titik tengah daerah tersebut. Tujuannya adalah mempermudah dalam menentukan posisi batas- batas area, tracking, undo dan redo. Listing programnya adalah sebagai berikut.

procedure TMainForm.Zooming(X,Y: Integer);

var

Baris, Kolom, ZoomArea, Zooming : Byte;

XZoom, YZoom, XSource, YSource : Integer;

begin

{Zooming}

ZoomArea := 21; {Luas area asal yang diperbesar, piksel persegi}

Zooming := 10; {Perbesaran yang dilakukan, piksel persegi}

YSource:=Y-(ZoomArea div 2); {koor Y pojok kiri atas area yg dizoom}

YZoom:=0;

for Kolom := 1 to ZoomArea do begin XSource:=X-(ZoomArea div 2);

XZoom:=0;

for Baris := 1 to ZoomArea do begin

Zoom.Canvas.Brush.Color:=ColorToRGB(ImageLayer1.

Canvas.Pixels[XSource,YSource]);

Zoom.Canvas.FillRect(Rect(XZoom,YZoom,Xzoom +

(7)

Zooming - 1,YZoom+Zooming-1));

XZoom:=XZoom+Zooming;

XSource:=XSource+1;

end;

YZoom:=YZoom+Zooming;

YSource:=YSource+1;

end;

XZoom:=(((ZoomArea*Zooming) - Zooming) div 2) - 1;

Zoom.Canvas.Brush.Color:=clRed; {Beri kotak merah, ditengah}

Zoom.Canvas.FrameRect(Rect(XZoom,XZoom,Xzoom + Zooming + 1, Xzoom + Zooming + 1));

end;

b. Prosedur GetMode(X,Y)

Prosedur ini berfungsi untuk mendapatkan warna (dalam integer) dari piksel- piksel di sekeliling suatu koordinat (x,y) yang ditentukan, dan kemudian hasilnya disimpan kedalam suatu matrik satu dimensi. Proses yang terjadi dalam prosedur ini adalah memeriksa dan memasukan nilai integer warna pada pada sebuah matrik (dimensi satu), dimana martik[2] merupakan ‘atas’, matrik[4] merupakan ‘kiri’, matrik[5] berisi arah penelusuran, matrik[6]

merupakan ‘kanan’, marik[8] merupakan ‘bawah’. Apabila posisi-posisi tersebut melebihi daerah batas penelusuran yang telah ditentukan, yaitu batas kiri, batas atas, batas kanan, dan batas bawah maka nilai integer warna akan diisi nilai maksimum integer yaitu 2147483647, tetapi apabila jumlah langkah penelusuran yang telah dicapai melebihi 10 langkah maka pada matrik[5] diisi nilai 10 yang menandakan bahwa proses penelusuran telah selesai. Listing programnya adalah sebagai berikut.

procedure TMainForm.GetMode(X,Y: Integer; var MatrikTracking:

TMatrikTracking);

var

Tmp: integer;

begin

Tmp:=tStep.RecordCount;

if X-1<=(StrToInt(BatasKiri.Text)) then begin {kiri fail}

MatrikTracking[1]:=2147483647;

MatrikTracking[4]:=2147483647;

MatrikTracking[7]:=2147483647;

{jika langkah sudah lebih dari 10 maka, sudah ada kemungkinan finish}

if Tmp>10 then MatrikTracking[5]:=10;

end else begin

(8)

{kiri sukses}

MatrikTracking[4]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x-1,y]);

if Y-1>(StrToInt(BatasAtas.Text)) then {kiri atas sukses}

MatrikTracking[1]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x-1,y-1])

else begin {kiri atas gagal}

MatrikTracking[1]:=2147483647;

if Tmp>10 then MatrikTracking[5]:=10;

end;

if Y+1<(StrToInt(BatasBawah.Text)) then {kiri bawah suskses}

MatrikTracking[7]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x-1,y+1])

else begin{kiri bawah gagal}

MatrikTracking[7]:=2147483647;

if Tmp>10 then MatrikTracking[5]:=10;

end;

end;

if Y-1<=StrToInt(BatasAtas.Text) then begin {atas gagal}

MatrikTracking[2]:=2147483647;

if Tmp>10 then MatrikTracking[5]:=10;

end else begin {atas sukses}

MatrikTracking[2]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x,y-1]);

end;

if Y+1>=StrToInt(BatasBawah.Text) then begin {bawah gagal}

MatrikTracking[8]:=2147483647;

if Tmp>10 then MatrikTracking[5]:=10;

end else begin {bawah sukses}

MatrikTracking[8]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x,y+1]);

end;

if X+1>=StrToInt(BatasKanan.Text) then begin {Kanan gagal}

MatrikTracking[6]:=2147483647;

MatrikTracking[3]:=2147483647;

MatrikTracking[9]:=2147483647;

if Tmp>10 then MatrikTracking[5]:=10;

end else begin {Kanan suskses}

MatrikTracking[6]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x+1,y]);

if Y-1>StrToInt(BatasAtas.Text) then {kanan atas suskes}

MatrikTracking[3]:=ColorToRGB(ImageLayer1.Canvas.

(9)

Pixels[x+1,y-1])

else begin {kanan atas gagal}

MatrikTracking[3]:=2147483647;

if Tmp>10 then MatrikTracking[5]:=10;

end;

if Y+1<StrToInt(BatasBawah.Text) then {kanan bawah suskes}

MatrikTracking[9]:=ColorToRGB(ImageLayer1.Canvas.

Pixels[x+1,y+1])

else begin {kanan bawah gagal}

MatrikTracking[9]:=0;

if Tmp>10 then MatrikTracking[5]:=10;

end;

end;

end;

c. Prosedur Tracking (X,Y)

Prosedure ini berfungsi untuk mengevaluasi matrik yang berisi warna-warna piksel di sekitar koordinat (X,Y) yang telah ditentukan untuk menentukan arah langkah selanjutnya dari penelusuran. Pada proses penelusuran warna adalah sesuatu yang sangat berpengaruh, warna dapat direpresentasikan dengan dua cara yaitu melalui nilai integer suatu warna atau melalui intensitas penyusun warna tersebut (RGB). Garis kontur pada peta ditandai dengan warna coklat pada umumnya atau warna hitam pada daerah berbatu. Pada nilai integer warna juga berisi informasi komposisi penyusun suatu warna tetapi dalam bentuk bilangan heksadesimal, dua digit pertama mewakili warna biru, dua digit selanjutnya mewakili warna hijau, dan dua digit terakhir mewakili warna merah. Untuk menelusuri garis kontur secara optimal maka ada beberapa hal yang perlu diperhatikan antara lain :

• Pada setiap arah (atas, kiri, kanan, atau bawah) penelusuran yang akan dianalisa harus melalui beberapa rules yang ada, yang berfungsi agar proses penelusuran tidak berbalik ke arah semula. Pada setiap arah proses dua langkah didepannya untuk menghindari warna biru (warna untuk piksel yang telah dilalui oleh penelusuran). Untuk langkah yang paling awal dalam memulai proses penelusuran dimulai dari tengah (5), yang menyatakan belum ada langkah terakhir. Setelah proses penelusuran dijalankan matrik[5] akan selalu menyimpan langkah terakhir penelusuran, yang mana nantinya akan digunakan untuk proses penelusuran selanjutnya.

(10)

Gambar 3.4. Aturan Untuk Langkah Terakhir Atas

Pada gambar diatas menggambarkan aturan apabila langkah terakhir adalah ke atas (2) maka kemungkinan langkah selanjutnya yang dapat ditempuh adalah ke atas lagi, ke kiri , atau ke kanan. Untuk menghindari arah penelusuran agar tidak berputar kembali atau terjepit maka perlu dilakukan pemeriksaan, dimana apabila langkah selanjutnya adalah ke atas maka diperiksa apakah posisi 2.1 dan 2.2 berwarna biru, apabila berwarna biru maka langkah selanjutnya ke atas tidak dapat dimungkinkan sebaliknya apabila warna bukan biru maka langkah selanjutnya ke atas dapat dipertimbangkan (tidak langsung diambil), begitu pula untuk kemungkinan langkah ke kiri dan kekanan.

Gambar 3.5. Aturan Untuk Langkah Terakhir Kiri

Pada gambar diatas menggambarkan aturan apabila langkah terakhir adalah ke kiri (4) maka kemungkinan langkah selanjutnya yang dapat ditempuh adalah ke kiri lagi, ke atas , atau ke bawah. Untuk menghindari arah penelusuran agar tidak berputar kembali atau terjepit maka perlu dilakukan pemeriksaan, dimana apabila langkah selanjutnya ke kiri maka diperiksa apakah posisi 4.1 dan 4.2 berwarna biru, apabila berwarna biru maka langkah selanjutnya ke kiri tidak dapat dimungkinkan sebaliknya

(11)

apabila warna bukan biru maka langkah selanjutnya ke kiri dapat dipertimbangkan (tidak langsung diambil), begitu pula untuk kemungkinan langkah ke atas dan kebawah.

Gambar 3.6. Aturan Untuk Langkah Pertama Kali

Pada gambar diatas menggambarkan aturan apabila langkah terakhir merupakan langkah pertama kali (5) maka kemungkinan langkah selanjutnya yang dapat ditempuh adalah ke kiri lagi, ke atas, ke kanan, atau ke bawah. Untuk menghindari arah penelusuran agar tidak berputar kembali atau terjepit maka perlu dilakukan pemeriksaan, dimana apabila langkah selanjutnya ke kiri maka diperiksa apakah posisi 4.1 dan 4.2 berwarna biru, apabila berwarna biru maka langkah selanjutnya ke kiri tidak dapat dimungkinkan sebaliknya apabila warna bukan biru maka langkah selanjutnya ke kiri dapat dipertimbangkan (tidak langsung diambil), begitu pula untuk kemungkinan langkah ke atas, ke kanan, dan kebawah.

Gambar 3.7. Aturan Untuk Langkah Terakhir Kanan

Pada gambar diatas menggambarkan aturan apabila langkah terakhir adalah ke kanan (6) maka kemungkinan langkah selanjutnya yang dapat

(12)

ditempuh adalah ke kanan lagi, ke atas , atau ke bawah. Untuk menghindari arah penelusuran agar tidak berputar kembali atau terjepit maka perlu dilakukan pemeriksaan, dimana apabila langkah selanjutnya ke kanan maka diperiksa apakah posisi 6.1 dan 6.2 berwarna biru, apabila berwarna biru maka langkah selanjutnya ke kanan tidak dapat dimungkinkan sebaliknya apabila warna bukan biru maka langkah selanjutnya ke kanan dapat dipertimbangkan (tidak langsung diambil), begitu pula untuk kemungkinan langkah ke atas dan kebawah.

Gambar 3.8. Aturan Untuk Langkah Terakhir Bawah

Pada gambar diatas menggambarkan aturan apabila langkah terakhir adalah ke bawah (8) maka kemungkinan langkah selanjutnya yang dapat ditempuh adalah ke bawah lagi, ke kiri, atau ke kanan. Untuk menghindari arah penelusuran agar tidak berputar kembali atau terjepit maka perlu dilakukan pemeriksaan, dimana apabila langkah selanjutnya ke bawah maka diperiksa apakah posisi 8.1 dan 8.2 berwarna biru, apabila berwarna biru maka langkah selanjutnya ke bawah tidak dapat dimungkinkan sebaliknya apabila warna bukan biru maka langkah selanjutnya ke bawah dapat dipertimbangkan (tidak langsung diambil), begitu pula untuk kemungkinan langkah ke kiri dan kekanan.

• Nilai integer warna piksel yang sedang dievaluasi untuk dilalui harus kurang dari nilai C_White (yaitu, 12500000 pada keadaan normal atau 15000000 pada keadaan penelusuran di warna biru), karena apabila lebih besar maka warna akan semakin mendekati warna putih. Dan juga tidak boleh sama dengan 16711680, karena merupakan warna biru, yaitu warna

(13)

untuk menandai piksel-piksel yang telah dilalui proses penelusuran.

Potongan dari listing programnya adalah sebagai berikut : if (Mode[4]<>16711680) and (Mode[4]<C_White) then begin .

. . end;

• Nilai intensitas warna (RGB) piksel yang sedang dievaluasi untuk dilalui harus memiliki intensitas warna merah yang lebih besar dari R, atau intensitas warna hijau yang lebih besar dari G, atau intensitas warna biru yang lebih besar dari B (R=120, G=100, B=100) sehingga warna yang di penelusuran bukan wana hitam (garis, angka, tulisan, titik, dll). Kecuali apabila memang sedang melakukan penelusuran warna hitam (garis kontur dengan medan bebatuan). Potongan dari listing programnya adalah sebagai berikut :

if (HexToInt(Copy(IntToHex(Mode[4],0),5,2))>R) or (HexToInt(Copy(IntToHex(Mode[4],0),3,2))>G)

or (HexToInt(Copy(IntToHex(Mode[4],0),1,2))>B) then begin .

. . end;

• Pada setiap piksel yang mengelilingi suatu titik (X,Y) harus dicari piksel yang memiliki intensitas wana hijau yang paling kecil. Karena semakin kecil intensitas warna hijau maka warna mendekati coklat dan hitam.

Potongan dari listing programnya adalah sebagai berikut :

if(Warna>HexToInt(Copy(IntToHex(Mode[4],0),3,2))) then begin Warna:=HexToInt(Copy(IntToHex(Mode[4],0),3,2));

Step:=6;

end;

• Apabila garis kontur tertindih dengan warna biru (danau, pantai, sungai, dll) maka cara penelusuran dengan mencari intensitas warna hijau yang paling kecil sudah tidak dapat digunakan lagi. Untuk mengatasinya, apabila posisi penelusuran sedang dalam warna biru maka yang harus dicari adalah piksel-piksel disekitarnya yang memiliki warna integer paling kecil. Potongan dari listing programnya adalah sebagai berikut : if (HexToInt(Copy(IntToHex(Mode[6],0),3,2))<G_Air)

(14)

and (HexToInt(Copy(IntToHex(Mode[6],0),1,2))>B_Air) then BlueState:=True;

if WarnaInt>Mode[6] then begin WarnaInt:=Mode[6];

StepInt:=6;

end;

pada subsistem ini terdapat output berupa dua file, yaitu file digitalizer project (*.dgp) dan file digitalizer data (*.dgd). kedua file ini nantinya menjadi input data bagi subsistem pemodelan. File digitalizer project (*.dgp) memiliki format sebagai berikut

Baris 0 [lokasi path gambar peta]

Baris 1 [filename gambar peta]

Baris 2 [nomor peta]

Baris 3 [judul peta]

Baris 4 [skala peta]

Baris 5 [tahun peta]

Baris 6 [deklinasi peta]

Baris 7 [deklinasi magnetik]

Baris 8 [variasi magnetik]

Baris 9 [batas kiri]

Baris 10 [batas atas]

Baris 11 [batas kanan]

Baris 12 [batas bawah]

Baris 13 [koordinat geogerafi batas kiri]

Baris 14 [koordinat geografi batas atas]

Baris 15 [ketinggian]#[x],[y]$[baris]@[kode]

. . .

Baris N [ketinggian]#[x],[y]$[baris]@[kode]

Dan file digitalizer data (*.dgd) memiliki format sebagai berikut Baris 0 [arah 1][arah 2]…[arah N]0 / [arah 1][arah 2]…[arah N]

Baris 1 [arah 1][arah 2]…[arah N]0 / [arah 1][arah 2]…[arah N]

. . .

Baris N [arah 1][arah 2]…[arah N]0

(15)

3.2.2 Prosedur Utama pada Aplikasi Pemodelan

Ada beberapa prosedur dan fungsi yang utama dalam subsistem pemodelan ini antara lain

1. Fungsi AddNodeInduk(Z,Kind)

Fungsi ini berfungsi untuk membentuk simpul induk yang berisi informasi ketinggian dan jenis dari garis ini, yaitu apakah garis kontur biasa atau garis kontur yang menggambarkan permukaan air. Simpul induk ini nantinya dapat memili simpul anak. Karena prosedur ini berupa fungsi maka akan mengembalikan suatu hasil setelah dieksekusi, fungsi ini akan menghasilkan nilai true apabila alokasi data pada memori sukses dan sebaliknya apabila gagal akan mengembalikan nilai berupa false. Listing dari fungsi ini adalah sebagai berikut

function TMainForm.AddNodeInduk(Z: Single; Kind: Byte):Boolean;

var

IndukBaru : PInduk;

begin try

New(IndukBaru);

except

on EOutOfMemory do Result:=False;

end;

IndukBaru^.Z:=Z;

IndukBaru^.Kind:=Kind;

IndukBaru^.Next:=nil;

IndukBaru^.Down:=nil;

if NodeIndukAwal=nil then begin {set pointer node awal dan sekarang}

NodeIndukAwal:=IndukBaru;

NodeIndukSekarang:=IndukBaru;

end else begin

NodeIndukSekarang^.Next:=IndukBaru;

NodeIndukSekarang:=IndukBaru;

end;

NodeAnakAwal:=nil;

Result:=True;

end;

2. Fungsi AddNodeAnak(X,Y)

Fungsi ini berfungsi untuk membentuk simpul anak, yang pangkalnya terkait dengan simpul induk. Simpul anak ini fungsinya adalah untuk menyimpan rangkaian titik-titik yang menyusun sebuah garis ketinggian yang ketinggiannya sesuai dengan simpul induknya. Seperti pada fungsi

(16)

AddNodeInduk funsi ini juga mengembalikan nilai setelah dieksekusi, fungsi ini akan menghasilkan nilai true apabila alokasi data pada memori sukses dan sebaliknya apabila gagal akan mengembalikan nilai berupa false. Listing dari fungsi ini adalah sbagai berikut

function TMainForm.AddNodeAnak(X, Y: Single):Boolean;

var

AnakBaru : PAnak;

begin try

New(AnakBaru);

except

on EOutOfMemory do Result:=False;

end;

AnakBaru^.X:=X;

AnakBaru^.Y:=Y;

AnakBaru^.Down:=nil;

if NodeAnakAwal=nil then begin {set pointer node awal dan sekarang}

NodeIndukSekarang^.Down:=AnakBaru;

NodeAnakAwal:=AnakBaru;

NodeAnakSekarang:=AnakBaru;

end else begin

NodeAnakSekarang^.Down:=AnakBaru;

NodeAnakSekarang:=AnakBaru;

end;

Result:=True;

end;

3. Prosedur ClearAllNode

Prosedur ini berfungsi menghapus seluruh simpul, baik simpul induk dan simpul anak yang telah diletakan pada memori. Simpul induk dan simpul anak yang sudah tidak terpakai lagi harus dihapus dari memori agar memori dapat digunakan lagi untuk keperluan yang lain. Listing dari prosedur ini adalah sebagai berikut

procedure TMainForm.ClearAllNode;

var

PIndukTemp: PInduk;

PAnakTemp: PAnak;

begin

while NodeIndukAwal<>nil do begin PIndukTemp:=NodeIndukAwal;

if NodeIndukAwal^.Down<>nil then begin NodeAnakAwal:=NodeIndukAwal^.Down;

(17)

PAnakTemp:=NodeAnakAwal;

while NodeAnakAwal<>nil do begin

NodeAnakAwal:=NodeAnakAwal^.Down;

Dispose(PAnakTemp);

PAnakTemp:=NodeAnakAwal;

end;

NodeIndukAwal^.Down:=nil;

end;

NodeIndukAwal:=NodeIndukAwal^.Next;

Dispose(PIndukTemp);

end;

NodeIndukSekarang:=nil;

NodeAnakSekarang:=nil;

end;

4. Prosedur InitOpenGL(vhWnd)

Prosedur ini berfungsi untuk melakukan inisialisasi untuk OpenGL dengan suatu window yang akan digunakan untuk proses menggambar objek tiga dimensi. Listing dari prosedur ini adalah sebagai berikut

procedure TMainForm.InitOpenGL(vhWnd : HWND);

var

pfd : PIXELFORMATDESCRIPTOR;

iPixelFormat : Integer;

begin

GLDC := GetDC(vhWnd);

with pfd do begin // size of this pfd

nSize := sizeof(PIXELFORMATDESCRIPTOR);

nVersion := 1; // version number // support window

dwFlags := PFD_DRAW_TO_WINDOW or

PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;

iPixelType := PFD_TYPE_RGBA; // support OpenGL cColorBits := 24; // double buffered

cRedBits := 0; // RGBA type cRedShift := 0; // 24-bit color depth cGreenBits := 0;

cGreenShift := 0;

cBlueBits := 0;

cBlueShift := 0;

cAlphaBits := 0;

cAlphaShift := 0; // color bits ignored cAccumBits := 0; // no alpha buffer cAccumRedBits := 0; // shift bit ignored cAccumGreenBits := 0;

cAccumBlueBits := 0; // no accumulation buffer cAccumAlphaBits := 0;

(18)

cDepthBits := 32; // 32-bit z-buffer cStencilBits := 0;

cAuxBuffers := 0; // accum bits ignored

iLayerType := PFD_MAIN_PLANE; // main layer bReserved := 0; // no stencil buffer

dwLayerMask := 0;

dwVisibleMask := 0;

dwDamageMask := 0;

end;

// get the device context's best-available-match pixel format iPixelFormat := ChoosePixelFormat(GLDC, @pfd);

// make that the device context's current pixel format SetPixelFormat(GLDC, iPixelFormat, @pfd);

GLRC := wglCreateContext(GLDC);

wglMakeCurrent(GLDC,GLRC);

end;

5. Prosedur Make3D

Prosedur ini berfungsi untuk mengambil data dari memori dan menggambar objek ke window yang telah ditentukan melalui perintah OpenGL. Selain menggambar objek, prosedur ini juga menerima masukan dari variabel global untuk mengontrol arah rotasi, arah pergeseran, dan perbesaran gambar. Listing dari prosedur ini adalah sebagai berikut

procedure TMainForm.Make3D;

var

PIndukTemp: PInduk;

PAnakTemp: PAnak;

Loop: Integer;

begin {Make 3D}

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

glViewport(0,0,PanelPicture.Width,PanelPicture.Height);

glLoadIdentity;

gluLookAt(7, 7, 7, MoveX, MoveY, MoveZ, 0, 0, 1);

//Skala dan sudut rotasi

glScalef(Skala,Skala,Skala); //Rotate sudut,X,Y,Z glRotatef(RotZ,0,0,1); //paint line coord X,Y,Z glBegin(GL_LINES);

glColor3ub(255,0,0); {red}

glVertex3i(0,0,0);

glVertex3i(500,0,0);

glColor3ub(0,255,0); {green}

glVertex3i(0,0,0);

glVertex3i(0,500,0);

glColor3ub(0,0,255); {blue}

glVertex3i(0,0,0);

glVertex3i(0,0,500);

(19)

glEnd();

PIndukTemp:=NodeIndukAwal;

while PIndukTemp<>nil do begin {paint contur lines}

//tentukan warna melalui jenis : kontur normal atau danau if PIndukTemp^.Kind=1 then glColor3ub(0,0,255)

else glColor3f(0,0.1+(PIndukTemp^.Z / ScrollBar3.Position),0.2);

//gambar tiap kontur berdasarkan model3D yang dimasukan if Model3D.Tag=0 then glBegin(GL_POINTS)

else glBegin(GL_LINE_STRIP);

if PIndukTemp^.Down<>nil then begin PAnakTemp:=PIndukTemp^.Down;

while PAnakTemp<>nil do begin

//gambar tiap titik yg ada pada garis kontur

glVertex3f(PAnakTemp^.Y, PAnakTemp^.X, PIndukTemp^.Z);

for Loop:= 1 to JarakGaris do

if PAnakTemp<>nil then PAnakTemp:=PAnakTemp^.Down;

end;

end;

glEnd();

PIndukTemp:=PIndukTemp^.Next;

end;

glEnd();

SwapBuffers(GLDC); {paint to window selected}

if (RotateZ>0) then begin

if (RotateZ=1) then RotZ:=RotZ+(ScrollBar1.Position/100) else RotZ:=RotZ-(ScrollBar1.Position/100);

end;

case Move of 0: begin //reset MoveX:=0;

MoveY:=0;

MoveZ:=0;

end;

1: MoveZ:=MoveZ-0.05; //keatas 2: MoveZ:=MoveZ+0.05; //bawah 3: begin //Kiri

MoveX:=MoveX-0.05;

MoveY:=MoveY+0.05;

end;

4: begin //kanan

MoveX:=MoveX+0.05;

MoveY:=MoveY-0.05;

end;

end;

end;

(20)

3.3.3 Membuat Proyek Baru pada Aplikasi Digitalizer

Untuk membuat proyek baru pada aplikasi digitalizer, dimulai dengan langsung menampilkan form open picture yang fungsinya untuk memilih gambar peta yang telah di scan (resolusi harus 360 dpi) yang akan dijadikan gambar peta proyek digitalisasi. Potongan listing programnya adalah sebagai berikut

if PictureDirectory.Text<>'' then begin //ada project yang masih terbuka FileClose.Execute;

if FileClose.Enabled then ProsesNew:=False;

end;

if ProsesNew then begin

if OpenPictureDialog1.Execute then begin …

ImageLayer1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

MainForm.Caption:='Digitalizer 2003 - Untitled.dgp';

StatusBar1.Panels[0].Text:='Untitled.dgp';

PictureDirectory.Text:=ExtractFilePath(OpenPictureDialog1.FileName);

PictureFileName.Text:=ExtractFileName(OpenPictureDialog1.FileName);

… end;

end;

Gambar 3.9. Tampilan Awal Aplikasi Digitalizer

(21)

Gambar 3.10. Tampilan Untuk Membuat Proyek Baru

3.3.4 Penentuan Batas-batas Peta pada Aplikasi Digitalizer

Pada halaman peta terdapat tombol Get yang berfungsi menetukan titik pojok kiri atas dan menentukan titik pojok kanan bawah dari batas peta yang akan di modelkan ke objek tiga dimensi. Pada bagian koordinat geografis peta terdapat garis bujur yang merupakan koordinat batas kiri area yang dimodelkan, dan garis lintang yang merupakan koordinat batas atas area yang akan dimodelkan.

Gambar 3.11. Tampilan Seting Batasan Area

(22)

3.3.5 Penelusuran Kontur pada Aplikasi Digitalizer

Proses penelusuran kontur didahului dengan penentuan titik awal sebuah kontur, baru kemudian halaman kontrol ditampilkan dan proses penelusuran dapat mulai dilakukan.

Gambar 3.12. Tampilan Seting Penelusuran

Pada halaman kontrol tersedia beberapa tombol yang memiliki fungsi masing-masing, antara lain :

a. Tombol Tambah (+) berfungsi untuk menambah ketinggian dengan interval sebesar 12,5 meter.

b. Tombol Kurang (-) berfungsi untuk mengurangi ketinggian dengan interval sebesar 12,5 meter.

c. Tombol (? )/(? ) berfungsi untuk menambah atau mengurangi langkah.

d. Tombol Go berfungsi untuk melakukan proses penelusuran secara otomatis.

e. Tombol Undo berfungsi untuk kembali ke suatu titik pada garis kontur yang telah dilalui.

f. Tombol Goto berfungsi untuk penelusuran menuju suatu titik yang ditentukan secara lurus dari titik terakhir penelusuran.

g. Tombol Add/Apply berfungsi untuk menyimpan data penelusuran kontur atau data penelusuran kontur yang telah diedit.

(23)

h. Tombol Cancel berfungsi untuk membatalkan proses penelusuran kontur yang telah terjadi atau pembatalan proses edit penelusuran kontur.

Gambar 3.13. Tampilan Proses Penelusuran Kontur

Listing program untuk penelusuran kontur dengan menekan tombol go adalah sebagai berikut

procedure TMainForm.BtnGoClick(Sender: TObject);

var

loop: Integer;

begin {Go Button on PageControl}

ImageLayer1.Tag:=1;

ImageLayer1.Cursor:=5;

for loop:=1 to StrToInt(Langkah.Text) do begin

GetMode(StrToInt(XCorLast.Text),StrToInt(YCorLast.Text),Mode);

if mode[5]=10 then begin

MessageDlg('Proses tracking telah selesai !', mtConfirmation,[mbOk], 0);

Break;

end else begin

Tracking(XCorLast,YCorLast);

if mode[5]=0 then Break else begin

tStep.Insert;

tStep.FieldByName('Step').AsInteger:=tStep.RecordCount+1;

tStep.FieldByName('X').AsString:=XCorLast.Text;

tStep.FieldByName('Y').AsString:=YCorLast.Text;

tStep.FieldByName('Color').AsInteger:=ImageLayer1.Canvas.

(24)

Pixels[StrToInt(XCorLast.Text),StrToInt(YCorLast.Text)];

tStep.FieldByName('Arah').AsInteger:=Mode[5];

tStep.Post;

ImageLayer1.Canvas.Pixels[StrToInt(XCorLast.Text),StrToInt(

YCorLast.Text)]:=clBlue;

Zooming(StrToInt(XCorLast.Text),StrToInt(YCorLast.Text));

end;

end;

end;

end;

3.3.6 Informasi Koordinat Geografi pada Aplikasi Digitalizer

Dengan memakai fasilitas penentuan koordinat, maka dapat secara langsung diketahu koordinat geografis suatu titik dalam area yang dimodelkan.

Dengan menghitung dari batas kiri dan batas atas area.

Gambar 3.14. Tampilan Informasi Koordinat Geografis

Potongan listing program untuk mencari koordinat suatu titik yang diinginkan adalah sebagai berikut

if(X>StrToInt(BatasKiri.Text))and(X<StrToInt(BatasKanan.Text))and (Y>StrToInt(BatasAtas.Text))and(Y<StrToInt(BatasBawah.Text)) then begin

{30"->525 pixel, 1 Pixel = 0,0571 " kurang lebih}

(25)

X2:=StrToInt(Copy(BatasBujur.Text,1,3));

V1:=StrToInt(Copy(BatasBujur.Text,4,2));

V2:=StrToInt(Copy(BatasBujur.Text,6,2));

GeoSec:=(X-StrToInt(BatasKiri.Text))* 0.0571;

GeoSec:=GeoSec + V2;

V1:=V1 + Trunc(GeoSec / 60);

GeoSec:=GeoSec - (Trunc(GeoSec / 60)*60);

X2:=X2 + (V1 div 60);

V1:=V1 - ((V1 div 60)*60);

Str(GeoSec:2:2, GeoStr);

GeoX:=IntToStr(X2)+' ° '+IntToStr(V1)+' '#39' '+GeoStr+' " '+

Copy(BatasBujur.Text,8,2);

if Copy(BatasLintang.Text,8,2)='LS' then begin {Lintang Selatan}

X2:=StrToInt(Copy(BatasLintang.Text,1,3));

V1:=StrToInt(Copy(BatasLintang.Text,4,2));

V2:=StrToInt(Copy(BatasLintang.Text,6,2));

GeoSec:=(Y-StrToInt(BatasAtas.Text))* 0.0571;

GeoSec:=GeoSec + V2;

V1:=V1 + Trunc(GeoSec / 60);

GeoSec:=GeoSec - (Trunc(GeoSec / 60)*60);

X2:=X2 + (V1 div 60);

V1:=V1 - ((V1 div 60)*60);

Str(GeoSec:2:2, GeoStr);

end else begin {Lintang Utara}

X2:=StrToInt(Copy(BatasLintang.Text,1,3))*60*60;

V1:=StrToInt(Copy(BatasLintang.Text,4,2))*60;

V2:=StrToInt(Copy(BatasLintang.Text,6,2));

GeoSec:=(Y-StrToInt(BatasAtas.Text))* 0.0571;

GeoSec:=(X2+V1+V2)-GeoSec;

V1:=Trunc(GeoSec /60);

GeoSec:=GeoSec - (Trunc(GeoSec /60)* 60);

X2:=V1 div 60;

V1:=V1 - ((V1 div 60)* 60);

Str(GeoSec:2:2, GeoStr);

end;

GeoY:=IntToStr(X2)+' ° '+IntToStr(V1)+' '#39' '+GeoStr+' " '+

Copy(BatasLintang.Text,8,2);

MessageDlg('Koorginat Geografinya adalah :'#13#13+'Bujur : '+

GeoX+#13+'Lintang : '+GeoY+#13#13'* Perhatian, resolusi gambar peta harus 360 dpi agar koordinat valid !', mtInformation, [mbOk], 0);

end else MessageDlg('Maaf, posisi start melebihi batasan peta.', mtInformation, [mbOk], 0);

ImageLayer1.Tag:=1;

ImageLayer1.Cursor:=5;

(26)

3.3.7 Menyimpan File Proyek pada Aplikasi Digitalizer

Sebuah proyek dapat disimpan, agar nantinya dapat dibuka kembali oleh aplikasi digitalizer untuk dimodifikasi, atau dibuka kembali oleh aplikasi map 3D untuk dimodelkan ke model tiga dimensi.

Gambar 3.15. Toolbar untuk Menyimpan Proyek

Potongan dari listing untuk proses penyimpanan adalah sebagai berikut

{masukan data ke MemoIndex line0 sampai 11}

MemoIndex.Lines.Add(PictureDirectory.Text+PictureFilename.Text);

for Loop:= 1 to ValueListEditor1.RowCount-1 do

MemoIndex.Lines.Add(ValueListEditor1.Cells[1,loop]);

MemoIndex.Lines.Add(BatasKiri.Text);

MemoIndex.Lines.Add(BatasAtas.Text);

MemoIndex.Lines.Add(BatasKanan.Text);

MemoIndex.Lines.Add(BatasBawah.Text);

MemoIndex.Lines.Add(BatasBujur.Text);

MemoIndex.Lines.Add(BatasLintang.Text);

{masukan data index mulai line 12 dst}

RecNum:=0;

while RecNum<tData.RecordCount do begin RecNum:=RecNum+1;

tData.RecNo:=RecNum;

MemoIndex.Lines.Add(tData.FieldByName('Height').AsString+'#'+

tData.FieldByName('X').AsString+','+tData.FieldByName('Y').AsString+'$'+

tData.FieldByName('Line').AsString+'@'+

tData.FieldByName('Kind').AsString);

(27)

end;

{hapus exist file first}

DeleteFile(SaveDialog1.FileName+'.dgp');

DeleteFile(SaveDialog1.FileName+'.dgd');

MemoIndex.Lines.SaveToFile(SaveDialog1.FileName+'.dgp');

MemoData.Lines.SaveToFile(SaveDialog1.FileName+'.dgd');

MemoIndex.Clear; {MemoIndex must alwyas be clear}

StatusBar1.Panels[0].Text:=SaveDialog1.FileName+'.dgp';

MainForm.Caption:='Digitalizer 2003 - '+SaveDialog1.FileName+'.dgp';

FileSave.Enabled:=False;

3.3.8 Membuka File pada Aplikasi Map 3D

File proyek yang dihasilkan oleh aplikasi digitalizer, dapat di buka pada aplikasi map 3D untuk dijadikan suatu objek tiga dimensi. Pada saat file dibuka maka seluruh data kontur dalam file tersebut langsung diambil dan diletakan dalam memori.

Gambar 3.16. Tampilan Aplikasi 3D Map

(28)

Gambar 3.17. Tampilan Membuka Proyek pada Aplikasi 3D Map

Proses membuka file dan meletakannya dalam memori dapat dilihat pada potongan listing dibawah ini.

//isi atribut peta

for Loop:= 1 to ValueListEditor1.RowCount-1 do

ValueListEditor1.Cells[1,loop]:=MemoIndex.Lines[Loop];

BatasKiri.Text:=MemoIndex.Lines[8];

BatasAtas.Text:=MemoIndex.Lines[9];

BatasKanan.Text:=MemoIndex.Lines[10];

BatasBawah.Text:=MemoIndex.Lines[11];

BatasBujur.Text:=MemoIndex.Lines[12];

BatasLintang.Text:=MemoIndex.Lines[13];

KetinggianMin:=99999; //set ketinggianMin to maximum height //Seek minimum height

for Loop:= 14 to MemoIndex.Lines.Count-1 do begin

if KetinggianMin>StrToInt(Copy(MemoIndex.Lines[Loop],1, Pos('#',MemoIndex.Lines[Loop])-1)) then

KetinggianMin:=StrToInt(Copy(MemoIndex.Lines[Loop],1, Pos('#',MemoIndex.Lines[Loop])-1));

end;

PanelProses.Visible:=True; //fill node with kontur coord Application.ProcessMessages;

ProgressBar1.Max:=MemoIndex.Lines.Count-14;

ProgressBar1.Position:=1;

for Loop:= 14 to MemoIndex.Lines.Count-1 do begin

(29)

T1:=Pos('#',MemoIndex.Lines[Loop]);

T2:=Pos(',',MemoIndex.Lines[Loop]);

T3:=Pos('$',MemoIndex.Lines[Loop]);

T4:=Pos('@',MemoIndex.Lines[Loop]);

Z:=StrToInt(Copy(MemoIndex.Lines[Loop],1,T1-1));

X:=StrToInt(Copy(MemoIndex.Lines[Loop],T1+1,T2-T1-1))- StrToInt(BatasKiri.Text);

Y:=StrToInt(Copy(MemoIndex.Lines[Loop],T2+1,T3-T2-1))- StrToInt(BatasAtas.Text);

Line:=StrToInt(Copy(MemoIndex.Lines[Loop],T3+1,T4-T3-1));

Kind:=StrToInt(Copy(MemoIndex.Lines[Loop],T4+1, Length(MemoIndex.Lines[Loop])-T4));

Z3D:=(Z-KetinggianMin); //Set ketinggian kontur dalam 3D if Z3D<>0 then Z3D:=Z3D/10;

if not AddNodeInduk(Z3D, Kind) then begin

MessageDlg('Maaf, jumlah memori heap yang dibutuhkan tidak memadai!',mtInformation,[mbYes,mbNo],0);

Exit;

end;

StopCode:=false;

repeat //Set titik-titik kontur X,Y

if RightStr(MemoData.Lines[Line],1)='0' then StopCode:=True;

for I:=1 to length(MemoData.Lines[Line]) do begin case StrToInt(Copy(MemoData.Lines[Line],i,1)) of 2 : Y:=Y-1; //Atas

4 : X:=X-1; //Kiri 6 : X:=X+1; //Kanan 8 : Y:=Y+1; //Bawah end;

if StrToInt(Copy(MemoData.Lines[Line],i,1))<>0 then begin if not AddNodeAnak(X,Y) then begin

MessageDlg('Maaf, jumlah memori heap yang dibutuhkan tidak memadai!',mtInformation,[mbYes,mbNo],0);

Exit;

end;

end;

end;

if not StopCode then Line:=Line+1;

until StopCode;

3.3.9 Kontrol Tiga Dimensi pada Aplikasi Map 3D

Untuk proses manipulasi gambar objek tiga dimensi dapat dilakukan dengan beberapa tombol yang telah disediakan, seperti pada gambar dibawah ini :

(30)

Gambar 3.18. Bagian-bagian dalam Halaman Kontrol

Tombol-tombol yang digunakan berikut penjelasan kegunaan akan dijelaskan sebagai berikut sesuai pada gambar 3.18 :

a. Bagian ini berfungsi untuk menangani primitive dari model tiga dimensi, dimana model tiga dimensi, dapat dibentuk dari titik atau garis yang saling terhubung. Jarak tiap titik memberikan jarak antar satu titik dengan titik yang lain pada model titik, pada model garis jarak tiap titik memberikan panjang tiap garisnya. Tombol Apply 3D Object digunakan untuk menetapkan seting yang telah diberikan agar langsung digunakan.

b. Tombol Zoom In dan Zoom Out digunakan untuk memperbesar gambar atau memperkecil gambar objek tiga dimensi.

c. Scrollbar kecepatan rotasi memberikan nilai dari kecepatan rotasi objek sedangkan tombol-tombol yang lain memberikan arah perputaran rotasi, dan arah pergerakan kamera terhadap objek.

d. Scrollbar memberikan intensitas warna yang berbeda pada tiap garis kontur, dimana garis kontur yang memiliki ketinggian lebih rendah memiliki warna yang lebih gelap dari garis kontur yang memiliki ketinggian lebih tinggi.

(31)

e. Tombol Reset berfungsi untuk mengembalikan nilai-nilai seting ke awal, sehingga seakan belum pernah dilakukan perubahan pada seting.

f. Checkbox ini menyebabkan proses render akan dihentikan apabila di tandai dan sebaliknya proses render akan dijalankan apabila tidak ditandai.

Gambar

Gambar 3.1. Bagan Sistem Secara Umum
Gambar 3.2. Bagan Sistem Secara Rinci
Gambar 3.3. Rangkaian Simpul Induk dan Simpul Anak
Gambar 3.4. Aturan Untuk Langkah Terakhir Atas
+7

Referensi

Dokumen terkait

Dalam dokumen Perjanjian Kinerja BPTP Lampung Tahun 2019, telah ditetapkan 8 (delapan) sasaran strategis beserta target indikator kinerja yang akan dicapai dalam periode tahun 2019

STRATEGI PENCEGAHAN, PENGENDALIAN DAN PEMBERANTASAN PENYAKIT AI Sejak awal tahun 2004, pemerintah telah mengeluarkan kebijakan yang bersifat strategis dalam rangka

Produk yang diharapkan akan dihasilkan melalui penelitian pengembangan berupa model sarana pembelajaran atletik alat lempar cakram melalui modifikasi ukuran berat,

Dalam Olimpiade Metrologi Industri SMK Tingkat Nasional Tahun 2017 dibagi menjadi dua tahap yang terdiri dari tiga seleksi Indikator Olimpiade Metrologi Industri Tahun 2017

memberikan hasil akhir rancangan kepada mentor sesuai dengan ketentuan kegiatan aktualisasi sebagai bentuk pertanggungjawaban Rancangan SOP Penyusunan Laporan Realisasi PNBP

Pada tahun 2009 -2010 kabupaten Ngada mengusulkan Pinjam Pakai Kawasan Hutan sebanyak 12 ruas jalan yang berada dalam kawasan hutan, tetapi setelah berproses hanya 7 ruas jalan

Dengan menggunakan hasil pada model regresi, dapat dijabarkan pola pengaruh kedua variabel (kualitas pelayanan dan kepuasan pelanggan) terhadap loyalitas pelanggan

Terdapat tiga aturan keserasian yang digunakan dalam penelitian ini, oleh karena itu pengujian ini dilakukan untuk mengetahui aturan keserasian mana yang sangat