diff --git a/Application.py b/Application.py index bce5030..97dbb3f 100644 --- a/Application.py +++ b/Application.py @@ -1,88 +1,88 @@ -# -*- encoding: utf8 -*- -import cProfile -import datetime -import sys -import traceback - -import line_profiler - -from common.common import init -from common.profile_utils import profile_report, line_profile_report -from process.L2convertProcess import L2convertProcess -from regrid.abstract_regrid import AbstractRegrid -from regrid.tessellation import Tessellation - - -def parse_args(): - """ - 입력 파라미터를 파싱하는 메소드 - :return: 파싱한 입력 파라미터 구조체 - """ - if len(sys.argv) > 1: - yr = int(sys.argv[1]) - mm = int(sys.argv[2]) - dd = int(sys.argv[3]) - hh = int(sys.argv[4]) - dt = datetime.datetime(year=yr, month=mm, day=dd, hour=hh) - else: - dt = datetime.datetime.now(datetime.timezone.utc) - dt = datetime.datetime(year=dt.year, month=dt.month, day=dt.day, hour=dt.hour) - - return dt - - -def main(): - config, logger = init("config.yml") - logger.info("Start GEMS L3 Tessellation Process") - - dt = parse_args() - # 실행 예 --> python Application.py 2022 01 06 00 - # dt = datetime.datetime(2022,1,6,0,0,0) # for Test - logger.debug(f"Input Args. : {dt}") - - startTime = datetime.datetime.now() - - try: - worker = L2convertProcess(config) - worker.run(dt) - except: - logger.error(traceback.format_exc()) - - logger.debug("running time : {} s".format((datetime.datetime.now() - startTime).total_seconds())) - logger.info("Done GEMS L3 Tessellation Process") - - -def profile(): - pr = cProfile.Profile(builtins=False) - pr.enable() - main() - pr.disable() - - profile_report(pr.getstats()) - - -def line_profile(): - pr = line_profiler.LineProfiler() - pr.enable() - pr.add_function(L2convertProcess.run) - pr.add_function(L2convertProcess.write_product) - pr.add_function(Tessellation.execute) - pr.add_function(Tessellation._init_grid) - pr.add_function(AbstractRegrid.__init__) - # pr.add_function(BrowserProcess._l2_process) - # pr.add_function(BrowserProcess._apply_renderer) - # pr.add_function(BrowserProcess._add_accessory) - # pr.add_function(add_colorbar_v2) - # pr.add_function(compute_moving_average_exp) - # pr.add_function(get_geos_bbox) - # pr.add_function(MosaicProcess.Run) - main() - pr.disable() - - line_profile_report(pr.get_stats()) - - -if __name__ == '__main__': - # line_profile() - # profile() - main() +# -*- encoding: utf8 -*- +import cProfile +import datetime +import sys +import traceback + +import line_profiler + +from common.common import init +from common.profile_utils import profile_report, line_profile_report +from process.L2convertProcess import L2convertProcess +from regrid.abstract_regrid import AbstractRegrid +from regrid.tessellation import Tessellation + + +def parse_args(): + """ + 입력 파라미터를 파싱하는 메소드 + :return: 파싱한 입력 파라미터 구조체 + """ + if len(sys.argv) > 1: + yr = int(sys.argv[1]) + mm = int(sys.argv[2]) + dd = int(sys.argv[3]) + hh = int(sys.argv[4]) + dt = datetime.datetime(year=yr, month=mm, day=dd, hour=hh) + else: + dt = datetime.datetime.now(datetime.timezone.utc) + dt = datetime.datetime(year=dt.year, month=dt.month, day=dt.day, hour=dt.hour) + + return dt + + +def main(): + config, logger = init("config.yml") + logger.info("Start GEMS L3 Tessellation Process") + + dt = parse_args() + # 실행 예 --> python Application.py 2022 01 06 00 + # dt = datetime.datetime(2022,1,6,0,0,0) # for Test + logger.debug(f"Input Args. : {dt}") + + startTime = datetime.datetime.now() + + try: + worker = L2convertProcess(config) + worker.run(dt) + except: + logger.error(traceback.format_exc()) + + logger.debug("running time : {} s".format((datetime.datetime.now() - startTime).total_seconds())) + logger.info("Done GEMS L3 Tessellation Process") + + +def profile(): + pr = cProfile.Profile(builtins=False) + pr.enable() + main() + pr.disable() + + profile_report(pr.getstats()) + + +def line_profile(): + pr = line_profiler.LineProfiler() + pr.enable() + pr.add_function(L2convertProcess.run) + pr.add_function(L2convertProcess.write_product) + pr.add_function(Tessellation.execute) + pr.add_function(Tessellation._init_grid) + pr.add_function(AbstractRegrid.__init__) + # pr.add_function(BrowserProcess._l2_process) + # pr.add_function(BrowserProcess._apply_renderer) + # pr.add_function(BrowserProcess._add_accessory) + # pr.add_function(add_colorbar_v2) + # pr.add_function(compute_moving_average_exp) + # pr.add_function(get_geos_bbox) + # pr.add_function(MosaicProcess.Run) + main() + pr.disable() + + line_profile_report(pr.get_stats()) + + +if __name__ == '__main__': + # line_profile() + # profile() + main() diff --git a/OUTPUT/L3/hourly/NO2/202103/21/0728_idw_w_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/0728_idw_w_subgrid.nc new file mode 100644 index 0000000..34b028e Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/0728_idw_w_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/0728_idw_wo_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/0728_idw_wo_subgrid.nc new file mode 100644 index 0000000..32aebcd Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/0728_idw_wo_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/0728_tessellation_w_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/0728_tessellation_w_subgrid.nc new file mode 100644 index 0000000..51f6a10 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/0728_tessellation_w_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/0728_tessellation_wo_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/0728_tessellation_wo_subgrid.nc new file mode 100644 index 0000000..c9c2f7b Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/0728_tessellation_wo_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0045_NO2_WGS84.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0045_NO2_WGS84.nc new file mode 100644 index 0000000..68f9181 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0045_NO2_WGS84.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0145_NO2_WGS84.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0145_NO2_WGS84.nc new file mode 100644 index 0000000..4913079 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0145_NO2_WGS84.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0245_NO2_WGS84.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0245_NO2_WGS84.nc new file mode 100644 index 0000000..f9189e9 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0245_NO2_WGS84.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0345_NO2_WGS84.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0345_NO2_WGS84.nc new file mode 100644 index 0000000..3a42a5a Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0345_NO2_WGS84.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84.nc new file mode 100644 index 0000000..3d0a237 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_idw_w_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_idw_w_subgrid.nc new file mode 100644 index 0000000..34b028e Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_idw_w_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_idw_wo_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_idw_wo_subgrid.nc new file mode 100644 index 0000000..32aebcd Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_idw_wo_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_tessellation_w_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_tessellation_w_subgrid.nc new file mode 100644 index 0000000..51f6a10 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_tessellation_w_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_tessellation_wo_subgrid.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_tessellation_wo_subgrid.nc new file mode 100644 index 0000000..c9c2f7b Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_0445_NO2_WGS84_tessellation_wo_subgrid.nc differ diff --git a/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_NO2_010_daily.nc b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_NO2_010_daily.nc new file mode 100644 index 0000000..2db9a20 Binary files /dev/null and b/OUTPUT/L3/hourly/NO2/202103/21/GK2_GEMS_L3_20210321_NO2_010_daily.nc differ diff --git a/OUTPUT/figure/00.png b/OUTPUT/figure/00.png new file mode 100644 index 0000000..5926442 Binary files /dev/null and b/OUTPUT/figure/00.png differ diff --git a/OUTPUT/figure/01.png b/OUTPUT/figure/01.png new file mode 100644 index 0000000..edb7b22 Binary files /dev/null and b/OUTPUT/figure/01.png differ diff --git a/OUTPUT/figure/02.png b/OUTPUT/figure/02.png new file mode 100644 index 0000000..929f43b Binary files /dev/null and b/OUTPUT/figure/02.png differ diff --git a/OUTPUT/figure/03.png b/OUTPUT/figure/03.png new file mode 100644 index 0000000..cb52eda Binary files /dev/null and b/OUTPUT/figure/03.png differ diff --git a/OUTPUT/figure/04.png b/OUTPUT/figure/04.png new file mode 100644 index 0000000..a5546e7 Binary files /dev/null and b/OUTPUT/figure/04.png differ diff --git a/OUTPUT/figure/average.png b/OUTPUT/figure/average.png new file mode 100644 index 0000000..d6c1fd9 Binary files /dev/null and b/OUTPUT/figure/average.png differ diff --git a/OUTPUT/figure/idw_w_subgrid.png b/OUTPUT/figure/idw_w_subgrid.png new file mode 100644 index 0000000..edf97f5 Binary files /dev/null and b/OUTPUT/figure/idw_w_subgrid.png differ diff --git a/OUTPUT/figure/idw_wo_subgrid.png b/OUTPUT/figure/idw_wo_subgrid.png new file mode 100644 index 0000000..4191e4c Binary files /dev/null and b/OUTPUT/figure/idw_wo_subgrid.png differ diff --git a/OUTPUT/figure/tessellation_w_subgrid.png b/OUTPUT/figure/tessellation_w_subgrid.png new file mode 100644 index 0000000..f11d4e4 Binary files /dev/null and b/OUTPUT/figure/tessellation_w_subgrid.png differ diff --git a/OUTPUT/figure/tessellation_wo_subgrid.png b/OUTPUT/figure/tessellation_wo_subgrid.png new file mode 100644 index 0000000..60bf5fb Binary files /dev/null and b/OUTPUT/figure/tessellation_wo_subgrid.png differ diff --git a/avg_main.py b/avg_main.py index 5059d8f..7317063 100644 --- a/avg_main.py +++ b/avg_main.py @@ -1,44 +1,44 @@ -#-*- encoding: utf8 -*- -import argparse -import datetime -import traceback - -from common.common import init -from process.average_process import AverageProcess - - -def parse_args(): - """ - 입력 파라미터를 파싱하는 메소드 - :return: 파싱한 입력 파라미터 구조체 - """ - - parser = argparse.ArgumentParser() - parser.add_argument("-d", "--date", type=lambda s: datetime.datetime.strptime(s, '%Y%m%d'), required=True) - parser.add_argument("-m", "--mode", choices=["yearly", "monthly", "daily"], default="daily", required=True) - parser.add_argument("-t", "--target", choices=["NO2"], required=True) - - options = parser.parse_args() - - return options - - -def main(): - config, logger = init("config.yml") - logger.info("Start GEMS L3 Average Process") - - options = parse_args() - - startTime = datetime.datetime.now() - - try: - worker = AverageProcess(config) - worker.run(options.date, options.mode, options.target) - except: - logger.error(traceback.format_exc()) - - logger.debug("running time : {} s".format((datetime.datetime.now() - startTime).total_seconds())) - logger.info("Done GEMS L3 Average Process") - -if __name__ == '__main__': - main() +#-*- encoding: utf8 -*- +import argparse +import datetime +import traceback + +from common.common import init +from process.average_process import AverageProcess + + +def parse_args(): + """ + 입력 파라미터를 파싱하는 메소드 + :return: 파싱한 입력 파라미터 구조체 + """ + + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--date", type=lambda s: datetime.datetime.strptime(s, '%Y%m%d'), required=True) + parser.add_argument("-m", "--mode", choices=["yearly", "monthly", "daily"], default="daily", required=True) + parser.add_argument("-t", "--target", choices=["NO2"], required=True) + + options = parser.parse_args() + + return options + + +def main(): + config, logger = init("config.yml") + logger.info("Start GEMS L3 Average Process") + + options = parse_args() + + startTime = datetime.datetime.now() + + try: + worker = AverageProcess(config) + worker.run(options.date, options.mode, options.target) + except: + logger.error(traceback.format_exc()) + + logger.debug("running time : {} s".format((datetime.datetime.now() - startTime).total_seconds())) + logger.info("Done GEMS L3 Average Process") + +if __name__ == '__main__': + main() diff --git a/common/__pycache__/common.cpython-38.pyc b/common/__pycache__/common.cpython-38.pyc new file mode 100644 index 0000000..d5eb7ba Binary files /dev/null and b/common/__pycache__/common.cpython-38.pyc differ diff --git a/common/__pycache__/common.cpython-39.pyc b/common/__pycache__/common.cpython-39.pyc new file mode 100644 index 0000000..f586847 Binary files /dev/null and b/common/__pycache__/common.cpython-39.pyc differ diff --git a/common/__pycache__/constant.cpython-38.pyc b/common/__pycache__/constant.cpython-38.pyc new file mode 100644 index 0000000..699421e Binary files /dev/null and b/common/__pycache__/constant.cpython-38.pyc differ diff --git a/common/__pycache__/constant.cpython-39.pyc b/common/__pycache__/constant.cpython-39.pyc new file mode 100644 index 0000000..5b64b79 Binary files /dev/null and b/common/__pycache__/constant.cpython-39.pyc differ diff --git a/common/__pycache__/log.cpython-38.pyc b/common/__pycache__/log.cpython-38.pyc new file mode 100644 index 0000000..da96283 Binary files /dev/null and b/common/__pycache__/log.cpython-38.pyc differ diff --git a/common/__pycache__/log.cpython-39.pyc b/common/__pycache__/log.cpython-39.pyc new file mode 100644 index 0000000..2afc33b Binary files /dev/null and b/common/__pycache__/log.cpython-39.pyc differ diff --git a/common/__pycache__/profile_utils.cpython-38.pyc b/common/__pycache__/profile_utils.cpython-38.pyc new file mode 100644 index 0000000..fa0af33 Binary files /dev/null and b/common/__pycache__/profile_utils.cpython-38.pyc differ diff --git a/common/__pycache__/profile_utils.cpython-39.pyc b/common/__pycache__/profile_utils.cpython-39.pyc new file mode 100644 index 0000000..389dc26 Binary files /dev/null and b/common/__pycache__/profile_utils.cpython-39.pyc differ diff --git a/common/common.py b/common/common.py index de39ea7..b882341 100644 --- a/common/common.py +++ b/common/common.py @@ -1,12 +1,12 @@ -import yaml -from common.log import init_logger - -def init(path): - config = load_config(path) - logger = init_logger(config) - - return config, logger - -def load_config(path): - with open(path, 'r', encoding="utf-8") as f: - return yaml.load(f, Loader=yaml.FullLoader) +import yaml +from common.log import init_logger + +def init(path): + config = load_config(path) + logger = init_logger(config) + + return config, logger + +def load_config(path): + with open(path, 'r', encoding="utf-8") as f: + return yaml.load(f, Loader=yaml.FullLoader) diff --git a/common/constant.py b/common/constant.py index 62b735f..2f42374 100644 --- a/common/constant.py +++ b/common/constant.py @@ -1,3 +1,3 @@ - - + + GEMS_L2_FILENAME_PATTERN = "(?PGK2)_(?PGEMS)_(?PL2)_(?P\d{8})_(?P