Ekstrak data iklim sebuah titik lokasi dari data reanalysis
Cara mudah mendapatkan data time series parameter iklim di sebuah titik lokasi dengan memanfaatkan data reanalysis
Ekstrak data iklim sebuah titik lokasi dari data reanalysis
Cara mudah mendapatkan data time series parameter iklim di sebuah titik lokasi dengan memanfaatkan data reanalysis
Pernahkah mengalami, ingin mendapatkan data parameter iklim di sebuah tempat namun tidak ada titik pengamatan di wilayah tersebut? Atau mungkin ada titik pengamatan di lokasi yang kita inginkan, namun karena satu dan lain hal, kita tidak bisa mendapatkannya dalam waktu yang cepat. Padahal kita sedang dalam kebutuhan mendesak.
Saya yakin bagi rekan-rekan yang banyak berkutat dengan kegiatan analisis data iklim, pernah mengalami hal tersebut. Jika menemui problem seperti diatas, selanjutnya, apa yang dapat kita lakukan? Salah satu solusinya adalah dengan memanfaatkan data reanalysis.
Data reanalysis pada hakikatnya adalah data hasil “proses ulang” oleh model iklim global, dari data yang sudah ada sebelumnya, menggunakan metodologi yang konsisten. Data reanalysis ini memanfatkan berbagai sumber pengamatan dalam “proses ulang”nya. Baik pengamatan yang bersumber dari pengamatan insitu di darat, laut dan atmosfer maupun pengamatan yang bersumber dari estimasi satelit atau bahkan dari sumber-sumber lain.
Memang, data reanalysis tidak dapat “menggantikan” data observasi, karena dalam data reanalysis seringkali masih ada kesalahan atau bias error, namun untuk “keperluan tertentu”, data reanalysis masih dapat diandalkan. Yang saya maksudkan dengan “keperluan tertentu” ini, misalnya kita menggunakan data reanalysis temperatur udara harian untuk mengetahui nilai rata-rata bulanan sebuah tempat. Nilai rata-rata bulanan dari nilai harian reanalysis ini, hasilnya cukup dapat diandalkan. Setidaknya sebagai data sementara atau data sekunder, sampai ada sumber data lain yang lebih terpercaya. Selain itu, pemanfaatan data reanalysis ini juga cukup dapat diandalkan untuk mendapatkan informasi kualitatif seperti pola musiman maupun siklus harian.
Untuk itu, dalam tulisan ini saya akan bagikan bagaimana meng-ekstrak data time series suatu lokasi tertentu memanfaatkan data reanalysis.
Sebagai contoh, misal kita ingin mendapatkan data temperatur udara permukaan di sekitar kantor Badan Meteorologi Klimatologi & Geofisika (BMKG) yang berada di Kemayoran, Jakarta Pusat.
Ketahui titik koordinat lokasi
Pertama yang perlu kita lakukan, tentunya adalah mencari tahu titik koordinat dari lokasi yang ingin kita cari, dalam hal ini kantor BMKG Kemayoran, Jakarta Pusat. Cara mengetahui lokasi koordinat bisa dengan berbagai cara. Rekan-rekan bisa sesuaikan dengan cara masing-masing. Salah satu yang paling mudah adalah dengan menggunakan Google Map. Kita tinggal ketikkan lokasi yang diinginkan di Google Map dan setelah muncul lokasi yang kita maksud, lanjutkan dengan klik kanan pada lokasi tersebut. Maka kita dengan mudah memperoleh informasi lokasi berupa lintang dan bujur.

