Bab IV Implementasi Program NoiseMapping Pada tahap ini dilakukan transformasi dari model perancangan kedalam bahasa implementasi. Dalam hal ini, bahasa implementasi yang digunakan adalah Borland Delphi. Setiap kelas model perancangan dipetakan kedalam kode Delphi menjadi sebuah “benda” dapat berbentuk Form, Unit, atau Data Module. Untuk pemanggilan fungsi dan pengubahan nilai status atribut mengikuti alur yang telah didefinisikan pada StateChart Diagram.
IV.1 Lingkungan Pengembangan Bahasa pemrograman yang digunakan untuk pengembangan NoiseMapping adalah Borland Delphi ver 7. Selain dari bahasa pemrograman, lingkungan implementasi NoiseMapping adalah sebagai berikut: Operating System: MS-Windows XP. DBMS Platform: PostgreSQL dengan pustaka spasial PostGIS. Database Control Component : ZeosLib Delphi Visual Component Library: Jedi-VCL Database Designer: MicroOLAP Database Designer for PostgreSQL PostgreSQL Database Manager: pgAdmin III Modeling Tool: ModelMaker Pascal Edition Spatial Engine Component: SistechGIS Berikut diberikan beberapa alasan dipilihnya Borland Delphi sebagai bahasa pemrograman untuk pengembangan NoiseMapping, yaitu (Borland, 2002): Delphi menyediakan fasilitas pembuatan interface yang mudah dan cepat. Delphi menyediakan lingkungan pemrograman yang terintegrasi , meliputi proses: sunting, kompilasi, link, eksekusi dan penelusuran program. Kemampuan mengakses data dalam berbagai macam format.
IV-1
Implementasi Program NoiseMapping _______________________________________ IV-2
IV.2 Perangkat Keras Pendukung NoiseMapping Spesifikasi perangkat keras yang diperlukan dalam pengembangan adalah perangkat keras yang diperlukan untuk menjalankan Delphi. Berdasarkan rekomendasi dari Borland sebagai vendor Delphi maka perangkat keras yang dimaksud adalah (Borland, 2002): Intel® Pentium® 233 MHz or higher Microsoft® Windows XP,™ Windows® 2000, and Windows® 98 64 MB RAM (128 MB recommended) 110 MB hard disc space (compact install) 400 MB hard disc space (full install) CD-ROM drive SVGA or higher resolution monitor Mouse or other pointing device
IV.3 Implementasi Basis Data Pada tahap implementasi, model lojik database dibangkitkan menjadi script SQL untuk meng-create objek-objek database fisik, seperti: tabel, reference, indeks, dan sequence. Proses generate database dilakukan menggunakan tool Database Designer. Hasilnya berupa script DDL (Data Definition Language) disimpan sebagai file SQL, cuplikannya dapat dilihat pada Gambar IV-1. Berikutnya, file tersebut di-execute pada tool Database Manager. Eksekusi file SQL menghasilkan database fisik NoiseMapping. Melalui menu visual database designer, pada tool Database Manager, dapat di-generate tabel-tabel fisik sehingga terlihat struktur data secara lengkap dalam bentuk diagram Relationship; disebut model fisik database NoiseMapping, lihat Gambar IV-2. Pada Gambar IV-2 terdapat 3 kotak kelompok tabel, yaitu: 1. Kelompok tabel simulasi NoiseContouring. 2. Kelompok tabel NoiseMap; hasil simulasi NoiseContouring. 3. Kelompok tabel NoiseDose; hasil simulasi takaran tingkat kebisingan.
Implementasi Program NoiseMapping _______________________________________ IV-3
Gambar IV-1 Cuplikan Script DDL
Gambar IV-2 Model Fisik Basis Data NoiseMapping
Implementasi Program NoiseMapping _______________________________________ IV-4
IV.4 Penyiapan Data Studi Kasus Studi kasus dilakukan di area kerja anjungan eksplorasi migas lepas pantai yang dimiliki oleh suatu Oil Company asing yang beroperasi di Indonesia. Oleh karena alasan confidential maka tidak disebutkan nama perusahaan dan lokasi geografis area kerja tersebut. Lokasi anjungan dikenal dengan istilah platform. Area platform terdiri atas beberapa sub area yang disebut deck. Pada setiap deck terpasang peralatanperalatan proses yang menimbulkan kebisingan. Area di sekitar peralatan proses selanjutnya disebut open plant factory, misalnya: area kompressor, area turbin, area boiler, dsb., illustrasi pada Gambar IV-3.
Gambar IV-3 Platform Anjungan Eksplorasi Migas
Secara ringkas, studi kebisingan dilakukan melalui 4 tahapan utama, yaitu: 1. Pengukuran kebisingan 1.1. Identifikasi area sumber bising (open plant) 1.2. Penentuan posisi titik-titik sumber bising (source point) 1.3. Penentuan posisi titik-titik penerima bising (receiver point) 1.4. Pengukuran kondisi lingkungan; suhu, kelembaban, kecepatan angin, dan tekanan (environmental) 1.5. Penentuan besaran penyerapan oleh atmosfer (attenuation excess) 1.6. Pengukuran kebisingan sumber (noise source) 1.7. Pengukuran kebisingan di titik-titik penerima (noise received)
Implementasi Program NoiseMapping _______________________________________ IV-5
2. Pengolahan data 2.1. Pendefinisian data masukan 2.2. Model hitungan atenuasi 2.3. Model hitungan perambatan kebisingan 2.4. Hitungan tingkat kebisingan di setiap titik penerima 3. Penyajian informasi 3.1. Interpolasi titik penerima menggunakan metode gridding 3.2. Estimasi nilai kebisingan di setiap titik grid interpolasi (kriging) 3.3. Penggambaran garis-garis kontur kebisingan (contour line) 3.4. Penggambaran area paparan kebisingan (contour polygon) 3.5. Penyajian paparan kebisingan (noise map) 4. Analisis 4.1. Evaluasi peta kebisingan 4.2. Simulasi takaran tingkat kebisingan (noise dose point) 4.3. Rekomendasi dan pelaporan hasil analisis Berdasarkan pada tahapan studi kebisingan tersebut di atas maka data yang harus disiapkan meliputi: 1. Lokasi area kerja anjungan (Platform, Deck) 2. Objek titik sumber bising (Source Point) 3. Objek titik pengukuran (Receiver Point) 4. Data hasil pengukuran sumber bising (Noise Source) 5. Data hasil pengukuran titik penerima (Noise Received) 6. Data kondisi lingkungan (Environmental) 7. Data pendukung (Color Range, Regulation, Model Parameter) Untuk menyiapkan peta dasar (DeckMap/BaseMap) dilakukan konversi file peta format ESRI Shapefile (*.shp) kedalam script SQL untuk operasi insert data. Fungsi untuk mengkonversi terdapat pada DBMS PostgreSQL/PostGIS dengan sintaks command line, sebagai berikut: #shp2pgsql [
] <shapefile> [<schema>.]
Contoh penggunaan fungsi tersebut dapat dilihat pada Gambar IV-4.
Implementasi Program NoiseMapping _______________________________________ IV-6
Gambar IV-4 Fungsi Konversi Shapefile ke PostgreSQL/PostGIS
IV.5 Diagram Komponen Implementasi NoiseMapping Komponen-komponen sistem hasil analisis dan perancangan ditransformasi menjadi komponen-komponen implementasi, terlihat pada Gambar IV-5.
Gambar IV-5 Diagram Komponen Implementasi NoiseMapping
Implementasi Program NoiseMapping _______________________________________ IV-7
Pada tahap implementasi, NoiseMapping terdiri atas komponen-komponen: 1. Client Control; komponen yang diimplementasikan untuk pengendalian interaksi pengguna dengan sistem direalisasikan sebagai GUI dalam bentuk form-form aplikasi. 2. Database Control; komponen diimplementasikan untuk pengendalian koneksi, akses, dan transaksi data ke database server. 3. Noise Simulator; komponen yang diimplementasikan untuk melaksanakan proses simulasi baik paparan maupun takaran tingkat kebisingan. 4. Map Control; komponen yang diimplementasikan untuk mengendalikan pengelolaan dan penyajian data spasial (peta) baik berupa data masukan maupun hasil simulasi. 5. Spatial Engine; komponen yang berperan dalam proses penggambaran, navigasi, dan analisis data spasial. Pada bagian selanjutnya akan diuraikan implementasi dari unit-unit modul dalam bahasa pemrograman.
IV.6 Penyusunan Unit Dalam Bahasa Pemrograman Delphi merupakan bahasa pemrograman yang mendukung object-oriented. Bahasa pemrograman Delphi berbasiskan Object Pascal. Sebenarnya, Object Pascal bukan bahasa pemrograman berorientasi objek murni, seperti halnya Java. Hal ini dikarenakan kita dapat mendefinisikan variable atau fungsi yang berdiri sendiri, bukan bagian dari suatu objek. Oleh karena itu, Object Pascal sering disebut juga bahasa pemrograman berorientasi objek hybrid (Borland, 2002). Pada bagian Studi Literatur diuraikan dasar-dasar teori tentang konsep pemodelan berorientasi objek. Pada bahasan tersebut tidak menetapkan kebutuhan bahasa pemrograman untuk implementasi, hanya menguraikan tentang konsep-konsep dasar yang harus dipenuhi oleh suatu pemodelan berorientasi objek. Dalam hal ini, bahasa implementasi yang digunakan harus mendukung konsep-konsep tersebut, yaitu: Objek, Kelas, Enkapsulasi,
Implementasi Program NoiseMapping _______________________________________ IV-8
Pewarisan, dan Polimorfisme. Bahasa pemrograman Delphi mendukung semua konsep dasar tersebut (Borland, 2002), (Gonzalez, 1999). Kode sumber Delphi disebut sebagai Unit. Unit adalah kumpulan procedure dan function yang telah dikompilasi dan dapat digunakan oleh unit lainnya. Unit pada Delphi disimpan pada sebuah file yang memiliki perluasan .PAS. Definisi form yang digunakan pada suatu Unit disimpan pada file terpisah yang memiliki perluasan .DFM. File .PAS merupakan file teks (ASCII) sehingga dapat dilihat dengan menggunakan editor teks. Sedangkan file .DFM merupakan file biner sehingga untuk melihatnya harus dibuka pada development tools-nya Delphi. File form (DFM) merupakan implementasi user interface yang memuat komponen beserta properti-propertinya. Terminologi komponen atau objek pada Delphi maksudnya adalah elemen dari form yang menyajikan suatu informasi atau sarana interaksi user untuk melakukan suatu aksi. Misalnya: Label digunakan untuk menyajikan teks yang bersifat statis, Button untuk melakukan aksi proses, kotak Edit untuk menuliskan atau merubah suatu teks tulisan. Komponen-komponen pada Delphi dikelompokkan pada suatu pustaka yang disebut sebagai VCL (Visual Component Library). VCL pada dasarnya adalah enkapsulasi fungsi-fungsi Windows API kedalam komponen-komponen. Satu komponen merupakan representasi dari suatu kelas yang menyediakan informasi-informasi, yaitu: status atau keadaan melalui Property, tindakan melalui Method, dan umpan balik melalui event. Berdasarkan pada diagram komponen (Gambar IV-5), berikut ini adalah unit-unit modul yang membentuk program NoiseMapping (prefiks U baku penamaan untuk file unit dan prefiks T (Type) untuk kelas, berdasarkan pada naming convention Borland Delphi) : 1. UGeometry; memuat kumpulan kelas-kelas untuk tipe data geometri (titik, garis, vertex) dan fungsi-fungsi spasial, misal: hitung jarak, mencari titik potong, dll.
Implementasi Program NoiseMapping _______________________________________ IV-9
2. UMapObject; memuat kelas-kelas data geometri penyusun peta, misal: point, polygon, linestring, label, layer, dll. 3. UMapGrid; memuat kelas-kelas TGrid, TContour, TContourPoint, TContourLine, TContourPolygon, dan TKriging. 4. UNoiseContouring; memuat kelas-kelas: TNoiseSource dan TSimulation representasi objek sumber bising dan fungsi simulasi. 5. UNoiseDM; memuat kelas TNoiseDM untuk melakukan koneksi ke database NoiseMapping. 6. UNoiseDB; memuat kelas TNoiseDB dan fungsi-fungsi operasi dasar pengelolaan data non spasial. 7. UNoiseMap; memuat kelas TNoiseMap, TMapViewer dan fungsi untuk pengelolaan data spasial dan pengaturan visualisasi peta. 8. UMatrix; memuat kelas TMatrik merepresentasikan objek data matrik nilai kebisingan dan fungsi matrik inverse. 9. UVector; memuat kelas TVektor merepresentasikan objek data vektor nilai bobot jarak dan fungsi perkalian matrik vektor. 10. UMainFrm; merupakan kelas utama aplikasi NoiseMapping dengan nama kelas TMain.
IV.6.1 Unit Pengendalian Basis Data Pengendalian basis data diimplementasikan pada file unit modul UNoiseDM yang memuat elemen-elemen interface berupa komponen-komponen yang terkoneksi satu sama lainnya dan setiap komponen memiliki informasi yang berbeda-beda. Berikut ini adalah ilustrasi dari komponen pengendalian basis data, Gambar IV-6.
Gambar IV-6 Komponen Pengendalian Basis Data
Implementasi Program NoiseMapping ______________________________________ IV-10
Keterangan: 1. Database; kumpulan data NoiseMapping baik spasial maupun non spasial yang disimpan secara terpadu dan saling berhubungan. 2. Database Control Component; pustaka pada Delphi yang memuat komponen-komponen untuk koneksi dan akses ke basis data. 3. Data Module; file unit diimplementasikan untuk meletakkan komponen-komponen database yang akan dipakai secara bersamaan dalam aplikasi. 4. Database Connection; komponen basis data yang digunakan untuk melakukan koneksi ke basis data server. 5. Dataset; komponen untuk menampung record-record yang ingin diambil dari basis data. Kumpulan record ini dapat berupa tabel ataupun query. 6. Data Source; interface antara data aware control dan dataset sehingga data yang ada di database dapat ditampilkan pada user interface. 7. UNoiseDB; file unit diimplementasikan memuat kelas-kelas untuk pengaksesan data dan operasi-operasi dasar basis data (insert, update, delete) serta aktivitas pengambilan kembali (retrieval) data (select). 8. Form User Interface; file unit (form) diimplementasikan untuk meletakkan komponen, baik basis data maupun komponen atau kontrol lainnya. Untuk melakukan koneksi ke database server, Database Connection memiliki parameter-parameter, antara lain: Protocol (PostgreSQL), HostName (TCP/IP address), Port (5432), User (Admin), dan Password (admin).
IV.6.2 Unit Penyajian Data Spasial Data spasial disajikan berupa peta dijital tersusun oleh layer-layer data spasial. Setiap layer memiliki tema data dan geometri yang sama. Geometri data berupa titik (point), garis (polyline), dan luasan (polygon). Layer peta dapat dianalogikan sebagai suatu tabel yang menyimpan record-record data spasial. Informasi yang melekat pada layer analogi dengan atribut (field) pada suatu tabel.
Implementasi Program NoiseMapping ______________________________________ IV-11
Komponen penting yang digunakan untuk pengelolaan dan penyajian data spasial adalah Spatial Engine. Berikut ini akan dijelaskan sekilas tentang Spatial Engine; terutama yang berkaitan pada pengembangan prototype perangkat lunak NoiseMapping. Spatial Engine dikembangkan dengan paradigma object-oriented dan ditulis dalam bahasa pemrograman Borland Delphi. Komponen ini dibangun oleh 3 elemen utama, yaitu: 1. TGIS_Viewer; kelas utama; bertanggung jawab untuk semua “dirty work”. Turunan dari kelas ini adalah kelas TGIS_ViewerWND. Kelas turunan ini bertanggungjawab bekerja sama dengan lingkungan GUI (Window/Form). 2. TGIS_LayerAbstract; kelas layer; bertanggung jawab untuk penanganan dan pengelolaan layer-layer peta. Turunan dari kelas ini yang menangani data dalam bentuk vektor (peta garis) adalah TGIS_LayerVector. 3. TGIS_ShapeAbstract; kelas data geometri; turunan dari kelas ini adalah kelas TGIS_Shape dimana setiap data geometri pada layer ditangani oleh kelas ini. TGIS_Shape merupakan agregat dari kelaskelas sesuai tipe geometrinya, yaitu: TGIS_ShapePoint (titik), TGIS_ShapeArc (garis), dan TGIS_ShapePolygon (luasan). Antara tiga elemen utama tersebut, hubungannya adalah viewer memelihara layer dan (vector) layer memelihara shape. Elemen-elemen utama Spatial Engine dijelaskan dalam bentuk Class Diagram, lihat pada Lampiran A. Spatial Engine menggunakan antarmuka GDI (Graphics Device Interface) untuk pemrograman grafisnya. Secara singkat, GDI dapat dikatakan sebagai kumpulan fungsi yang digunakan untuk mengakses atau menggambar ke piranti tertentu, misal layar, printer, dsb. Pada bahasa pemrograman Delphi fungsi-fungsi GDI sudah dienkapsulasi pada kelas TCanvas. Pada setiap komponen atau kontrol Delphi yang dapat “digambari” selalu memiliki properti Canvas sehingga tidak perlu menciptakan objek dari kelas TCanvas (Borland, 2002).
Implementasi Program NoiseMapping ______________________________________ IV-12
Secara umum, ada 3 fungsi utama yang berkaitan dengan penyajian data spasial, yaitu: 1. Create Layer; objek layer diinstansiasi dari kelas TGIS_LayerVector dengan memanggil konstruktor Create. Selanjutnya dilakukan pengaturan properti dari objek layer tersebut mencakup: atribut, parameter data geometri, dan struktur data (field). Objek layer disimpan pada memory sebagai objek List dengan value data objek geometri. 2. Create Shape; objek data geometri (shape) terdiri dari 3 tipe dasar, yaitu: titik, garis, dan luasan. Objek diciptakan dari instansiasi kelas masingmasing tipe geometri: TGIS_ShapePoint, TGIS_ShapeArc, dan TGIS_ShapePolygon dengan memanggil konstruktor Create.
Gambar IV-7 Illustrasi Create Point Shape
Gambar IV-8 Illustrasi Create Polyline (Arc) Shape
Implementasi Program NoiseMapping ______________________________________ IV-13
Gambar IV-9 Illustrasi Create Polygon Shape
3. Build Map; objek peta dibangun dengan susunan satu atau lebih layer dimana layer tersebut memuat objek-objek geometri. Sebelum membangun peta lebih dahulu harus menciptakan objek viewer dari kelas TGIS_Viewer. Selanjutnya layer yang sudah terisi data geometri ditambahkan ke viewer tersebut dengan memanggil prosedur Add ([objek layer]). Sama halnya dengan layer, viewer merupakan struktur List dengan value data adalah layer-layer objek geometri. Visualisasi objek geometri dapat diatur dengan pewarnaan berdasarkan pada suatu tema tertentu. Tema direpresentasikan oleh field layer dan nilai data pada field tersebut direflesikan oleh rentang warna yang ditampilkan. Proses tersebut dikenal sebagai create thematic layer. Prinsip dari tematik adalah dengan mengubah nilai atribut objek geometri (misal: color area) dengan cara tiap objek data geometri pada layer tematik “dikunjungi” (traversing shape). Untuk interaksi dengan peta, Spatial Engine menyediakan fungsi-fungsi navigasi peta meliputi fungsi-fungsi: zooming (zoom all, zoom in, zoom out, zoom window, active zoom), pan, dan object identify. Demikian juga halnya untuk melakukan pengaturan visualisasi setiap layer peta; disediakan fungsi kendali layer yang diimplementasikan pada form Map Legend. Untuk menyimpan dan mengambil data geometri ke dan dari tabel spasial dilakukan dengan menerapkan statement SQL insert…into dan select…from.
Implementasi Program NoiseMapping ______________________________________ IV-14
Data geometri dapat bertipe data teks ataupun biner, seperti diuraikan pada Studi Literatur. Berikut contoh SQL akses data spasial (Ramsey, 2008).
Gambar IV-10 SQL Statement Penyimpanan Data Spasial
Gambar IV-11 SQL Statement Pengambilan Kembali Data Spasial
Elemen-elemen Spatial Engine di-include pada saat implementasi modul UNoiseMap, dimana modul ini adalah realisasi dari komponen Map Control. Pada modul ini terdapat kelas TNoiseMap yang mempunyai prosedur ShowNoiseMap. Prosedur ini bertugas untuk create layer, create shape, dan build map serta mengirimkannya ke client control. Pada bagian selanjutnya dapat dilihat uraian implementasi untuk kelaskelas dan operasi-operasi hasil tahap perancangan.
IV.7 Implementasi Kelas Model Perancangan Pada bagian ini akan diuraikan implementasi kelas-kelas utama yang telah didefinisikan pada tahap perancangan. Kelas utama yang dimaksud adalah kelas-kelas yang digunakan untuk simulasi pemetaan kontur tingkat kebisingan, dienkapsulasi pada modul unit: UNoiseContouring, UMapGrid, dan UNoiseMap.
Implementasi Program NoiseMapping ______________________________________ IV-15
Implementasi atribut dan layanan dari setiap kelas tidak seluruhnya sesuai dengan rancangan karena proses pengembangan NoiseMapping merupakan kombinasi dari waterfall dan prototyping. Hal tersebut menyebabkan atribut dan layanan dari setiap kelas mungkin bertambah atau bahkan dihilangkan.
IV.7.1 Implementasi Kelas TSimulation Kelas TSimulation merupakan turunan dari kelas TObject yang ada pada pustaka Delphi. Semua sifat dari kelas TObject diturunkan ke kelas ini, termasuk prosedur constructor dan destructor yang berfungsi untuk membuat dan menghapus objek dalam kelas. Terdapat dua atribut untuk kelas ini, yaitu: SourceData dan ReceiverData, merupakan data container yang berisi, masing-masing; data sumber dan penerima bising. SourceData adalah list yang berisi objek data sumber bising dari kelas TSourceOfNoise. Sedangkan ReceiverData adalah larik data simulasi penerima bising dengan tipe data bentukan (Abstract Data TypeADT) TDataSimulation. Prosedur CalcAttenuation akan menghitung besarnya atenuasi di sumber bising pada masing-masing frekuensi dimana data masukannya terdapat pada entitas Environmental. Hitungan dilakukan dengan menerapkan Persamaan II-3. Fungsi CreateNoiseSimulated akan menghasilkan data grid; objek yang diturunkan dari kelas TDataPoint. Fungsi ini menerapkan metode gridding. Kamus Type TSimulation = class of TObject //atribut ReceiverData : Array of TDataSimulation SourceData : TObjectList //method constructor Create destructor Destroy override function CalcAttenuation(humid,tempr,freq:double) : double function CreateNoiseSimulated : TDataPoint end Program IV-1 Deklarasi Kelas TSimulation
Implementasi Program NoiseMapping ______________________________________ IV-16
Kamus Type TDataSimulation = packed record //member code : integer name : string x,y,cf : double dba,att : real height : real end T3DPoint = //member code label x,y,z,cf end
packed record : integer : string : double
TGriddingParameter = packed record //member xmin,ymin,xmax,ymax,zmin,zmax : double nrows,ncols : integer deltagrid : double end Program IV-2 Deklarasi ADT TDataSimulation, T3DPoint
Kamus Type TSourceOfNoise = class of TObject //atribut name x,y elev,dba,height,ref lw16,lw31,lw63,lw125,lw250,lw500 lw1k,lw2k,lw4k,lw8k,lw16k
: : : : :
string double real real real
//method constructor Create destructor Destroy; override function Cloning : TSourceOfNoise procedure SetData(fx,fy:double; fnoise:real) end TDataPoint = class of TObject //atribut Data numpoints xmin,ymin,xmax,ymax,zmin,zmax gridparam
: : : :
array of T3DPoint integer double TGriddingParameter
//method constructor Create destructor Destroy; override end Program IV-3 Deklarasi Kelas TSourceOfNoise, TDataPoint
Implementasi Program NoiseMapping ______________________________________ IV-17
IV.7.2 Implementasi Kelas TKriging Seperti halnya kelas TSimulation, kelas TKriging merupakan turunan dari TObject. Data simulasi yang dihasilkan kelas TSimulation hanya melibatkan titik pengamatan bising hasil pengukuran di lapangan. Selanjutnya, pada kelas ini terdapat prosedur untuk melakukan interpolasi titik penerima, yaitu GridKriging. Selain melakukan gridding, kelas ini juga berperan untuk membuat kontur, baik garis maupun polygon. Untuk membuat kontur kelas ini memiliki prosedur-prosedure, yaitu: CreateContour, CreateContourLine, dan Build ContourPolygon. Prosedur GridKriging merupakan implementasi dari model kriging, seperti didefinisikan pada Gambar II-2. Untuk menghitung noise pada titik-titik grid interpolasi diterapkan model Akustik, sehingga kelas ini juga merupakan implementasi untuk model pemetaan kebisingan, seperti pada Gambar II-3. Nilai bising hasil interpolasi disimpan dalam bentuk matriks dan data tersebut merupakan titik-titik kontur (contourpoints) sebagai acuan untuk penggambaran garis-garis dan polygon kontur kebisingan. Atribut-atribut kelas TKriging berasal dari entitas ContourParameter. Untuk mendukung kelas ini didefinisikan ADT dan kelas lain yang diperlukan. Deklarasi kelas TKriging beserta ADT dan kelas pendukung dideskripsikan sebagai berikut.
Implementasi Program NoiseMapping ______________________________________ IV-18
Kamus Type TMatriks = array of array of double //member dim : integer elemen : double end TContourPoint = record //member valueindex : integer x,y : double end TContour = class of TObject //atribut valueindex : integer polylines : TObjectList //method constructor Create destructor Destroy; override end TIndex = record i : integer Value : double end Program IV-4 Deklarasi ADT TMatriks, TContourPoint
Kamus Type TKriging = class of TObject //atribut griddescriptor : string nrows,ncols : integer xmin,ymin,xmax,ymax,zmin,zmax : double values : TMatriks contourvalues : array of double empty : array [0..MAXROW-1,0..MAXCOL-1] of integer //method constructor Create destructor Destroy; override procedure GridKriging(scale,length:double; searchpoint:integer; data : TDataPoint) procedure GridInvDistance(powerfactor,searchpoint:integer; data:TDataPoint) procedure CreateContour(val:double; polylines:TObjectList) procedure CreateContours(zmin,zinterval:double; contours:TObjectList) procedure CreateContourLines(contours:TObjectList; contourlines:TContour; closedcontours:TObjectList) procedure BuildContourPolygon(contours:TContour; closedcontours,contourpolygon: TObjectList) end Program IV-5 Deklarasi Kelas TKriging
Implementasi Program NoiseMapping ______________________________________ IV-19
IV.7.3 Implementasi Kelas TNoiseMap Kelas TNoiseMap berperan dalam penggambaran kontur, baik contour line maupun contour polygon. Kelas ini menerima masukan berupa contour point yang dihasilkan oleh kelas TKriging. Entitas yang terlibat pada kelas ini yaitu RangeColor; definisi pewarnaan contour polygon. Kelas TNoiseMap meng-include kelas-kelas lain yang terdapat pada Spatial Engine. Unit Spatial Engine merupakan komponen yang memuat kelas-kelas yang memiliki atribut, fungsi, dan prosedur untuk keperluan pengelolaan objek grafis peta. Atribut kelas TNoiseMap adalah: mapviewer, polygonlayer, polylinelayer. Untuk prosedur-prosedur mencakup: CreateLayer, AddLayer, ShowLayer, dan CreateThemeLayer. Kelas-kelas pendukung kelas TNoiseMap, antara lain: TContourLine dan TContourPolygon. Berikut adalah deskripsi deklarasi kelas TNoiseMap beserta kelas-kelas pendukungnya. Kamus Type TContourLine = class of TObject //atribut valueindex : integer fpoints : array of TContourPoint ContourValues : double //method constructor Create destructor Destroy; override procedure AddPoint(P:TContourPoint) procedure GetPoint(i:integer) : TContourPoint procedure SetPoint(i:integer; val:TContourPoint) function GetCount : integer end TContourPolygon = class of TObject //atribut valuendex : integer fpolygons : TObjecList ContourValues : double //method constructor Create destructor Destroy; override function ExtractPolygon : TObjecList property Polygon : TObjectList read FPolygons end Program IV-6 Deklarasi Kelas TContourLine, TContourPolygon
Implementasi Program NoiseMapping ______________________________________ IV-20
Kamus Type TRangeColorContours = class of TObject //atribut private FFrom : integer FTo : integer FFillStyle : TSBrushPattern FFillColor : TColor public property From: integer read FFrom write FFrom property To_: integer read FTo write FTo property FillStyle: TSBrushPattern read FFillStyle write FFillStyle; property FillColor: TColor read FFillColor write FFillColor; end Program IV-7 Deklarasi Kelas TRangeColorContours
Kamus Type TNoiseMap = class //atribut mapviewer : polygonlayer : polylinelayer :
of TObject TPanel TContourPolygon TContourLine
//method constructor Create destructor Destroy; override procedure CreateLayer(layer:TContourLayer) procedure CreateContour(zmin_,zInterval:double; Contours:TObjectList) procedure AddLayer(mappanel:TPanel; layer:TContourLayer) procedure ShowLayer(mappanel:TPanel; layerlist:TComboBox) procedure CreateThemeLayer(layer:TContourLayer; fieldname:string) end Program IV-8 Deklarasi Kelas TNoiseMap
IV.8 Implementasi Operasi Model Perancangan Berdasarkan arsitektur sistem (Gambar III-2), NoiseMapping terdiri atas 4 sub sistem. Dari 4 sub sistem tersebut, sub sistem 1 (Project Management) dan sub sistem 2 (Set Location) merupakan sub sistem-sub sistem yang dibangun untuk mengelola data studi kasus sehingga sifatnya pre-defined; diasumsikan sudah tersedia dan siap digunakan untuk keperluan simulasi. Dengan demikian, operasi-operasi (fungsi atau prosedur) model perancangan yang akan diimplementasikan hanya untuk sub sistem 3 (Noise Contouring) dan sub sistem 4 (Noise Dose Calculation).
Implementasi Program NoiseMapping ______________________________________ IV-21
Seperti telah dijelaskan pada sub bab III.2.1.3; sub sistem Noise Contouring dimodelkan sebagai use-case Mapping Noise dan pada sub bab III.2.1.4 sub sistem Noise Dose Calculation dimodelkan sebagai use-case Calculate Noise Dose. Interaksi client-server untuk kedua use-case tersebut diilustrasikan kembali dalam kerangka sistem NoiseMapping secara komprehensif, dapat dilihat pada Gambar IV-12.
Gambar IV-12 Interaksi Client-Server Fungsionalitas Utama
Implementasi Program NoiseMapping ______________________________________ IV-22
Implementasi model use-case Mapping Noise mencakup algoritma-algoritma yang terlibat pada proses pemetaan tingkat kebisingan, yaitu: penyiapan data simulasi (CreateNoiseSimulated), interpolasi Kriging (GridKriging), pemetaan kebisingan (ShowNoiseMap). Sedangkan use-case Calculate Noise Dose diimplementasikan pada algoritma hitungan takaran kebisingan (CalcNoiseDose). Masing-masing algoritma telah dirumuskan modelnya; pada setiap gambar, secara berturut-turut, yaitu: Gambar II-1, II-2, II-3, dan II-4.
IV.8.1 Implementasi Use-Case MappingNoise Berikut ini adalah pseudo-code implementasi Model Akustik Tingkat Kebisingan, dimana aliran proses dan data sudah dijelaskan seperti pada skema Gambar II-1. function CreateNoiseSimulated(input RNoise:array of TDataSimulation; input TblEnviro:TTable)TDataPoint {menghitung nilai bising (dBA) di setiap titik receiver (noisereceived) I.S : data environmental tidak null, data receiverpoint tidak null F.S : setiap titik receiver memiliki nilai bising (dBA)} DEKLARASI Result,NRData SNoise i,j LPTotal,LP1,LP2,R,dBA,h,T
: : : :
TDataPoint TSourceOfNoise integer double
function CalcAtt(input humid, input temper, input freq:double)double {mengembalikan nilai efek atenuasi untuk setiap frekuensi nilai bising} DESKRIPSI //inisialisasi nilai fungsi Result Nil //inisialisasi data noisreceived NRDataTDataPoint.Create //membuat objek data noisereceived SetLength(NRData.Data,Length(Data)) //mendefinisikan dimensi array data //memasukkan data noisereceived ke peubah NRData for i0 to Length(data) do NRData.Data[i].codeRNoise[i].code NRData.Data[i].labelRNoise[i].name NRData.Data[i].xRNoise[i].x NRData.Data[i].yRNoise[i].y NRData.Data[i].zRNoise[i].dba NRData.Data[i].cfRNoise[i].cf endfor //men-set nilai humidity(h) dan temperature(T) untuk hitungan atenuasi hTblEnviro.RH TTblEnviro.Temperature //menghitung noise setiap titik receiver pengaruh dari source of noise for i0 to Length(Data) do
Implementasi Program NoiseMapping ______________________________________ IV-23
LPTotal0 //inisialisasi noise total for j0 to SourceData.count-1 do SNoise TSourceOfNoise(SourceData[j]) //mendefinisikan noisesource LP1SNoise.dba //set nilai noise untuk LP1 //menghitung jarak antara titik penerima dengan titik sumber RSQRT(SQR(Data[i].x-SNois.x)+SQR(Data[i].y-SNoise.y)+ SQR(Data[i].height-SNois.height)) LP220*log10(R/SNoise.ref) //nilai noise akibat source ke-j dBA0 //inisialisasi dBA akumulator //hitung noise di setiap frekuensi dengan melibatkan efek atenuasi //dan konstanta konversi satuan dB ke dBA (lihat Tabel II-1) dBAdBA+power(10,((SNoise.lw16-LP2-CalcAtt(h,T,16))-56.7)/10) dBAdBA+power(10,((SNoise.lw31-LP2-CalcAtt(h,T,31.5))-39.4)/10) dBAdBA+power(10,((SNoise.lw63-LP2-CalcAtt(h,T,63))-26.3)/10) dBAdBA+power(10,((SNoise.lw125-LP2-CalcAtt(h,T,125))-16.1)/10) dBAdBA+power(10,((SNoise.lw250-LP2-CalcAtt(h,T,250))-8.6)/10) dBAdBA+power(10,((SNoise.lw500-LP2-CalcAtt(h,T,500))-3.2)/10) dBAdBA+power(10,((SNoise.lw1000-LP2-CalcAtt(h,T,1000)))/10) dBAdBA+power(10,((SNoise.lw2000-LP2-CalcAtt(h,T,2000))-1.2)/10) dBAdBA+power(10,((SNoise.lw4000-LP2-CalcAtt(h,T,4000))-1.0)/10) dBAdBA+power(10,((SNoise.lw8000-LP2-CalcAtt(h,T,8000))-1.1)/10) dBAdBA+power(10,((SNoise.lw16000-LP2-CalcAtt(h,T,16000))-6.6)/10) dBA10*log10(dBA) //konversi dari satuan dB ke dBA LPTotalLPTotal + power(10,dBA/10) //noise per satu sumber noise endfor LPTotal10*log10(LPTotal) - data[i].cf //noise total seluruh sumber NRData.Data[i].zLPTotal //nilai noise total per titik receiver endfor //mendefinisikan nilai fungsi NRData.numpointsLength(Data) ResultNRData Program IV-9 Algoritma Hitungan Tingkat Kebisingan function CalcAtt(input humid, input temper, input freq:double)double {mengembalikan nilai efek atenuasi untuk setiap frekuensi nilai bising I.S : tidak ada F.S : nilai efek atenuasi setiap frekuensi sumber bising} DEKLARASI const T0 : double = 293.15 Result,Fro,Frn,Alfa : double DESKRIPSI //inisialisasi nilai fungsi Result0.0 //implementasi Persamaan II-4 Fro2.4+4.04*1e+4*humid*((0.02+humid)/(0.391+humid)) //implementasi Persamaan II-5 Frn1/SQRT(temper/T0)*(9+280*humid*exp(-4.17*(temper/T0)-1)) //implementasi Persamaan II-3 Alfa869*SQR(freq)* (1.84*1e-11*SQRT(temper/T0)+power (temper/T0,-2.5)* (0.01275*(exp(-2239.1/temper)/(Fro+SQR(freq)/Fro))+ 0.1068*(exp(-3352/temper)/(Frn+SQR(freq)/Frn)))) //mendefinisikan nilai fungsi Result(Alfa*R)/1000 Program IV-10 Algoritma Hitungan Attenuation Excess
Implementasi Program NoiseMapping ______________________________________ IV-24
Algoritma interpolasi kriging merupakan implementasi model kriging untuk menghasilkan data grid titik-titik receiver. Algoritma ini merupakan salah satu metode dalam kelas TKriging; sebagai prosedur GridKriging. Deskripsi algoritma mengacu pada model yang telah dijelaskan Gambar II-2. Berikut adalah pseudo- code dari algoritma interpolasi kriging. procedure GridKriging(input scale, input length:double; input searchpoints:integer; input/output data:TDataPoint) {membuat data grid interpolasi titik-titik receiver I.S : data receiver point tidak null F.S : terbentuk data grid hasil interpolasi } DEKLARASI Index i,j,row,col,N,M dx,dy,x,y,TotalP,TotalQ,D,V,cov P,Q found covariances1,covariances2,DataList,weight
: : : : : :
TIndex integer double T3DPoint boolean TMatriks
procedure SortIndex(var A:array of TIndex; input iLo,input iHi:integer) procedure Inverse(input/output N:TMatriks; input dimensi:integer) DESKRIPSI //inisialisasi parameter grid; atribut kelas TKriging xmindata.gridparam.xmin ymindata.gridparam.ymin xmaxdata.gridparam.xmax ymaxdata.gridparam.ymax nrowsdata.gridparam.nrows ncolsdata.gridparam.ncols //inisialisasi dimensi matriks values; atribut kelas TKriging SetLength(values,nrows) for i0 to nrows-1 do SetLength(values[i],ncols) endfor //inisialisasi indeks SetLength(Index,data.numpoints) //mendefinisikan spasi absis dan ordinat dx(xmax-xmin)/(ncols-1) dy(ymax-ymin)/(nrows-1) //membuat titik-titik grid yymin //inisialisasi nilai y awal for row0 to nrows-1 do xxmin //inisialisasi nilai x awal for col0 to ncols-1 do //pengurutan indeks data terhadap jarak (x,y) for i0 to data.numpoints-1 do Pdata.Data[i] Index[i].ii Index[i].ValueSQRT((P.x-x)*(P.x-x)+(P.y-y)*(P.y-y)) endfor SortIndex(Index,0,data.numpoints-1)
Implementasi Program NoiseMapping ______________________________________ IV-25
//hitung inverse distance untuk (row,col) TotalP0 TotalQ0 foundFalse Nsearchpoints if N>data.numpoints then Ndata.numpoints endif MN SetLength(covariances1,N+1) for i0 to N do SetLength(covariances1[i],M+1) endfor SetLength(covariances2,N+1) SetLength(DataList,N+1) for i0 to N-1 do Pdata.Data[Index[i].i] DIndex[i].Value if D=0 then foundTrue VP.z Break endif DataList[i]P.z for j0 to M-1 do Qdata.Data[Index[j].i] if j=i then cov1 else covlength*SQRT((P.x-Q.x)*(P.x-Q.x)+ (P.y-Q.y)*(P.y-Q.))+scale endif covariances1[i,j]cov endfor covlength*SQRT((P.x-x)*(P.x-x)+(P.y-y)*(P.y-y))+scale covariances2[i]cov endfor if not found then for i0 to N do if iN then covariances1[i,i]0 else covariances1[i,N]1 covariances1[N,i]1 endif endfor covariances2[N]1 Inverse(covariance1,N+1) SetLength(weight,N+1) for i0 to N do weight[i]0.0 for j1 to M do weight[i]weight[i]+covariances1[i,j]*covariances2[j] endfor endfor V0.0 for i0 to N-1 do VV+weight[i]*DataList[i] endfor
Implementasi Program NoiseMapping ______________________________________ IV-26
values[row,col]V else values[row,col]V endif xx+dx endfor yy+dy endfor Program IV-11 Algoritma Interpolasi Kriging procedure SortIndex(var A:array of TIndex; input iLo,input iHi:integer) {mengurutkan indeks elemen sebuah matrik I.S : terdapat elemen matrik F.S : elemen matrik berindeks secara terurut } DEKLARASI Lo,Hi Mid,T
: integer : TIndex;
DESKRIPSI //inisialisasi indeks LoiLo HiiHi MidA[(Lo+Hi) div 2] //mulai pengurutan repeat while A[Lo].Value < Mid.Value do Inc(Lo) endwhile while A[Hi].Value > Mid.Value Dec(Hi) endwhile if Lo <= Hi then TA[Lo] A[Lo]A[Hi] A[Hi]T Inc(Lo) Dec(Hi) endif until Lo > Hi if Hi > iLo then SortIndex(A,iLo,Hi) endif if Lo < iHi then SortIndex(A,Lo,iHi) endif Program IV-12 Algoritma Prosedur SortIndex procedure Inverse(input/output N:TMatriks; input dimensi:integer) {melakukan operasi inverse terhadap sebuah matrik I.S : matrik yang akan di-inverse F.S : elemen matrik sudah di-inverse } DEKLARASI k,j,l
: integer
Implementasi Program NoiseMapping ______________________________________ IV-27
DESKRIPSI for k0 to dimensi-1 do for j0 to dimensi-1 do if (j<>k) then N[k,j]N[k,j]/N[k,k] endif endfor N[k,k]1.0/N[k,k] for l0 to dimensi-1 do if (l<>k) then for j0 to dimensi-1 do if (j<>k) then N[l,j]N[l,j]-N[l,k]*N[k,j] endif endfor N[l,k]-N[l,k]*N[k,k] endif endfor endfor Program IV-13 Algoritma Prosedur Inverse Matrik
Algoritma pemetaan kebisingan mengimplementasikan kelas TNoiseMap untuk melakukan penggambaran kontur kebisingan pada panel MapViewer di layar saji utama aplikasi. Perintah penyajian peta kontur kebisingan dibungkus dalam prosedur ShowNoiseMap dengan menerapkan model yang telah dirumuskan seperti dijelaskan pada Gambar II-3. Berikut ini adalah pseudo-code untuk algoritma pemetaan kebisingan yang diimplementasikan sebagai prosedur ShowNoiseMap. procedure ShowNoiseMap(input aGIS:TGISViewer; input aCombo:TComboBox) {menampilkan peta kebisingan pada panel MapViewer di layar saji utama I.S : panel MapViewer kosong tidak memuat peta F.S : panel MapViewer memuat layer-layer kontur kebisingan } DEKLARASI uses SpatialEngine layer,PolygonLayer : TGISLayer Kontour,aPolyline,PolygonKontur : TObjectList zmin,zinterval : double Grid : TKriging aContour, ContourLines : TContour ClosedContours,ContourPolygons : TObjectList i,j,k,N : integer shp : TGISShape ContourColors : array of TColor aContourPolygon : TContourPolygon DESKRIPSI //inisialisasi layer contourline layerTGISLayer.Create layer.Name’ContourLine’
Implementasi Program NoiseMapping ______________________________________ IV-28
aGIS.Add(layer) //set atribut layer contourline layer.AddField(‘dBA’,string,15) //setting tampilan layer contourline with layer.Params do with Labels do Field’dBA’ ColorclBlack Position[gisLabelPositionFlow] AlignmentgisLabelAlignmentFollow OutlinePatternbsClear PatternbsClear endwith Line.ShowLegendTrue endwith //mendefinisikan dan membuat garis kontur KonturTObjectList.Create(False) Grid.CreateContours(zmin,zinterval,Kontur) //mendefinisikan dan menambahkan objek spasial ke layer contourline for i0 to Kontur.Count-1 do aContourTContour(Kontur[i]) for jaContour.Polylines.Count-1 downto 0 do aPolylineTObjectList(aContour.Polylines[j]) shplayer.CreateShape(gisShapeTypeArc) //membuat objek spasial shp.Lock(gisLockExtent) shp.AddPart for k0 to aPolyline.Count-1 do shp.AddPoint(GISPoint(aPolyline.Points[k].X, aPolyline.Points[k].Y)) endfor shp.SetField(‘dBA’,Grid.ContourValues[aContour.ValueIndex]) shp.UnLock endfor endfor //mendefinisikan dan membuat polygon kontur PolygonKonturTObjecList.Create(True) ContourLinesTContour.Create ClosedContoursTObjectList.Create(False) Grid.CreateContourLines(Kontur,ContourLines,ClosedContours) ContourPolygonsTObjectList.Create(True) Grid.BuildContourPolygon(ContourLines,ClosedContours,ContourPolygons) NLength(Grid.ContourValues) SetLength(ContourColors,N) //setting pewarnaan objek polygon kontur for i0 to N-1 do j0 while (j
Implementasi Program NoiseMapping ______________________________________ IV-29
//membuat layer polygon kontur PolygonLayerTGISLayer.Create PolygonLayer.Name’ContourPolygon’ PolygonLayer.Params.Tansparency100 aGIS.Add(PolygonLayer) //set field layer polygon kontur with PolygonLayer do AddField(‘FillColor’,integer) AddField(‘High_Noise’,float) AddField(‘Low_Noise’,float) endwith //membuat dan menambahkan objek spasial polygon kontur for iContourPolygons.Count-1 downto 0 do aContourPolygonTContourPolygon(ContourPolygons[i]) if Grid.ContourValues[aContourPolygon.ValueIndex-1]
IV.8.2 Implementasi Use-Case Calculate Noise Dose Simulasi takaran kebisingan diimplementasikan sebagai prosedur pada kelas layar utama (TMainForm). Untuk mendukung prosedur ini didefinisikan fungsi hitungan, yaitu prosentase NoiseDose (CalcND) dan TWA (CalcTWA) juga ADT TNoiseDosePoint dan TNoiseDose. Prosedur dan fungsi tersebut menerapkan model simulasi seperti telah dijelaskan pada Gambar II-4. Berikut ini adalah deklarasi untuk ADT dan peusdo-code fungsi-fungsi yang digunakan pada simulasi takaran kebisingan (NoiseDose Simulation).
Implementasi Program NoiseMapping ______________________________________ IV-30
Kamus Type TNoiseDosePoint = record nd_noise, nd_minute : double end TNoiseDose = record OptRegulation : string elmt_ND : array of TNoiseDosePoint ND,TWA : double end Program IV-15 Deklarasi ADT TNoiseDosePoint, TNoiseDose function CalcND(input regulation:string; input noise, input minutes:double)double {mengembalikan nilai prosentase takaran bising I.S : data noise dose point tidak null F.S : nilai prosen ND terdefinisi } DEKLARASI Result,lmeas,tmin : double DESKRIPSI //inisialisasi hasil fungsi Result0.0 //jika regulation==OSHA if regulation=’OSHA’ then lmeas(noise-90)/5.0 tmin480/(Power(2,lmeas)) Result(minutes/tmin)*100 endif //jika regulation==NIOSH if regulation=’NISOH’ then lmeas(noise-85.0)/3.0 tmin480/(Power(2,lmeas)) Result(minutes/tmin)*100 endif Program IV-16 Algoritma Fungsi CalcND function CalcTWA(input regulation:string; input ND:double)double {mengembalikan nilai TWA; rata-rata kebisingan I.S : data noise point tidak null F.S : nilai TWA terdefinisi } DEKLARASI Result : double DESKRIPSI //inisialisasi hasil fungsi Result0.0 //jika regulation==OSHA if regulation=’OSHA’ then ResultLogN(16.6,ND/100)+90 endif
Implementasi Program NoiseMapping ______________________________________ IV-31
//jika regulation==NIOSH if regulation=’OSHA’ then Result10*(log10(ND/100))+85 endif Program IV-17 Algoritma Fungsi CalcTWA
procedure CalcNoiseDose(input/output NoiseDoseList:TNoiseDose) { mengembalikan nilai prosentase Noise Dose (ND) dan rerata bising (TWA) I.S : elemen noise dose point tidak null F.S : nilai ND dan TWA terdefinisi } DEKLARASI i : integer tmp_ND,tmp_TWA : double DESKRIPSI //inisialisasi akumulator tmp_ND, nilai ND dan TWA tmp_ND0.0 NoiseDoseList.ND0.0 NoiseDoseList.TWA0.0 //looping hitung ND for i0 to NoiseDoseList.Count-1 do tmp_NDtmp_ND + CalcND(NoiseDoseList.elmt_ND[i].OptRegulation, NoiseDoseList.elmt_ND[i].nd_noise, NoiseDoseList.elmt_ND[i].nd_minute) endfor //hitung TWA tmp_TWACalcTWA(NoiseDoseList.OptRegulation,tmp_ND) //mendefinisikan hasil hitungan, memasukkan nilainya ke NoiseDoseList NoiseDoseList.NDtmp_ND NoiseDoseList.TWAtmp_TWA Program IV-18 Algoritma Simulasi Takaran Kebisingan
IV.9 Implementasi Antarmuka Sistem-Pengguna Berdasarkan Gambar IV-12, antarmuka sistem-pengguna; berupa layar saji (form-GUI), yang harus diimplementasikan, antara lain: form BrowseProject, form Main (SelectLocation), form NoiseContouringWizard, form Main (panel MapViewer), form Create Noise Dose Simulation, dan form Pick Noise Dose Point. Berikut ini adalah snapshot dari hasil implementasi antarmuka tersebut.
Implementasi Program NoiseMapping ______________________________________ IV-32
Gambar IV-13 Form Browse NoiseMapping Project
Gambar IV-14 Form Select Location (Platform, Deck)
Gambar IV-15 Form NoiseContouring Wizard
Implementasi Program NoiseMapping ______________________________________ IV-33
Gambar IV-16 Form Main; Map Viewer
Gambar IV-17 Form NoiseDose Simulation