Rabu, 19 Juni 2013

Sabtu, 15 Juni 2013

Membuat Kode Python Menjadi Executable

pastikan dahulu :
     $ python coba.py

running OK !!, kemudian buat file setup.py :
============================
from distutils.core import setup
import py2exe

setup(console=['coba.py'])
============================

lalu dilanjutkan  :
$ python setup.py install

biasanya pada langkah ini terdapat DLL yang tidak ditemukan. Copy dahulu DLL ke direktori skrip berada.
Bila sudah berjalan tanpa kesalahan, ketik :
$ python setup.py py2exe


Kamis, 13 Juni 2013

Memvisualkan citra satelit MTSAT-IR berformat netCDF menggunakan Python

Tulisan kali ini akan berbeda dengan tulisan saya terdahulu. Beberapa hari yang lalu saya mendapat tantangan untuk mengolah data citra satelit MTSAT. MTSAT adalah satelit geostationary yang mengumpulkan data-data meteorologi yang dioperasikan oleh JMA (Japan Meteorological Agency).
Citra satelit MTSAT didistribusikan dalam format netCDF. Untuk dapat membukanya diperlukan netCDF 4 (bukan 3).
Paket Software yang perlu di-install : geos, zlib, hdf5, netcdf, gdal.
Citra satelit yang saya dapat merupakan citra dari kanal IR (infrared). IR merepresentasikan distribusi temperatur. IR ini digunakan untuk melihat awan dan temperatur permukaan bumi.

dengan menggunakan python, saya mencoba memvisualisasikan citra satelit dengan merubah format netCDF menjadi GeoTiff sehingga dapat ditampilkan ataupun diolah lebih lanjut.

from osgeo import gdal, gdal_array
import numpy as np
from osgeo.gdalconst import *

gdal.AllRegister()

f = 'NETCDF:"/home/mtsat/mtsat20120531/MTS_IR_201205312200.nc"'
ds = gdal.Open(f, GA_ReadOnly)
ds.GetMetadata()

xsize = ds.RasterXSize
ysize = ds.RasterYSize

info = ds.GetGeoTransform()

xmin = info[0] # top-left-x
dx = info[1] # w-e pixel resolution
rot1 = info[2] # rotation, 0 = images is north-up
ymin = info[3] # top-left-y
rot2 = info[4] # rotation
dy = info[5] # n-s pixel resolution
xmax = xmin + (dx*(xsize-1))
ymax = ymin + (dy*(ysize-1))

print xmin,dx,ymin,dy

img = ds.ReadAsArray().reshape(ysize,xsize).astype(np.float64)

driver = gdal.GetDriverByName('GTiff')
out = driver.Create('a.tif', xsize, ysize, 1, GDT_Float64)

out.SetGeoTransform([xmin
                  , (xmax - xmin)/xsize
                  , 0
                  , ymin
                  , 0
                  , (ymax - ymin)/ysize])

gdal_array.BandWriteArray(out.GetRasterBand(1), img)

del out

import pylab
import matplotlib.cm as cm
tif = gdal.Open('a.tif')
a = tif.ReadAsArray()
pylab.imshow(a,cmap = cm.gray_r)
pylab.title('MTSAT-IR 2012-05-31 22:00')
pylab.show()

dan output dari skrip ini :


terlihat sekali dari gambar di atas distribusi awannya (putih). Dari tulisan ini bisa dikembangkan untuk pengolahan citra lanjutan seperti melakukan overlay dengan peta bumi, melakukan segmentasi awan, menghitung fire-hotspot,dll.

OK guys......sekian dulu ya, keep watching my blog ya...

Minggu, 02 Juni 2013

Detrending Time Series Data

Apa yang dimaksud detrend ?

Pada saat melakukan pengolahan sinyal biasanya dilakukan proses detrend sebelum FFT (Fast Fourier Transform). Detrend berfungsi untuk menghilangkan nilai rata-rata atau tren linier dari sebuah vektor atau matriks.


Gambar di atas mengilustrasikan tentang detrend. Trace atas (biru) adalah time series raw data sedangkan trace di bawahnya (hijau) adalah time series yang telah di-detrending. Garis lurus warna merah adalah hasil perhitungan linear trend. Dengan mengurangkan raw data dengan linear trend akan menghasilkan data yg telah dihilangkan trend-nya.