Dari Google Map kita dapati informasi posisi lintang dan bujur gedung Badan Meteorologi Klimatologi dan Geofisika (BMKG) di Kemayoran-Jakarta, adalah 6.15570 LS dan 106.84177 BT
Download data reanalysis
Setelah mengetahui posisi geografis lokasi yang kita inginkan, selanjutnya kita unduh data reanalysis yang kita inginkan. Kali ini saya memanfaatkan data reanalysis “ERA5-Land hourly data from 1950 to present” yang saya unduh dari Climate Data Store (CDS)-nya Copernicus. Diperlukan login terlebih dahulu untuk bisa mengunduh dataset di CDS. Saya anggap rekan-rekan sudah familier dengan cara download data CDS.
Jika rekan-rekan punya kendala dalam mengunduhnya, untuk sekedar keperluan coba-coba, dapat mengambil data yang sudah saya siapkan disini. Data yang sudah saya unduh dan siapkan tersebut, merupakan data yang berisi (1) u10 — angin komponen zonal ketinggian 10 meter, (2) v10 — angin komponen meridional ketinggian 10 meter, serta (3) temperatur udara pada ketinggian 2 meter. Data meliputi seluruh pulau Jawa (105-115BT; 5–9LS), tanggal 01 — 31 Maret 2019 dengan frekuensi data tiap 6-jam (00.00; 06.00; 12.00 serta 18.00 UTC).
Ekstrak data satu titik lokasi
Setelah tahu lokasi yang ingin dicari dan sudah mengunduh datanya. Selanjutnya mari kita ekstrak data temperatur udara untuk lokasi kantor BMKG yang berada di koordinat 6.15 LS; 106.8 BT.
1. Load dataset
Sebelum kita memuat dataset, hal pertama yang perlu kita lakukan adalah kita cek informasi global dari dataset kita. Yang saya maksud dengan informasi global adalah informasi seperti ukuran dimensi, nama variabel serta struktur array dari dataset kita.
Untuk melakukan hal tersebut, kita gunakan perintah:
import os
import xarray as xr
import numpy as np
DIR = os.path.expanduser('/Users/andhika/Downloads/medium')
PATH = os.path.join(DIR,'angin_temp_jawa_2019.nc')
DATASET = xr.open_dataset(PATH)
print(DATASET)
Pada contoh diatas, saya meletakkan file saya di direktori /User/andhika/Downloads/medium. Silahkan sesuaikan dengan nama direktori pada PC atau laptop rekan-rekan masing-masing. Hasil perintah diatas akan memberikan keluaran berupa informasi global dataset kita, seperti yang terlihat pada gambar dibawah.

Informasi global mengenai dataset yang kita gunakan. Informasi ini meliputi (1) ukuran dimensi, (2) rentang koordinat serta waktu, (3) nama variabel, (4) bentuk struktur array serta beberapa atribut informasi lainnya.
Banyak cara untuk mengetahui informasi global yang ada pada dataset kita, yang saya tunjukkan ini cara yang menurut saya paling sederhana. Dapat juga kita menggunakan ncdump yang kita jalankan di Terminal. Dengan menggunakan ncdump, kita dapat memperoleh informasi yang lebih lengkap, selain yang kita lihat pada tampilan diatas. Namun karena pertimbangan kesederhanaan, pada kesempatan kali ini biarlah cukup begini saja dulu.
Dari informasi diatas, kita dapat mengetahui bahwa dataset kita berisi tiga variabel, yaitu u10, v10 dan t2m. Pada contoh kali ini, saya akan memanfaatkan variabel t2m, yaitu variabel temperatur udara pada ketinggian 2 meter. Dari informasi diatas, kita juga mengetahui bahwa dataset kita meliputi wilayah dari 105BT hingga 115BT dengan selang 0,1 derajat (±10 km) dan 9LS hingga 5LS, juga dengan selang tiap 0,1 derajat. Total jumlah titik koordinat dari 105BT-115BT adalah 101 titik dan jumlah titik dari koordinat 9LS-6LS adalah 41 titik.
Dataset kita berisi data dari tanggal 01 Maret 2019 jam 00.00 UTC hingga 31 Maret 2019 jam 18.00 UTC (dalam satu hari ada data untuk jam 00.00, 06.00, 12.00 serta 18.00). Kalau ditotal, jumlah data waktunya ada 124 jumlah waktu.
Jika dirangkum, struktur dimensi dataset kita adalah [124, 41, 101] yang mewakili struktur [waktu, lintang, bujur].
2. Memuat data pada titik lokasi tertentu
Setelah mengetahui informasi global berupa struktur dataset kita, selanjutnya kita lakukan ekstraksi pada titik lokasi yang diinginkan. Pada contoh ini saya akan meng-ekstrak data temperatur udara untuk titik lokasi kantor BMKG Kemayoaran Jakarta Pusat yang berada pada lokasi 106.84BT; 6.15LS.
Berikut perintahnya:
# Menentukan titik lokasi yang diinginkan (kantor BMKG Kemayoran)
lintang = -6.15; bujur = 106.84
# Ekstrak data temperatur pada ketinggian 2 meter
t2m_kantor_bmkg = DATASET.t2m.sel(longitude= bujur, latitude= lintang, method= 'nearest') - 273.15
t2m_kantor_bmkg.plot()
Dari code tersebut, kita sudah memperoleh time series data temperatur udara pada titik lokasi kantor BMKG Kemayoran. Data temperatur tersebut tersimpan dalam variabel t2m_kantor_bmkg. Data temperatur pada dataset kita, satuannya dalam Kelvin, untuk keperluan konversi, maka saya kurangkan dengan 273,15 agar berubah menjadi derajat Celsius.
Untuk men-setting lokasi sesuai dengan titik yang kita inginkan, dalam contoh ini saya memanfaatkan perintah .sel serta tambahan method= ‘nearest’. Dengan cara ini, penentuan grid mana yang akan diekstrak mewakili titik lokasi yang kita inginkan, nantinya akan diarahkan kepada grid yang titik tengahnya paling dekat dengan titik lokasi interest kita. Ingat, bahwa data reanalysis merupakan data yang disusun dalam bentuk kotak-kotak grid, dengan ukuran tertentu.
Ilustrasi proses pemilihan grid mana yang kita ekstrak untuk mewakili sebuah titik lokasi yang kita inginkan, menggunakan metode “nearest”, dapat kita lihat seperti pada gambar dibawah ini.

Ilustrasi data yang kita peroleh dengan menggunakan metode “nearest”. Dalam contoh ini grid (kotakan) kita ukurannya adalah 0,1 derajat, jadi satu grid mewakili luasan 0,1x0,1 derajat. Data titik lokasi yang kita inginkan (requested) akan diekstrak mengikuti kotak grid yang titik tengahnya paling dekat dengan titik lokasi yang kita inginkan. Sumber gambar https://stackoverflow.com/questions/58758480/xarray-select-nearest-lat-lon-with-multi-dimension-coordinates dengan sedikit modifikasi)
Untuk menggambarkan data yang kita peroleh, selanjutnya data tersebut saya plot yang hasilnya dapat kita lihat pada gambar dibawah. Terlihat adanya pola naik turun antara siang dan malam pada setiap harinya.

Ploting data temperatur udara untuk titik lokasi kantor BMKG Kemayoran Jakarta Pusat (106.84BT; -6.15LS). Karena datanya merupakan data tiap 6jam, maka kita dapat melihat pola naik turunnya temperatur setiap harinya (siang naik, malam turun).
Ekstrak hanya pada waktu tertentu
Berikutnya, ada kalanya kita ingin mengambil data hanya pada kurun waktu tertentu saja. Bagaimana caranya?
# Mengambil waktu tertentu
# Kita akan mengambil data tgl 11 Maret 2019 00.00UTC s/d 15 Maret 2019 18.00 UTC
tgl_awal = '2019-03-11 00:00:00'
tgl_akhir = '2019-03-15 18:00:00'
t2m_kantor_bmkg_11_15 = t2m_kantor_bmkg.sel(time= slice(tgl_awal, tgl_akhir))
t2m_kantor_bmkg_11_15.plot()
Pada code diatas, saya memfilter data yang sudah diekstrak, dengan hanya mengambil data untuk tanggal 11 Maret hingga 15 Maret 2019. Hasilnya plot-nya adalah seperti ini:

Plot data temperatur titik lokasi kantor BMKG Kemayoran Jakarta Pusat dari tanggal 11 Maret 2019 s/d 15 Maret 2019
Gampang bukan? Silah coba-coba dengan memanipulasi script diatas.
Ekstrak data pada luasan tertentu
Karena data reanalysis yang kita gunakan basisnya berbentuk grid (tersusun kotak-kotak). Dan dalam pemilihan grid yang mewakili titik requested, kita menggunakan metode terdekat dari titik tengah grid (method= ’nearest’). Maka, terkadang muncul keraguan, sudah tepatkah grid yang terpilih? Bukannya malah lebih tepat jika menggunakan kotakan (misalkan) sebelahnya?
Untuk mengatasi keraguan tersebut, cara termudah, umumnya kita melakukan rata-rata terhadap beberapa titik grid (kotakan) di sekitar titik yang kita inginkan, bisa mengambil dua (bersebelahan) atau empat (kiri kanan depan dan belakang). Tujuannya adalah untuk meningkat kepercayaan kita dalam pemilihan perwakilan titik grid.
Caranya bagaimana? Mudah saja. Cukup gunakan fungsi slice pada longitude dan latitude, sehingga kita bisa membuat nilai rentang pada longitude dan latitudenya. Prinsip yang sama saat memanfaatkan slice pada time, dimana disitu terdapat tgl_awal dan tgl_akhir.

