Sunday, September 19, 2021

15-Python : Basemap Plotting

 Assalam wbt. Jumpa lagi.

Post kali ini saya akan membincangkan bagaimana menggunakan library Basemap untuk membuat plot sesebuah kawasan atau area of interest bagi tujuan tertentu. Kelebihan plot menggunakan library Basemap adalah ia datang dalam  resolusi crude (c), low (l), intermediate (i), high (h) atau full (f). Semakin tinggi resolution digunakan semakin jelas ketampakan imej korang. Namun sebelum menggunakan basemap resolusi tinggi seperti high(h) dan full (f) anda harus install library tambahan iaitu hires. Sila gunakan anaconda command prompt di laptop/pc anda dengan command seperti berikut : conda install basemap-data-hires.

Kali ini kita akan cuba plot negara Malaysia termasuk beberapa negara kejiranan melalui penetapan kedudukan koordinat latitude dan longitude tertentu. Berikut adalah asas terhadap plotting area menggunakan basemap. Walau bagaimanapun, korang boleh melihat contoh-contoh yang tersedia di dalam python community yang banyak membincangkan teknik -teknik menarik menggunakan basemap. Untuk permulaan saya akan berkongsi teknik asas dahulu melalui penerangan mudah di ruangan catatan di bawah.

## copy script from here##
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap, cm

plt.rcParams.update({'font.size':12,'font.family':'arial'})

## setting frame size
fig = plt.figure(figsize=(10,8))

## setting area if interest
lat_min = -5
lat_max = 15
lon_min = 95
lon_max = 130

## main command plotting basemap
map = Basemap(projection = 'merc', llcrnrlat=lat_min, urcrnrlat=lat_max,llcrnrlon=lon_min, urcrnrlon=lon_max, resolution='h')

## draw coastlines
map.drawcoastlines(linewidth=0.5)

## draw countries boundary
map.drawcountries(linewidth=0.5)

## draw parallel lines
map.drawparallels(np.arange(-90,91,5),fontsize=10,
   labels=[1,0,0,0],color='black',linewidth=0.25)

## draw meridian lines
map.drawmeridians(np.arange(-180,180,5),fontsize=10,
labels=[0,0,0,1],color='black',linewidth=0.25)

## plot title
plt.title('Malaysia', fontsize=18)

#### METHOD SAVING IMAGE USING CURRENT FILE NAME
import inspect
frame = inspect.currentframe()
path = inspect.getfile(frame)
fname = path.split('.')[0]
plt.savefig(fname + ".png",dpi=280, bbox_inches='tight')
plt.show()

#### end copy script##

Paparan Imej:

Catatan:
a) setting area of interest adalah tertakluk kepada pilihan korang. lat_min = latitude minimum, lat_max = latitude maximum, lon_min = longitude minimum dan lon_max = longitude maximum.

b) map = Basemap( ) merujuk kepada standard command bagi plotting area dengan beberapa ciri tambahan seperti jenis projection yang digunakan "merc" atau mercator serta resolution h (high). Korang boleh guna resolution yang bawah dahulu seperti low (l) atau intermediate (i) namun banyak pulau-pulau kecil tidak akan kelihatan. Plotting menggunakan resolution tinggi high atau full akan menyebabkan system running perlahan tetapi hampir keseluruhan pulau-pulau atau kawasan kecil boleh dilihat agak jelas.

c) map.drawcoastlines( ) merujuk kepada plotting coastal line dengan ciri tambahan seperti line thickness pada 0.5.

d) map.drawcountries( ) merujuk kepada plotting sempadan negara dengan ciri tambahan seperti line thickness pada 0.5.

e) map.drawparallels( ) merujuk kepada draw parallel line atau line latitide menegak dengan ciri tambahan seperti warna line, thickness,fontsize dan kedudukan label latitude.

f) map.drawmeridians( )merujuk kepada draw meridiean line atau line longitude melintang dengan ciri tambahan seperti warna line, thickness,fontsize dan kedudukan label longitude.

Selamat mencuba!.

No comments:

Post a Comment

23-Python : Plotting Temperature Histogram

  Assalamualaikum wbt dan jumpa lagi. Post kali ini kita akan cuba untuk membuat analisa taburan suhu purata setiap data yang telah dibelakk...