Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather

 OK, hôm nay không đi làm ngồi lướt web thì thấy thời tiết nóng quá chịu không nổi, dạo này thời tiết ngày càng nóng, tự nhiên ngồi ngẫm ngẫm bala linh tinh xong nghĩ giờ mà ở sân bay các khi khu vực thời tiết sao ta. Không biết các khu vực khác như thế nào, hay đi du lịch ta bla bla.

Tự nhiên nghĩ tới nghĩ lui ra bài viết này, ok giờ ngồi chém gió thôi, giờ các mục chém gió sẽ như sau: 

-Station : sẽ check thông tin ở các Airport, terminal ở các khu vực thời tiết sẽ như thế nào, US,UK bla bla :) rồi kiểm tra thời tiết ở đó ra sao

-METAR: đây là một định dạng để báo cáo thông tin thời tiết hiện tại, hôm nay mình sẽ dùng nó để tracking theo 1 chuyến bay nào đó, ví dụ như BL111, AK222 bla bla, cái này sẽ lấy ngẫu nhiên từ internet :)

-TAF: Check thông tin dự báo như khu vực nào đó nếu dự định đến đó thì thời tiết như thế nào, dự báo nó có mưa năng gì không :)

Hôm nay sẽ dùng Nodejs connect đến Checkwxapi.

Đầu tiên đăng kí tài khoản tại Checkwxapi.


https://www.checkwxapi.com/user/api


Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather


Sau khi đăng kí  thành công đã có được API Key thì tiến hành xúc thôi

Station : đối với station thì thì bạn cần biết IATA Code / ICAO code.

Tổ chức Hàng không Dân dụng Quốc tế (tiếng Anh: International Civil Aviation Organization; viết tắt: ICAO)

International Air Transport Association airport code (Mã sân bay IATA)

Tại sao cần cái này, vì mỗi airport hay Terminal nào đó đều có 2 mã định danh này đễ phân biết các airport trên thế giới, mỗi nơi sẽ có mã khác nhau, bạn có thể tìm hiểu thêm ở internet (Nếu nó thuộc tổ chức thì bắt buộc có)

Ok, giờ nhập thông tin ICAO vào sẽ thu được kết quả sao khu vực airport và nhiệt độ , độ ẩm bla bla hiện tại.

IATA: BKK -  ICAO:VTBS


const axios = require('axios');
const readline = require('readline');
require('dotenv').config();
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
const getAirport = async (airport) => {
    const url = `https://api.checkwx.com/station/${airport}`;
    const response = await axios.get(url,{
        headers: {
            'X-API-KEY': process.env.API_KEY
        }
    });
    const data = response.data;
    return data;
}
const getMETAR = async (airport) => {
    const url = `https://api.checkwx.com/metar/${airport}/decoded`;
    const response = await axios.get(url,{
        headers: {
            'X-API-KEY': process.env.API_KEY
        }
    });
    const data = response.data;
    return data;
}
rl.question('Please enter ICAO: ', async (airport) => {
    const data = await getAirport(airport);
    const metar = await getMETAR(airport);
    console.log('----------------------------------------------------');
    console.log('City - ',data.data[0].city);
    console.log('Country - ',data.data[0].country.name);
    console.log('Latitude - ',data.data[0].latitude.decimal);
    console.log('Longitude - ',data.data[0].longitude.decimal);
    console.log('Name - ',data.data[0].name);
    console.log('---------Weather---------');
    console.log('Dewpoint - celsius',metar.data[0].dewpoint.celsius);
    console.log('Humidity - %',metar.data[0].humidity.percent);
    console.log('Temperature',metar.data[0].temperature.celsius);
    console.log('Wind',metar.data[0].wind.degrees);
    console.log('----------------------------------------------------');
    rl.close();
});


Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather

oh yeah, cuối cùng cũng ra kết quả ngon lành cành đào :)


 - TAF : Giờ sẽ dự báo khu vực trên trong nhiệt độ sẽ như thế nào, nếu nói về dự báo thì sẽ có khung giờ cập nhật dữ liệu, thường thì 6 tiếng sẽ cập nhật 1 lần và theo khung giờ 0000, 0600, 1200 , 1800 theo giờ UTC, có thể convert qua giờ hệ thống của bạn.

