L1
Lampiran 1 – Singkatan yang digunakan
1. Data Units
• NM = Nautical Miles
• Kts = Knots
2. Glosarium
• Flight Plan = Informasi mengenai penerbangan dan pesawa
terbang termasuk rute penerbangan, ketinggian pesawat,
kecepatan pesawat dan tipe serta peralatan dari pesawat.
• Repetitive Flight Plan Listing= Informasi penerbangan untuk
memberikan data jadwal keberangkatan dan kedatangan
maskapai penerbangan yang diterbitkan untuk menara ATC.
Lampiran 2 Kerangka Database
Tabel : filter2
Field
Type
Extra
Primary id
smallint
(10)
jarak
double(14,10)
Allow
Null
Tabel : final
Field
Type
Extra
Primary id
bigint(10)
Auto
Increment
eto
datetime
Allow
Null
distance
double(55,2)
Allow
Null
Tabel : hasil
Field
Type
Extra
Primary id
int(5)
Auto
Increment
callsign
varchar(255)
Allow
Null
aircraft_type
varchar(10)
Allow
Null
dof
date
Allow
Null
fixes
varchar(20)
Allow
Null
lon
double(14,10)
Allow
Null
eto
datetime
Allow
Null
afl
double(5,2)
Allow
Null
speed
double
(6,3)
Tabel : hasil_fixes
Field
Type
Extra
Primary id
int(5)
Auto
Increment
callsign
varchar(255)
Allow
Null
aircraft_type
varchar(10)
Allow
Null
dof
date
Allow
Null
fixes
varchar(20)
Allow
Null
lat
double(14,10)
Allow
Null
lon
double(14,10)
Allow
Null
eto
datetime
Allow
Null
afl
double(5,2)
Allow
Null
speed
double
(6,3)
Tabel : step1
Field
Type
Extra
Primary
id
smallint (11)
Auto Increment
datetime
datetime
Tabel : step2
Field
Type
Extra
Primary callsign varchar(55)
Allow
Null
lat
double(14,10)
Allow
Null
lon
double(14,10)
Allow
Null
Lampiran 3Technical Note
TECHNICAL NOTE
TN-001
Kajian Layanan Penerbangan
CNS - ATM
Pembuatan jalur pesawat
Dalam aplikasi Simulasi Tabrakan Pesawat (STP), jalur pesawat ditentukan melalui dua file yang berisi koordinat jalur A576 yaitu East.txt yang berisi jalur pesawat dari Singapura ke Bali dan West.txt yang berisi jalur pesawat dari Bali ke Singapura.
Koordinat yang diterima oleh aplikasi STP ditunjukkan dengan garis berwarna ungu, yang diproses menjadi list jalur pesawat dengan kode pemograman sebagai
berikut :
publicList<Point> BuatJalur(PlaneDirection planeDirection) {
var fileName = "East.txt";
if (planeDirection == PlaneDirection.West) fileName = "West.txt";
var temp = newList<Point>();
using (var reader = newStreamReader(fileName)) {
string line;
while (!string.IsNullOrEmpty(line = reader.ReadLine())) {
var splitted = line.Split(',');
var point = newPoint { X = Convert.ToDouble(splitted[0]), Y = Convert.ToDouble(splitted[1]) };
temp.Add(point); }
} }
Dan contoh format posisi jalur 713.317504961253,644.478419029683 dimana posisi pertama menunjukkan titik koordinat X dan posisi kedua menunjukkan titik koordinat Y pada layar peta aplikasi STP.
TECHNICAL NOTE
TN-002
Kajian Layanan Penerbangan
CNS - ATM
Menjalankan Simulasi
Dalam menjalankan simulasi, aplikasi Simulasi Tabrakan Pesawat (STP) akan men-generateobjek pesawat dengan properties sebagai berikut :
- AirplaneName
Nama callsign pesawat yang akan menunjukkan arah penerbangan pesawat dengan nama GA_{arah}_{counter}, arah menunjukkan apakah posisi bergerak ke barat atau ke timur dan counter menunjukkan nilai objek ke berapa selama simulasi berlangsung
- DisplayLatitude
Posisi latitude pesawat secara realtime pada saat itu. - DisplayLongitude
Posisi longitude pesawat secara realtime pada saat itu. - GroundSpeed
Nilai kecepatan pesawat dalam satuan pengukuran km/h. - FlightLevel
Nilai ketinggian pesawat dalam satuan pengukuran feet. - Waypoints
Menunjukkan list jalur pesawat yang akan disimulasikan
Setelah objek dan jalur disiapkan maka simulasi akan dijalankan dengan memproses informasi dari inputan user dalam aplikasi yakni :
Dalam gambar di atas menunjukkan : - Lama simulasi(jam)
Nilai lamanya simulasi akan dijalankan dalam satuan jam, dalam gambar di atas simulasi akan berjalan selama satu bulan dengan lama simulasi yaitu 720 jam.
- Spawn setiap(menit)
Nilai pemunculan objek pesawat, dalam hal ini mempresentasikan jadwal keberangkatan pesawat ke masing-masing tujuan.
- AFL (Airpnale Flight Level)
Nilai standart ketinggian pesawat sesuai asal bandara pesawat tersebut, nilai selisih ketinggian pesawat tersebut akan menjadi nilai Separation Standard yang ingin diberlakukan.
- Interval Data
Lama data yang akan direkam ke dalam database, dalam nilai diatas data akan diperoleh setiap satu detik.
Setelah itu setiap data dari simulasi ini akan dimasukkan ke dalam database “hasil” yang merupakan data mentah simulasi yang kemudian di filter menjadi data Traffic Sample Data (TSD) untuk digunakan kemudian dalam menghitung nilai Total Level of Safety (TLS).
TECHNICAL NOTE
TN-003
Kajian Layanan Penerbangan
CNS - ATM
Format database hasil simulasi
Hasil data simulasi di simpan ke dalam dua database yang berbeda yakni table “hasil” dan table “hasil_fixes”. Table “hasil” ini berisi data mentah / hasil radar dari hasil simulasi sedangkan table “hasil_fixes” ini merupakan data yang telah di-filter sehingga mendekati format Traffic Sample Data (TSD) dimana posisi setiap pesawat hanya akan dicatat merupakan posisi pesawat yang paling dekat dengan Waypoint di sepanjang jalur A756 yakni aktod, sanos, liana, apari, apaga, akula, sabil, sumbu, siput.
Format data table “hasil” dan “hasil_fixes” dibuat dengan query sebagai berikut :
DROP TABLE IF EXISTS `nama_table`; CREATE TABLE `nama_table` (
`id` int(5) NOT NULL auto_increment, `callsign` varchar(10) default NULL, `aircraft_type` varchar(10) default NULL, `dof` date default NULL,
`fixes` varchar(20) default NULL, `lat` double(8,0) default NULL, `lon` double(8,0) default NULL, `eto` datetime default NULL, `afl` double(6,0) default NULL, PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Dalam mem-filter data simulasi menjadi data TSD digunakan kode pemograman sebagai berikut :
{
{"AKTOD",newGeoCoordinate {Latitude = 0.713333, Longitude = 105.993056}},
{"SANOS",newGeoCoordinate {Latitude = 0.7, Longitude = 106.316667}}, {"LIANA",newGeoCoordinate {Latitude = 1.4773, Longitude = 107.1983}}, {"APARI",newGeoCoordinate {Latitude = 2.043411, Longitude =
107.340383}},
{"APAGA",newGeoCoordinate {Latitude = 2.782675, Longitude = 108.580897}},
{"AKULA",newGeoCoordinate {Latitude = 3.119878, Longitude = 108.950925}},
{"SABIL",newGeoCoordinate {Latitude = 4.019069, Longitude = 109.938528}},
{"SUMBU",newGeoCoordinate {Latitude = 4.755, Longitude = 110.823333}},
{"SIPUT",newGeoCoordinate {Latitude = 6.283333, Longitude = 112.583333}}
};
var hasils = (from p inActiveRecordLinq.AsQueryable<Hasil>() select p).ToList().GroupBy(c => c.CallSign).ToList();
using (newSessionScope()) {
foreach (var hasil in hasils) {
var values = hasil.ToList(); var idxKiri = 0;
foreach (var fixTower in listTower) {
var tempNearest = double.MaxValue; var fix = newHasilFix();
foreach (var value in values) {
var tempCoor = newGeoCoordinate { Latitude = value.Latitude, Longitude = value.Longitude };
var jarak = tempCoor.GetDistance(fixTower.Value); if (jarak < tempNearest) { tempNearest = jarak; fix.AircraftType = value.AircraftType; fix.AssignFlightLevel = value.AssignFlightLevel; fix.CallSign = value.CallSign; fix.DateOfFlight = value.DateOfFlight; fix.EstimatedTimeOver = value.EstimatedTimeOver; fix.Fixes = fixTower.Key; fix.GroundSpeed = value.GroundSpeed; fix.Latitude = value.Latitude; fix.Longitude = value.Longitude; } } fix.Create(); } } } }
TECHNICAL NOTE
TN-004
Kajian Layanan Penerbangan
CNS - ATM
Merubah koordinat X,Y menjadi Latitude, Longitude
Dalam mencatat posisi pesawat dalam aplikasi Simulasi Tabrakan Pesawat (STP), setiap posisi pesawat pada mulanya memakai koordinat X dan koordinat Y gambar EnRoute A576 dalam aplikasi.
Dengan asumsi bahwa jalur pesawat dianggap garis lurus terhadap peta, lalu di belokkan sesuai jalur A576. Yang ditunjukkan dengan illustrasi gambar di bawah ini :
Ratio pada kode di atas merupakan derajat pergeseran yang dibutuhkan untuk menyesuaikan jalur lurus yang bewarna merah menjadi jalur A756 yang bewarna ungu. Agar koordinat pesawat sejalan dengan jalurnya baik dari arah Singapura ke Bali demikian juga sebaliknya maka dilakukan perhitungan sebagai berikut :
Untuk jalur Latitude : 0.90354 – RATIO X Posisi Latitude Untuk jalur Longitude : 104.51456 + RATIO X Posisi Longitude
di Singapura. Posisi koordinat X,Y dapat dirubah menjadi koordinat Lat, Lon melalui kode pemograman sebagai berikut :
privateconstdouble RATIO = 0.0152033228346457;
publicdouble DisplayLatitude{ get { return 0.90354 - RATIO*CurrentLatitude;}} publicdouble DisplayLongitude{ get { return 104.51456 +
TECHNICAL NOTE
TN-005
Kajian Layanan Penerbangan
CNS - ATM
Menghitung jarak antar pesawat
Untuk menghitung jarak antar pesawat dilakukan dengan formula Haversine di bawah ini :
sin sin ∆
Gambar 3. Haversin Formula dimana :
• haversin = ( • R = jari-jari bola
• = poin latitude pertama • = poin latitude kedua • ∆ = separasi longitude
Kemudian dilakukan berulang ke setiap pesawat pada saat waktu penerbangan seperti yang ditunjukkan pada gambar 1 dengan asumsi pada saat itu terdapat empat pesawat dari hasil query di database.
Gambar 1 Looping logic
dengan kode pemograman sebagai berikut :
var hasils = (from p inActiveRecordLinq.AsQueryable<Hasil>() select p).ToList().GroupBy(c => c.EstimatedTimeOver).ToList(); var radius = 3440.27694;
foreach (var hasil in hasils) {
var values = hasil.ToList(); var idxKiri = 0;
foreach (var value in values) {
for (int i = idxKiri + 1; i < values.Count; i++) {
var valueKanan = values[i];
var inner = Math.Cos(Radian(value.Latitude)) *
Math.Cos(Radian(valueKanan.Latitude)) * Math.Cos(Radian(valueKanan.Longitude) - Radian(value.Longitude)) + (Math.Sin(Radian(value.Latitude)) * Math.Sin(Radian(valueKanan.Latitude))); var acos = Math.Acos(inner);
var distance = radius * acos; if (double.IsNaN(distance)) distance = 0;
_worker.ReportProgress(i);
newDataFinal { Distance = distance, EstimatedTimeOver = hasil.Key }.Create(); }
idxKiri++; }
TECHNICAL NOTE
TN-006
Kajian Layanan Penerbangan
CNS - ATM
Metode Random dengan Distribusi Laplace
Nilai random untuk mempresentasikan gangguan cuaca atau pilot error dalam simulasi yang mempengaruhi simpangan pesawat, ketinggian pesawat dan kecepatan pesawat menggunakan algoritma distribusi laplace dengan menerapkan fungsi algoritma George Marsaglia MWC yang menggunakan unsigned integer.
Untuk menggunakan metode random ini, diperlukan dua inputan sebagai komponen dalam menghasilkan nilai random yang akan dipakai yaitu melalui nilai Mean dan nilai Scale yang sebelumnya telah ditentukan melalui aplikasi Simulasi Tabrakan Pesawat (STP) yang ditunjukkan pada gambar dibawah :
Gambar Menu input distribusi laplace
Fungsi ini terintegrasi pada aplikasi STP dengan kode pemograman sebagai berikut :
publicstaticvoid SetSeed(uint u, uint v) {
if (u != 0) _mW = u; if (v != 0) _mZ = v; }
publicstaticvoid SetSeed(uint u) { _mW = u; }
publicstaticvoid SetSeedFromSystemTime() { var dt = DateTime.Now;
var x = dt.ToFileTime();
SetSeed((uint)(x >> 16), (uint)(x % 4294967296)); } publicstaticdouble GetUniform() { uint u = GetUint(); return (u + 1.0) * 2.328306435454494e-10; } privatestaticuint GetUint() { _mZ = 36969 * (_mZ & 65535) + (_mZ >> 16); _mW = 18000 * (_mW & 65535) + (_mW >> 16); return (_mZ << 16) + _mW; } publicstaticdouble GetNormal() { // Use Box-Muller algorithm double u1 = GetUniform();
double u2 = GetUniform();
double r = Math.Sqrt(-2.0 * Math.Log(u1)); double theta = 2.0 * Math.PI * u2;
return r * Math.Sin(theta); }
publicstaticdouble GetLaplace(double mean, double scale) { double u = GetUniform();
return (u < 0.5) ?
mean + scale * Math.Log(2.0 * u) : mean - scale * Math.Log(2 * (1 - u)); }
F k s p m j K v v f v v v C
TEC
Faktor longi ketika meng seberapa bes penerbangan maupun pil jalurnya seca Kode pemog var rand = n var result = n for (var i = 1 { var randCon var thePoint var pergeser Convert.ToDCHNICAL
K
F
itudinal untu galami turbu sar pergesera n baik yang lot error. P ara otomatis graman yang ewRandom( newList<Po 1; i < temp.C nstant = rand = newPoint ran = GetLap Double(scaleL NOTE
Kajian Lay
CN
Fungsi ran
uk menentuk ulensi di ud an pesawat a g disebabkan Pesawat yan s. Gambar Vi g digunakan (); int> { temp[ Count - 1; i++ d.Next(-1, 1) t(); place(Conve eLDF.Text))yanan Pen
NS - ATM
ndom jalur
kan besarny dara, nilai in apabila terja n oleh kead ng mengalam isualisasi Lo yaitu : [0] }; +) ; ert.ToDouble ) * GRADIET
nerbangan
M
r pesawat
ya simpangan nputan ini y adi turbulens daan cuaca, mi pergeser ongitudinal e(meanLDF. EN;N-007
n
n pesawat y yang akan m si atau hamb angin dan ran akan k .Text), yang terjadi menentukan atan dalam sebagainya kembali kethePoint.X = temp[i].X + (pergeseran * (randConstant * -1)); thePoint.Y = temp[i].Y + (pergeseran * randConstant); result.Add(thePoint);
}
F k s p m j K p v
TEC
Faktor longi ketika meng seberapa bes penerbangan maupun pil jalurnya seca Kode pemog privatevoid B { _flig _flig var rand = nCHNICAL
K
Fun
itudinal untu galami turbu sar pergesera n baik yang lot error. P ara otomatis graman yang BuatDataFli htLevelsEas htLevelsWe ewRandom(L NOTE
Kajian Lay
CN
ngsi rando
uk menentuk ulensi di ud an pesawat a g disebabkan Pesawat yan s. Gambar g digunakan ightLevels(in st = newdoub est = newdou ();yanan Pen
NS - ATM
om ketingg
kan besarny dara, nilai in apabila terja n oleh kead ng mengalam Visualisasi V yaitu : nt size) ble[size]; uble[size];T
nerbangan
M
gian pesaw
ya simpangan nputan ini y adi turbulens daan cuaca, mi pergeser VertikalN-008
n
wat
n pesawat y yang akan m si atau hamb angin dan ran akan k yang terjadi menentukan atan dalam sebagainya kembali kefor (int i = 0; i < size; i++) {
//var randConstant = rand.Next(-1, 1);
var delta = GetLaplace(Convert.ToDouble(TxtMeanAfl.Text), Convert.ToDouble((TxtScaleAfl.Text)));
_flightLevelsEast[i] = DEFAULTFLIGHTLEVELEAST + delta;//((delta / DEFAULTGROUNDSPEED) * (double)randConstant);
}
for (int i = 0; i < size; i++) {
//var randConstant = rand.Next(-1, 1);
var delta = GetLaplace(Convert.ToDouble(TxtMeanAfl.Text), Convert.ToDouble((TxtScaleAfl.Text)));
_flightLevelsWest[i] = DEFAULTFLIGHTLEVELWEST + delta;//((delta / DEFAULTGROUNDSPEED) * (double)randConstant);
} }
s d m k K p v f v v
TEC
Fakto standard yan dari jalur te mempengaru keberangkat Kode pemog privatevoid B { _grou var rand = n for (int i = 0 { var randCon var delta = GCHNICAL
K
Fun
or lateral un ng dilakukan ersebut dalam uhi kecepa tan hingga ba graman yang BuatDataGr undSpeeds = ewRandom( ; i < size; i+ nstant = rand GetLaplace(CL NOTE
Kajian Lay
CN
ngsi rando
ntuk menent n pada jalur m hal ini k atan pesaw andara tujua Gambar g digunakan oundSpeeds = newdouble (); ++) d.Next(-1, 1) Convert.ToDyanan Pen
NS - ATM
om kecepa
tukan sebera tersebut un khususnya ja wat selam an. Visualisasi yaitu : s(int size) e[size]; ; Double(TxtMT
nerbangan
M
atan pesaw
apa optimal tuk melihat alur A756. N ma penerba Lateral MeanLateral.N-009
n
wat
penerapan nilai optima Nilai inputa angan dari .Text), separation al okupansi an ini akan i bandaraConvert.ToDouble((TxtScaleLateral.Text)));
_groundSpeeds[i] = DEFAULTGROUNDSPEED + ((delta / DEFAULTGROUNDSPEED) * randConstant);
} }
TECHNICAL NOTE
TN-010
Kajian Layanan Penerbangan
CNS - ATM
Menghitung total flight hours
Total jam terbang pesawat dihitung dari jumlah objek pesawat yang melintas pada jalur A576 selama waktu simulasi dikalikan dengan waktu tempuhnya. Dengan perbandingan waktu satu menit di dalam simulasi sama dengan satu jam pada kenyataanya maka waktu tempuh dihitung dalam satuan waktu jam.
Apabila waktu simulasi telah habis dan masih ada pesawat yang berada pada jalur A576 maka jarak yang dihitung adalah jarak yang telah ditempuh pesawat tersebut. Dengan mengurangi waktu tempuh normal dengan waktu tempuh yang didapat saat simulasi berakhir.
Kode pemograman yang digunakan yaitu :
privatevoid btnTotFlighHours_Click(object sender, RoutedEventArgs e) {
var nilai = _airPlaneObjects.Values.Count; constdouble waktuTempuh = 1.75*60; var hitungTfh = (nilai*waktuTempuh)/60;
txtTotFlightHours.Text = hitungTfh + " Jam"; }
TECHNICAL NOTE
TN-011
Kajian Layanan Penerbangan
CNS - ATM
Mensortir data redundant hasil simulasi
Data mentah hasil simulasi ini akan di saring kembali untuk menghilangkan data yang kembar untuk menghindari kesalahan perhitungan di masa mendatang. Untuk mensortir data redundant dalam mencari waktu Estimated Time Over (eto).
Data yang dicari melalui table “hasil” dan hasil penyaringan akan dimasukkan ke dalam table “step1” dengan kode procedure dalam MySQL yang digunakan yaitu :
BEGIN /*
Deklarasi table */
-- Deklarasi variable untuk dibaca pada setiap record oleh cursor DECLARE waktu DATETIME;
-- Deklarasi loop control untuk cursor DECLARE no_more_rows BOOLEAN; DECLARE loop_cntr INT DEFAULT 0; DECLARE num_rows INT DEFAULT 0; -- Deklarasi kursor
DECLARE cari_waktu_cur CURSOR FOR SELECT
DISTINCT
eto FROM hasil;
-- Deklarasi 'handlers' untuk exceptions
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rows = TRUE;
Programming Logic */
-- 'open' mulai cursor dan ambil total row yang dicari -- 'select' memberikan nilai jika cursor berstatus 'opened') OPEN cari_waktu_cur;
select FOUND_ROWS() into num_rows; the_loop: LOOP
FETCH cari_waktu_cur INTO waktu;
-- break jika
-- 1) tidak ada record
-- 2) semua record telah diproses IF no_more_rows THEN
CLOSE cari_waktu_cur; LEAVE the_loop; END IF;
INSERT INTO simulasi.step1 VALUES (id, waktu); -- tampilkan output
select waktu;
-- hitung total looping
SET loop_cntr = loop_cntr + 1; END LOOP the_loop;
-- 'print' the output so we can see they are the same select num_rows, loop_cntr;
TECHNICAL NOTE
TN-012
Kajian Layanan Penerbangan
CNS - ATM
Mensortir data waktu eto hasil simulasi
Data hasil penyaringan awal untuk membuang waktu yang redundant dan tidak valid kemudian akan di simpan sebagai data list pesawat untuk mendapatkan list pesawat yang termasuk dalam waktu Estimated Time Over (eto).
Data yang dicari melalui table “step1” dan hasil penyaringan akan dimasukkan ke dalam table “step2” dengan kode procedure dalam MySQL yang digunakan yaitu :
BEGIN
DECLARE no_more_rows boolean default false; DECLARE waktu_eto DATETIME;
DECLARE _callsign VARCHAR(55); DECLARE _lat DOUBLE;
DECLARE _lon DOUBLE;
DECLARE _eto DATETIME; DECLARE habis boolean;
-- kursor ambil waktu eto
DECLARE waktu_cur CURSOR FOR SELECT
datetime FROM step1;
-- kursor cari pesawat sesuai waktu eto
DECLARE cari_pesawat_cur CURSOR FOR
SELECT callsign, lat, lon, eto
FROM hasil
declare continue handler for not found set habis := true;
open waktu_cur;
LOOP1: LOOP
fetch waktu_cur into waktu_eto;
if habis THEN close waktu_cur; leave LOOP1; end if; open cari_pesawat_cur; LOOP2: LOOP
fetch cari_pesawat_cur into _callsign, _lat, _lon, _eto;
if not habis THEN
INSERT INTO simulasi.step2 VALUES (_callsign, _lat, _lon, _eto);
end if;
if habis THEN set habis := false;
close cari_pesawat_cur;
leave LOOP2;
end if;
end loop LOOP2;
end loop LOOP1; end
TECHNICAL NOTE
TN-013
Kajian Layanan Penerbangan
CNS - ATM
Mensortir data waktu eto hasil simulasi
Untuk menghitung jarak antar pesawat yang dikehendaki tanpa melakukan perhitungan kembali secara keseluruhan melalui aplikasi Simulasi Tabrakan Pesawat (STP) dalam dilakukan melalui Function dengan kode procedure dalam MySQL yang digunakan yaitu :
BEGIN
DECLARE radius FLOAT; DECLARE distance FLOAT;
IF unit = 'MILES' THEN SET radius = '3959';
ELSEIF (unit = 'NAUTICAL_MILES' OR unit='NM') THEN SET radius = '3440.27694';
ELSEIF (unit = 'YARDS' OR unit='YD') THEN SET radius = '6967840'; ELSEIF (unit = 'FEET' OR unit='FT') THEN SET radius = '20903520'; ELSEIF (unit = 'KILOMETRES' OR unit='KILOMETERS' OR unit='KM') THEN SET radius = '6371.3929';
ELSEIF (unit = 'METRES' OR UNIT='METERS' OR unit='M') THEN SET radius = '6371392.9';
ELSE SET radius = '3959'; /* default to miles */ END IF;
SET distance = (radius * ACOS(COS(RADIANS(fromLatitude)) * COS(RADIANS(toLatitude)) * COS(RADIANS(toLongitude) - RADIANS(fromLongitude)) + SIN(RADIANS(fromLatitude)) * SIN(RADIANS(toLatitude))));
RETURN distance; END
Dan untuk menggunakan Function diatas dapat memakai query sebagai berikut :
SELECT haversine (posisi_dari_Lat, posisi_tujuan_Lat, posisi_dari_Lon, posisi_tujuan_Lon, “satuan unit pengukuran”);
TECHNICAL NOTE
TN-014
Kajian Layanan Penerbangan
CNS - ATM
Menyimpan data simulasi ke dalam database
Setiap data yang dihasilkan oleh aplikasi STP akan langsung dimasukkan ke dalam database dalam format TSD (ICAO APANPIRG Conclusion 16/4) untuk memenuhi kebutuhan pemantauan wilayah keamanan udara. Untuk hasil data kemudian dikelompokkan menjadi dua kategori yakni data simulasi dan data TSD, data simulasi merupakan data yang langsung dimasukkan ke database dari hasil simulasi sedangkan data TSD merupakan data simulasi yang telah disaring berdasarkan posisi yang terdekat dengan waypoint
Data properties objek yang akan dimasukkan ke dalam database dipilah-pilah menjadi delapan antara lain :
- CallSign = Nama objek pesawat
- Latitude = Posisi latitude pesawat pada saat itu - Longitude = Posisi lotitude pesawat pada saat itu
- AircraftType = Dikarenakan belum adanya database pesawat maka diisi dengan FA99X
- DateOfFlight = Tanggal simulasi dijalankan
- EstimatedTimeOver = Waktu pesawat melakukan perjalanan selama simulasi
- AssignFlightLevel = Ketinggian pesawaat pada saat itu - GroundSpeed = Kecepatan pesawat pada saat itu
Kode pemograman untuk melakukan fungsi ini adalah : privatevoid SimpanHasilSimulasi()
{
foreach (var airPlane in _airPlaneObjects.Values) {
if (airPlane.AirplaneName.Contains("East")) direction = PlaneDirection.East; else direction = PlaneDirection.West;
AirPlane item = null;
//pesawat mengarah ke timur (kanan / bawah) if (direction == PlaneDirection.East)
{
AirPlane plane = airPlane;
item = (from p in listView1.ItemsSource.Cast<AirPlane>() where p.AirplaneName == plane.AirplaneName
select p).FirstOrDefault(); }
else
{ var plane = airPlane;
item = (from p in listView2.ItemsSource.Cast<AirPlane>() where p.AirplaneName == plane.AirplaneName
select p).FirstOrDefault(); } var flightdate = DateTime.Now;
foreach (var history in item.PositionHistory) {
var data = newHasil { CallSign = item.AirplaneName, Latitude = history.Latitude, Longitude = history.Longitude, AircraftType = "FA99X", DateOfFlight = flightdate, EstimatedTimeOver = history.EstimatedTimeOver, AssignFlightLevel = history.FlightLevel, GroundSpeed = history.GroundSpeed }; data.Create(); }
}
_worker.ReportProgress(100); }
TECHNICAL NOTE
TN-015
Kajian Layanan Penerbangan
CNS - ATM
Penentuan Distribusi Laplace
Nilai yang digunakan dalam distribusi longitudinal, lateral, dan vertical seharusnya berasal dari data real yang diperoleh dari radar, perhitungan ini akan menghasilkan nilai mean dan scale yang terjadi. Mengingat keterbatasan data dan kevalid-an data yang dicatat secara manual dari sistem radar maka penginputan nilai mean dan scale di atas dilakukan dengan melihat histori LHD yang terjadi selama tahun 2009 hingga 2010 dengan asumsi bahwa data real di lapangan akan digantikan dengan data TSD yang diperoleh dari simulasi dengan pemakaian nilai mean dan scale yang sama.
Bagan Kejadian LHD
Dari pengamatan histori LHD tersebut diketahui bahwa terdapat dua faktor utama yang terjadi di ruang udara Indonesia yaitu angka untuk kategori E tertinggi yaitu sebesar enam kejadian tercatat selama durasi 17 menit. Yang kedua yakni terjadi selama durasi 28 menit yang disebabkan oleh kegagalan peralatan yang tergolong dalam kategori M.
Kategori E : Coordination errors in the ATC to ATC transfer or control
6 3 1 4 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28
Kejadian LHD dalam ruang udara
Indonesia
A B C D E F G H I J K L Mresponsibullity as a result of human factors issues (e.g, late or non-existent coordination, incorrect time estimate/actual, flight level, ATS route etc not in accordance with agreed parameters)
Kategori M : Other- this includes situations of flights operating (including climbing/descending) in airspace where flight crews are unable to establish normal air-ground communications with the responsible ATS units.
Kategori E memiliki nilai tiga dan dikategorikan kedalam distribusi vertikal karena berhubungan dengan flight level, sedangkan Kategori M memiliki nilai dua karena berhubungan dengan flight operating. Nilai mean memiliki nilai nol dengan asumsi pesawat adalah kontinu dengan fungsi bernilai real yang didefinisikan pada interval yang berubah-ubah maka nilai nol menganggap bahwa pesawat selalu konstan, oleh karena itu dalam simulasi ini digunakan angka distribusi sebagai berikut :
Table 1 Nilai Distribusi yang dipakai dalam simulasi Distribusi Mean Scale
Lateral 0 2
Longitudinal 0 1