Contoh wilayah kotakan DKI Jakarta yang meliputi wilayah 6.08–6.38 LS dan 106.67–106.96BT.
Kali ini akan memberi contoh dengan mengambil luasan yang relatif lebih luas, misal wilayah DKI Jakarta, seperti ilustrasi diatas. Wilayah request kita saya tandai dengan kotak merah. Kenapa kok dibuat kotak, tidak dibuat mengikuti garis merah putus-putus DKI Jakarta? Jawabannya, ya balik lagi, karena data reanalysis basisnya adalah data grid yang terbagi dalam kotak-kotak.
# Mengambil data pada luasan tertentu (wilayah DKI Jakarta)
batas_kiri = 106.67; batas_kanan = 106.96
batas_atas = -6.08; batas_bawah = -6.36
t2m_jakarta = DATASET.t2m.sel(longitude= slice(batas_kiri, batas_kanan),
latitude= slice(batas_atas,batas_bawah)) - 273.15
t2m_jakarta_rata = np.mean(np.mean(t2m_jakarta, axis= 1), axis = 1)
t2m_jakarta_rata.plot()
Menyimpan hasil ekstrak-an kedalam CSV
Satu tahapan lagi yang sering ditanyakan kepada saya jika ada rekan yang bertanya tentang cara-cara manipulasi data reanalysis seperti diatas, yaitu bagaimana caranya menyimpan data ekstrak-an tadi kedalam MS. E*cel atau dalam bentuk .csv?
Saya sering menjawab, sebenarnya kita tidak perlu menyimpan hasil ekstrak-an kedalam sebuah file. Karena pada prakteknya, saat kita melakukan analisis data, kita akan langsung mengolah data ekstrak-an tersebut dalam script kita yang lebih lanjut, tidak perlu disimpan dulu, karena akan menjadi tidak efisien karena setelah disimpan nantinya bakal ada proses loading lagi.
Namun, tidak ada salahnya saya juga tunjukkan disini. Caranya pun juga sangat mudah. Cukup tambahkan baris paling akhir dari kode dibawah ini.
# Menentukan titik lokasi yang diinginkan (kantor BMKG Kemayoran)
lintang = -6.15; bujur = 106.84
# Ekstrak data temperatur pada ketinggian 2 meter
t2m_kantor_bmkg = DATASET.t2m.sel(longitude= bujur, latitude= lintang, method= 'nearest') - 273.15
t2m_kantor_bmkg.plot()
# Menyimpan data yang sudah diekstrak
np.savetxt('suhu_kantor_bmkg.csv', t2m_kantor_bmkg, delimiter=",")
Hasil keluaran dari perintah diatas adalah berupa file text dengan nama suhu_kantor_bmkg.csv yang tentunya dapat dibuka menggunakan teks editor maupun MS. E*cel.

File .csv hasil keluaran dari kode kita dan tampilannya jika kita buka di text editor. Datanya merupakan data time series suhu lokasi kantor BMKG kemayoran.
Nah, itu tadi adalah salah satu cara mengekstrak data sebuah titik lokasi memanfaatkan data reanalysis. Semoga bermanfaat buat rekan-rekan semua.
Terima kasih sudah membaca sampai akhir. Silahkan follow akun ini jika keberadaannya dirasa dapat memberikan manfaat. Sampai jumpa pada tulisan saya berikutnya !!!
PS.
Tahapan mengetahui informasi global merupakan proses yang penting, karena selain untuk mendapatkan informasi ukuran dimensi, nama variabel serta struktur array dari data, juga untuk memperoleh informasi lain seperti satuan yang dipakai (misal untuk variabel temperatur apakah satuannya Kelvin ataukah Celcius), ada tidaknya faktor konversi dari data maupun informasi meta data lainnya. Informasi meta data lengkap seperti itu dapat kita peroleh jika kita memanfaatkan ncdump seperti yang saya sebutkan diatas.
메타데이터
- post_id
- 1a4c18191317
- slug
- ekstrak-data-iklim-sebuah-titik-lokasi-dari-data-reanalysis-1a4c18191317
- url
- https://medium.com/naraiklim/ekstrak-data-iklim-sebuah-titik-lokasi-dari-data-reanalysis-1a4c18191317
- canonical_url
- https://medium.com/naraiklim/ekstrak-data-iklim-sebuah-titik-lokasi-dari-data-reanalysis-1a4c18191317
- author_url
- https://medium.com/@andhikaher
- status
- ok
- fetched_at
- 2026-06-10 15:53:41