TAF là dự báo thôi, nên dữ liệu tuỳ theo khung giờ khi bạn kiêm tra , ok chạy xem nào


const getTAF = async (airport) => {
    const url = `https://api.checkwx.com/taf/${airport}/decoded`;
    const response = await axios.get(url,{
        headers: {
            'X-API-KEY': process.env.API_KEY
        }
    });
    const data = response.data;
    return data;
}
rl.question('Please enter ICAO: ', async (airport) => {
    const data = await getAirport(airport);
    const metar = await getMETAR(airport);
    const taf = await getTAF(airport);
    console.log('----------------------------------------------------');
    console.log('City - ',data.data[0].city);
    console.log('Country - ',data.data[0].country.name);
    console.log('Latitude - ',data.data[0].latitude.decimal);
    console.log('Longitude - ',data.data[0].longitude.decimal);
    console.log('Name - ',data.data[0].name);
    console.log('---------Weather---------');
    console.log('Dewpoint - celsius',metar.data[0].dewpoint.celsius);
    console.log('Humidity - %',metar.data[0].humidity.percent);
    console.log('Temperature',metar.data[0].temperature.celsius);
    console.log('Wind',metar.data[0].wind.degrees);
    console.log('--------------------forecast--------------------------------');
    taf.data[0].forecast.forEach(element => {
        console.log(`${element.timestamp.from} - ${element.timestamp.to}`);
        console.log('clouds - ',element.clouds[0].text);
        console.log(`wind - degrees:${element.wind.degrees} - speed_kph:${element.wind.speed_kph} - speed_kts:${element.wind.speed_kts} - speed_mph:${element.wind.speed_mph}- speed_mps:${element.wind.speed_mps}`);
        console.log('--------------------Change--------------------------------');
    }
    );
    rl.close();
});


Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather


-METAR : Dự báo thời tiết hiện tại, ở phần trên cũng đã dùng đến để kiểm tra, nhưng cái hay là nó có latitude - longitude. Có thì sao, tại sao lại hay, phần này mình nói đến cuối cùng của bài việt vì mục đích của mình sẽ tracking nhiệt độ theo 1 máy bay đang bay.

Có nghĩa là sẽ lấy 1 toạ độ máy bay nào đó ngẫu nhiên đang, nó bay đến đâu thì sẽ tracking đến đó, vì lười quá nên phần toạ độ sẽ copy bằng tay :)

Đầu tiên sẽ vào flightaware bóc đại 1 máy bay nào đó mình thích.



Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather


Sau đó tìm được một chuyến bay đang bay



Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather


Thế là Track Log  nó ra là đã có được toạ độ của chuyến bay này. thế là test thôi :)


Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather


Nếu bạn lấy auto latitude - longitude thì càng tốt, ở đây chỉ copy tay cho nhanh :)


const axios = require('axios');
const readline = require('readline');
require('dotenv').config();
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
const trackingFlight = async (lat,lon) => {
    const url = `https://api.checkwx.com/metar/lat/${lat}/lon/${lon}/decoded`;
    const response = await axios.get(url,{
        headers: {
            'X-API-KEY': process.env.API_KEY
        }
    });
    const data = response.data;
    return data;
}

rl.question('Please enter lat: ', async (lat) => {
    rl.question('Please enter lon: ', async (lon) => {
        const data = await trackingFlight(lat,lon);
        console.log('----------------------------------------------------');
        console.log('clouds - ',data.data[0].clouds[0].text);
        console.log('dewpoint - ',data.data[0].dewpoint.celsius);
        console.log('humidity - ',data.data[0].humidity.percent);
        console.log('fly over area - ',data.data[0].station.location);
        console.log(`wind - degrees:${data.data[0].wind.degrees} - speed_kph:${data.data[0].wind.speed_kph} - speed_kts:${data.data[0].wind.speed_kts} - speed_mph:${data.data[0].wind.speed_mph}- speed_mps:${data.data[0].wind.speed_mps}`);
        rl.close();
    });
});


Chém gió về Checkwxapi dot com để lấy thông tin Aviation Weather

Trên đây xem như là đã hoàn thành phần chém gió về Checkwxapi, bài viết mang tính chất học thuật và chém gió, nếu bạn có nhu cầu sử dụng cho mục đích riêng hoặc công việc thì xem như đây là phần review thêm :)


Nhãn: