{ "cells": [ { "cell_type": "markdown", "id": "6fb1386c", "metadata": {}, "source": [ "# Read Granules" ] }, { "cell_type": "code", "execution_count": 1, "id": "d74b0c0e", "metadata": { "tags": [] }, "outputs": [], "source": [ "import starepandas\n", "import netCDF4\n", "import matplotlib.pyplot as plt\n", "import numpy\n", "import pandas\n", "import time\n", "import copy\n", "import geopandas\n", "import pystare\n", "import pyhdf" ] }, { "cell_type": "markdown", "id": "6962199e", "metadata": {}, "source": [ "## Manually reading " ] }, { "cell_type": "code", "execution_count": 2, "id": "81aa6cf3", "metadata": { "tags": [] }, "outputs": [], "source": [ "vnp03_name = '../tests/data/granules/VNP03DNB.A2020219.0742.001.2020219124651.nc'\n", "vnp03 = starepandas.io.granules.VNP03DNB(vnp03_name)\n", "vnp03.read_latlon()\n", "vnp03.read_data()\n", "vnp03 = vnp03.to_df(xy=True)" ] }, { "cell_type": "markdown", "id": "dad801a5-4733-42e3-b3f6-56864099885b", "metadata": {}, "source": [ "# VNP03" ] }, { "cell_type": "code", "execution_count": 14, "id": "03865566-800a-48ec-88dd-5abe543262cf", "metadata": {}, "outputs": [], "source": [ "file_path = '../tests/data/granules/VNP09.A2021171.2124.001.2021172033635.hdf'\n", "vnp09 = starepandas.io.granules.viirsl2.VNP09(file_path, nom_res='750m')\n", "vnp09.read_data()\n", "vnp09.read_timestamps()" ] }, { "cell_type": "code", "execution_count": 15, "id": "53e5f804-a21e-40a1-a031-1f230827e72b", "metadata": {}, "outputs": [], "source": [ "vnp03_path = vnp09.guess_companion_path(prefix='VNP03')\n", "vnp03 = starepandas.io.granules.VNP03MOD(vnp03_path)\n", "vnp03.read_data()\n", "vnp03.read_sidecar_index()\n", "vnp03.read_sidecar_latlon()" ] }, { "cell_type": "code", "execution_count": 16, "id": "2f2523cd-449e-498b-bb79-bb1dc0f7da92", "metadata": {}, "outputs": [], "source": [ "vnp09 = vnp09.to_df(xy=True)\n", "vnp03 = vnp03.to_df()\n", "vnp09 = vnp09.join(vnp03)\n", "vnp09.dropna(inplace=True)" ] }, { "cell_type": "code", "execution_count": 17, "id": "0bb84b98-5fbc-4498-b8d5-47a54f001116", "metadata": {}, "outputs": [], "source": [ "qf1 = starepandas.io.granules.viirsl2.decode_qf1(vnp09['QF1 Surface Reflectance'])\n", "qf2 = starepandas.io.granules.viirsl2.decode_qf2(vnp09['QF2 Surface Reflectance'])\n", "vnp09 = vnp09.join(qf1).join(qf2)" ] }, { "cell_type": "code", "execution_count": 20, "id": "b4ae60d5-efc6-4ee0-bd7b-1ed5dfc14643", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pandas.DataFrame(vnp09).plot(x='x', y='sensor_zenith', kind='scatter')" ] }, { "cell_type": "markdown", "id": "0c567ac5-758b-45ee-a71a-3f901220f011", "metadata": {}, "source": [ "## MOD09GA" ] }, { "cell_type": "code", "execution_count": 7, "id": "a60b5bdf-a527-401e-bb4e-cb3dc368db92", "metadata": { "tags": [] }, "outputs": [], "source": [ "file_name = '../tests/data/granules/MOD09GA.A2020009.h00v08.006.2020011025435.hdf'" ] }, { "cell_type": "code", "execution_count": 8, "id": "1eb575cb-43e2-4840-8c6d-20b653788d68", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xysur_refl_b01_1sur_refl_b02_1sur_refl_b03_1sur_refl_b04_1sur_refl_b05_1sur_refl_b06_1sur_refl_b07_1QC_500m_1obscov_500m_1
000NaNNaNNaNNaNNaNNaNNaN<NA>NaN
110NaNNaNNaNNaNNaNNaNNaN<NA>NaN
220NaNNaNNaNNaNNaNNaNNaN<NA>NaN
330NaNNaNNaNNaNNaNNaNNaN<NA>NaN
440NaNNaNNaNNaNNaNNaNNaN<NA>NaN
....................................
5759995239523990.20200.19390.21870.20530.18720.13590.081710737418240.15
5759996239623990.21220.20430.23200.21740.20150.13560.090010737418240.19
5759997239723990.21220.20430.23200.21740.20150.13560.090010737418240.19
5759998239823990.21740.20940.23420.22250.20740.14640.086710737418240.11
5759999239923990.21740.20940.23420.22250.20740.14640.086710737418240.14
\n", "

5760000 rows × 11 columns

\n", "
" ], "text/plain": [ " x y sur_refl_b01_1 sur_refl_b02_1 sur_refl_b03_1 \\\n", "0 0 0 NaN NaN NaN \n", "1 1 0 NaN NaN NaN \n", "2 2 0 NaN NaN NaN \n", "3 3 0 NaN NaN NaN \n", "4 4 0 NaN NaN NaN \n", "... ... ... ... ... ... \n", "5759995 2395 2399 0.2020 0.1939 0.2187 \n", "5759996 2396 2399 0.2122 0.2043 0.2320 \n", "5759997 2397 2399 0.2122 0.2043 0.2320 \n", "5759998 2398 2399 0.2174 0.2094 0.2342 \n", "5759999 2399 2399 0.2174 0.2094 0.2342 \n", "\n", " sur_refl_b04_1 sur_refl_b05_1 sur_refl_b06_1 sur_refl_b07_1 \\\n", "0 NaN NaN NaN NaN \n", "1 NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN \n", "3 NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN \n", "... ... ... ... ... \n", "5759995 0.2053 0.1872 0.1359 0.0817 \n", "5759996 0.2174 0.2015 0.1356 0.0900 \n", "5759997 0.2174 0.2015 0.1356 0.0900 \n", "5759998 0.2225 0.2074 0.1464 0.0867 \n", "5759999 0.2225 0.2074 0.1464 0.0867 \n", "\n", " QC_500m_1 obscov_500m_1 \n", "0 NaN \n", "1 NaN \n", "2 NaN \n", "3 NaN \n", "4 NaN \n", "... ... ... \n", "5759995 1073741824 0.15 \n", "5759996 1073741824 0.19 \n", "5759997 1073741824 0.19 \n", "5759998 1073741824 0.11 \n", "5759999 1073741824 0.14 \n", "\n", "[5760000 rows x 11 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod09ga = starepandas.read_granule(file_name, xy=True)\n", "mod09ga" ] }, { "cell_type": "code", "execution_count": 9, "id": "84a3e0e7-92be-4d62-a948-0c0493860b59", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
sur_refl_b01_1sur_refl_b02_1sur_refl_b03_1sur_refl_b04_1sur_refl_b05_1sur_refl_b06_1sur_refl_b07_1QC_500m_1obscov_500m_1state_1km_1cloudcloud_shadowcloud_internalsnow_mod35snow_internal
0NaNNaNNaNNaNNaNNaNNaN<NA>NaN<NA><NA>TrueTrueTrueTrue
1NaNNaNNaNNaNNaNNaNNaN<NA>NaN<NA><NA>TrueTrueTrueTrue
2NaNNaNNaNNaNNaNNaNNaN<NA>NaN<NA><NA>TrueTrueTrueTrue
3NaNNaNNaNNaNNaNNaNNaN<NA>NaN<NA><NA>TrueTrueTrueTrue
4NaNNaNNaNNaNNaNNaNNaN<NA>NaN<NA><NA>TrueTrueTrueTrue
................................................
57599950.20200.19390.21870.20530.18720.13590.081710737418240.1518491FalseTrueFalseFalse
57599960.21220.20430.23200.21740.20150.13560.090010737418240.1918491FalseTrueFalseFalse
57599970.21220.20430.23200.21740.20150.13560.090010737418240.1918491FalseTrueFalseFalse
57599980.21740.20940.23420.22250.20740.14640.086710737418240.1118491FalseTrueFalseFalse
57599990.21740.20940.23420.22250.20740.14640.086710737418240.1418491FalseTrueFalseFalse
\n", "

5760000 rows × 15 columns

\n", "
" ], "text/plain": [ " sur_refl_b01_1 sur_refl_b02_1 sur_refl_b03_1 sur_refl_b04_1 \\\n", "0 NaN NaN NaN NaN \n", "1 NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN \n", "3 NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN \n", "... ... ... ... ... \n", "5759995 0.2020 0.1939 0.2187 0.2053 \n", "5759996 0.2122 0.2043 0.2320 0.2174 \n", "5759997 0.2122 0.2043 0.2320 0.2174 \n", "5759998 0.2174 0.2094 0.2342 0.2225 \n", "5759999 0.2174 0.2094 0.2342 0.2225 \n", "\n", " sur_refl_b05_1 sur_refl_b06_1 sur_refl_b07_1 QC_500m_1 \\\n", "0 NaN NaN NaN \n", "1 NaN NaN NaN \n", "2 NaN NaN NaN \n", "3 NaN NaN NaN \n", "4 NaN NaN NaN \n", "... ... ... ... ... \n", "5759995 0.1872 0.1359 0.0817 1073741824 \n", "5759996 0.2015 0.1356 0.0900 1073741824 \n", "5759997 0.2015 0.1356 0.0900 1073741824 \n", "5759998 0.2074 0.1464 0.0867 1073741824 \n", "5759999 0.2074 0.1464 0.0867 1073741824 \n", "\n", " obscov_500m_1 state_1km_1 cloud cloud_shadow cloud_internal \\\n", "0 NaN True True \n", "1 NaN True True \n", "2 NaN True True \n", "3 NaN True True \n", "4 NaN True True \n", "... ... ... ... ... ... \n", "5759995 0.15 1849 1 False True \n", "5759996 0.19 1849 1 False True \n", "5759997 0.19 1849 1 False True \n", "5759998 0.11 1849 1 False True \n", "5759999 0.14 1849 1 False True \n", "\n", " snow_mod35 snow_internal \n", "0 True True \n", "1 True True \n", "2 True True \n", "3 True True \n", "4 True True \n", "... ... ... \n", "5759995 False False \n", "5759996 False False \n", "5759997 False False \n", "5759998 False False \n", "5759999 False False \n", "\n", "[5760000 rows x 15 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod09ga = starepandas.io.granules.Mod09GA(file_name)\n", "mod09ga.read_data()\n", "\n", "ds_name = 'state_1km_1'\n", "mod09ga.read_dataset(ds_name, resample_factor=2)\n", "mod09ga.decode_state('state_1km_1')\n", "mod09ga.to_df()" ] }, { "cell_type": "code", "execution_count": 10, "id": "31de686f-cada-46fd-974b-1872193fd65a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[-2.8672, -2.8672, -2.8672, ..., -2.8672, -2.8672, -2.8672],\n", " [-2.8672, -2.8672, -2.8672, ..., -2.8672, -2.8672, -2.8672],\n", " [-2.8672, -2.8672, -2.8672, ..., -2.8672, -2.8672, -2.8672],\n", " ...,\n", " [-2.8672, -2.8672, -2.8672, ..., 0.2104, 0.2027, 0.2159],\n", " [-2.8672, -2.8672, -2.8672, ..., 0.2104, 0.2307, 0.2307],\n", " [-2.8672, -2.8672, -2.8672, ..., 0.2122, 0.2174, 0.2174]])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sd = pyhdf.SD.SD(file_name)\n", "ds = sd.select('sur_refl_b01_1')\n", "ds.get()/ ds.attributes()['scale_factor']" ] }, { "cell_type": "markdown", "id": "bfba25d6-1077-4c1f-90e6-43b28feb32ec", "metadata": {}, "source": [ "## MOD09" ] }, { "cell_type": "code", "execution_count": 11, "id": "ea8d3869-8e7d-4e0b-8ca6-32daa67eff44", "metadata": {}, "outputs": [], "source": [ "file_name = '../tests/data/granules/MOD09.A2002299.0710.006.2015151173939.hdf'\n", "mod09 = starepandas.read_granule(file_name)" ] }, { "cell_type": "code", "execution_count": 12, "id": "003a8e29-3416-4527-aaf0-516bb20139c7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cloudcloud_shadowcloud_internalsnow_mod35snow_internal
000FalseFalseFalseFalse
100FalseFalseFalseFalse
200FalseFalseFalseFalse
300FalseFalseFalseFalse
400FalseFalseFalseFalse
..................
274861500FalseFalseFalseFalse
274861600FalseFalseFalseFalse
274861700FalseFalseFalseFalse
274861800FalseFalseFalseFalse
274861900FalseFalseFalseFalse
\n", "

2748620 rows × 5 columns

\n", "
" ], "text/plain": [ " cloud cloud_shadow cloud_internal snow_mod35 snow_internal\n", "0 00 False False False False\n", "1 00 False False False False\n", "2 00 False False False False\n", "3 00 False False False False\n", "4 00 False False False False\n", "... ... ... ... ... ...\n", "2748615 00 False False False False\n", "2748616 00 False False False False\n", "2748617 00 False False False False\n", "2748618 00 False False False False\n", "2748619 00 False False False False\n", "\n", "[2748620 rows x 5 columns]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "starepandas.io.granules.modis.decode_state(mod09['1km Reflectance Data State QA'])" ] }, { "cell_type": "markdown", "id": "1f32d2eb", "metadata": {}, "source": [ "## MOD05" ] }, { "cell_type": "code", "execution_count": 13, "id": "d3f3faf4", "metadata": {}, "outputs": [], "source": [ "fname = '../tests/data/granules/MOD05_L2.A2019336.0000.061.2019336211522.hdf'\n", "mod05 = starepandas.read_granule(fname, sidecar=True, latlon=True, xy=True, read_timestamp=True)\n", "sids = mod05.to_array(mod05._sid_column_name)\n", "#mod05.to_sidecar('test.nc')" ] }, { "cell_type": "code", "execution_count": 14, "id": "a77e9851-5e55-4cfa-a9c0-89da5f449134", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latlonsidsts_startts_endxyScan_Start_TimeSolar_ZenithSolar_AzimuthSensor_ZenithSensor_AzimuthWater_Vapor_Infrared
053.201778-15.93399642984737645004648092019-12-022019-12-02 00:05:00008.493984e+08147.089997-22.95999965.339999-89.519998NaN
153.203171-16.28810142984581683805112092019-12-022019-12-02 00:05:00108.493984e+08146.999997-23.53999964.719999-89.799998NaN
253.203518-16.62910542973945690147178972019-12-022019-12-02 00:05:00208.493984e+08146.919997-24.09999964.109999-90.079998NaN
353.202934-16.95792842973006988729993692019-12-022019-12-02 00:05:00308.493984e+08146.839997-24.63999963.509999-90.339998NaN
453.201508-17.27531642972908579221211612019-12-022019-12-02 00:05:00408.493984e+08146.759997-25.15999962.909999-90.589998NaN
..........................................
10961564.084297-66.28141037276866383706156892019-12-022019-12-02 00:05:002654058.493987e+08121.569997-74.67999862.22999947.999999NaN
10961663.960953-66.59135437276613745457908572019-12-022019-12-02 00:05:002664058.493987e+08121.469997-75.04999862.81999947.719999NaN
10961763.831799-66.91125537278382569250649692019-12-022019-12-02 00:05:002674058.493987e+08121.369997-75.43999863.41999947.429999NaN
10961863.698635-67.23622937278430637319498012019-12-022019-12-02 00:05:002684058.493987e+08121.259997-75.82999864.01999947.139999NaN
10961963.551617-67.58950837278531632256164252019-12-022019-12-02 00:05:002694058.493987e+08121.149997-76.24999864.63999946.819999NaN
\n", "

109620 rows × 13 columns

\n", "
" ], "text/plain": [ " lat lon sids ts_start \\\n", "0 53.201778 -15.933996 4298473764500464809 2019-12-02 \n", "1 53.203171 -16.288101 4298458168380511209 2019-12-02 \n", "2 53.203518 -16.629105 4297394569014717897 2019-12-02 \n", "3 53.202934 -16.957928 4297300698872999369 2019-12-02 \n", "4 53.201508 -17.275316 4297290857922121161 2019-12-02 \n", "... ... ... ... ... \n", "109615 64.084297 -66.281410 3727686638370615689 2019-12-02 \n", "109616 63.960953 -66.591354 3727661374545790857 2019-12-02 \n", "109617 63.831799 -66.911255 3727838256925064969 2019-12-02 \n", "109618 63.698635 -67.236229 3727843063731949801 2019-12-02 \n", "109619 63.551617 -67.589508 3727853163225616425 2019-12-02 \n", "\n", " ts_end x y Scan_Start_Time Solar_Zenith \\\n", "0 2019-12-02 00:05:00 0 0 8.493984e+08 147.089997 \n", "1 2019-12-02 00:05:00 1 0 8.493984e+08 146.999997 \n", "2 2019-12-02 00:05:00 2 0 8.493984e+08 146.919997 \n", "3 2019-12-02 00:05:00 3 0 8.493984e+08 146.839997 \n", "4 2019-12-02 00:05:00 4 0 8.493984e+08 146.759997 \n", "... ... ... ... ... ... \n", "109615 2019-12-02 00:05:00 265 405 8.493987e+08 121.569997 \n", "109616 2019-12-02 00:05:00 266 405 8.493987e+08 121.469997 \n", "109617 2019-12-02 00:05:00 267 405 8.493987e+08 121.369997 \n", "109618 2019-12-02 00:05:00 268 405 8.493987e+08 121.259997 \n", "109619 2019-12-02 00:05:00 269 405 8.493987e+08 121.149997 \n", "\n", " Solar_Azimuth Sensor_Zenith Sensor_Azimuth Water_Vapor_Infrared \n", "0 -22.959999 65.339999 -89.519998 NaN \n", "1 -23.539999 64.719999 -89.799998 NaN \n", "2 -24.099999 64.109999 -90.079998 NaN \n", "3 -24.639999 63.509999 -90.339998 NaN \n", "4 -25.159999 62.909999 -90.589998 NaN \n", "... ... ... ... ... \n", "109615 -74.679998 62.229999 47.999999 NaN \n", "109616 -75.049998 62.819999 47.719999 NaN \n", "109617 -75.439998 63.419999 47.429999 NaN \n", "109618 -75.829998 64.019999 47.139999 NaN \n", "109619 -76.249998 64.639999 46.819999 NaN \n", "\n", "[109620 rows x 13 columns]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mod05" ] }, { "cell_type": "markdown", "id": "68aad75a-0e06-4f27-a438-6fa5cc9a4c21", "metadata": {}, "source": [ "### Subset Loading" ] }, { "cell_type": "code", "execution_count": 15, "id": "4a4da8f7-3279-4e94-9db6-22059770f66f", "metadata": {}, "outputs": [], "source": [ "import shapely\n", "roi = shapely.geometry.Polygon([[-120, 37],[-120, 38],[-119, 38],[-119, 37]])\n", "roi = geopandas.GeoDataFrame(geometry=[roi], crs=4326)\n", "roi = starepandas.STAREDataFrame(roi)\n", "roi['sids'] = roi.make_sids(level=10)\n", "sids = roi.sids.iloc[0]" ] }, { "cell_type": "code", "execution_count": 16, "id": "935404ad-29c3-4f7b-9f64-930f552ed5e8", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "roi.plot(trixels=False)" ] }, { "cell_type": "code", "execution_count": 17, "id": "35dc0658-b138-4276-a4a6-0c979cf33187", "metadata": {}, "outputs": [], "source": [ "fname = '../tests/data/granules/MOD05_L2.A2019336.0000.061.2019336211522.hdf'\n", "mod = starepandas.io.granules.Mod05(fname)\n", "mod.read_sidecar_index()" ] }, { "cell_type": "code", "execution_count": 18, "id": "a0c3c7ea-a9ec-49bf-9084-1c97b4b1b595", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " ...,\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False],\n", " [False, False, False, ..., False, False, False]])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "intersects = pystare.intersects(sids, mod.sids.flatten())\n", "intersects = numpy.reshape(intersects, mod.sids.shape)\n", "intersects" ] }, { "cell_type": "markdown", "id": "16162b1b", "metadata": {}, "source": [ "## VNP02" ] }, { "cell_type": "code", "execution_count": 19, "id": "622c6ca1", "metadata": {}, "outputs": [], "source": [ "vnp02_name = '../tests/data/granules/VNP02DNB.A2020219.0742.001.2020219125654.nc'\n", "vnp02 = starepandas.read_granule(vnp02_name, sidecar=False, latlon=False)" ] }, { "cell_type": "code", "execution_count": 20, "id": "67315c2b", "metadata": {}, "outputs": [], "source": [ "vnp02 = vnp03.join(vnp02)" ] }, { "cell_type": "code", "execution_count": 21, "id": "e93de612", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latlonsidsland_water_maskquality_flagsensor_azimuthsensor_zenithsolar_azimuthsolar_zenithDNB_observationsDNB_quality_flags
62640.365364-116.543037334907218425685531020-94.07000053.189999-122.68000026.3499982.836819e-0916
62740.364918-116.550812334907634060803252620-94.07000053.169998-122.69999726.3499983.408683e-0916
88240.144939-119.681236332980866255837220520-96.00000041.889999-127.22999624.2600002.692489e-0916
88340.144070-119.691635332980867414899182120-96.00999541.840000-127.25000024.2500002.414932e-0916
110139.917175-122.075150332988625789656657320-97.36000130.549999-131.02999922.6999992.446824e-0916
....................................
10188795-999.900024-999.900024402627099989716585771NaNNaNNaNNaN2.496130e-090
10188796-999.900024-999.900024-29649712071NaNNaNNaNNaN3.096395e-090
10188797-999.900024-999.900024402627099989716585771NaNNaNNaNNaN2.796263e-090
10188798-999.900024-999.900024-29649712071NaNNaNNaNNaN2.075945e-090
10188799-999.900024-999.900024402627099989716585771NaNNaNNaNNaN2.256024e-090
\n", "

6437036 rows × 11 columns

\n", "
" ], "text/plain": [ " lat lon sids land_water_mask \\\n", "626 40.365364 -116.543037 3349072184256855310 2 \n", "627 40.364918 -116.550812 3349076340608032526 2 \n", "882 40.144939 -119.681236 3329808662558372205 2 \n", "883 40.144070 -119.691635 3329808674148991821 2 \n", "1101 39.917175 -122.075150 3329886257896566573 2 \n", "... ... ... ... ... \n", "10188795 -999.900024 -999.900024 4026270999897165857 7 \n", "10188796 -999.900024 -999.900024 -296497120 7 \n", "10188797 -999.900024 -999.900024 4026270999897165857 7 \n", "10188798 -999.900024 -999.900024 -296497120 7 \n", "10188799 -999.900024 -999.900024 4026270999897165857 7 \n", "\n", " quality_flag sensor_azimuth sensor_zenith solar_azimuth \\\n", "626 0 -94.070000 53.189999 -122.680000 \n", "627 0 -94.070000 53.169998 -122.699997 \n", "882 0 -96.000000 41.889999 -127.229996 \n", "883 0 -96.009995 41.840000 -127.250000 \n", "1101 0 -97.360001 30.549999 -131.029999 \n", "... ... ... ... ... \n", "10188795 1 NaN NaN NaN \n", "10188796 1 NaN NaN NaN \n", "10188797 1 NaN NaN NaN \n", "10188798 1 NaN NaN NaN \n", "10188799 1 NaN NaN NaN \n", "\n", " solar_zenith DNB_observations DNB_quality_flags \n", "626 26.349998 2.836819e-09 16 \n", "627 26.349998 3.408683e-09 16 \n", "882 24.260000 2.692489e-09 16 \n", "883 24.250000 2.414932e-09 16 \n", "1101 22.699999 2.446824e-09 16 \n", "... ... ... ... \n", "10188795 NaN 2.496130e-09 0 \n", "10188796 NaN 3.096395e-09 0 \n", "10188797 NaN 2.796263e-09 0 \n", "10188798 NaN 2.075945e-09 0 \n", "10188799 NaN 2.256024e-09 0 \n", "\n", "[6437036 rows x 11 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vnp02[(vnp02.land_water_mask==2) | (vnp02.land_water_mask==4) | (vnp02.land_water_mask==6) | (vnp02.land_water_mask==7)]" ] }, { "cell_type": "markdown", "id": "efbd5e95", "metadata": {}, "source": [ "## VNP CLDMSK" ] }, { "cell_type": "code", "execution_count": 22, "id": "424c9c08", "metadata": {}, "outputs": [], "source": [ "cldmsk_name = '../tests/data/granules/CLDMSK_L2_VIIRS_SNPP.A2020219.0742.001.2020219190616.nc'" ] }, { "cell_type": "code", "execution_count": 23, "id": "b00fe1b3", "metadata": {}, "outputs": [], "source": [ "cldmsk = starepandas.io.granules.CLDMSKL2VIIRS(cldmsk_name)" ] }, { "cell_type": "code", "execution_count": 24, "id": "86eb7fae", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
latlonInteger_Cloud_Mask
041.747662-104.9694983
141.747696-104.9502183
241.747730-104.9302373
341.747761-104.9108433
441.747784-104.8917473
............
1034239516.522247-78.5950932
1034239616.518646-78.5801621
1034239716.515034-78.5652080
1034239816.511414-78.5502241
1034239916.507788-78.5351871
\n", "

10342400 rows × 3 columns

\n", "
" ], "text/plain": [ " lat lon Integer_Cloud_Mask\n", "0 41.747662 -104.969498 3\n", "1 41.747696 -104.950218 3\n", "2 41.747730 -104.930237 3\n", "3 41.747761 -104.910843 3\n", "4 41.747784 -104.891747 3\n", "... ... ... ...\n", "10342395 16.522247 -78.595093 2\n", "10342396 16.518646 -78.580162 1\n", "10342397 16.515034 -78.565208 0\n", "10342398 16.511414 -78.550224 1\n", "10342399 16.507788 -78.535187 1\n", "\n", "[10342400 rows x 3 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cldmsk.read_latlon()\n", "cldmsk.read_data()\n", "cldmsk.to_df()" ] }, { "cell_type": "markdown", "id": "5ccc701d", "metadata": {}, "source": [ "## Plotting" ] }, { "cell_type": "code", "execution_count": 25, "id": "e50b81d3", "metadata": {}, "outputs": [], "source": [ "path = '../tests/data/granules/VNP03DNB.A2020219.0742.001.2020219124651.nc'\n", "vnp03dnb = starepandas.io.granules.VNP03DNB(path)\n", "vnp03dnb.read_latlon()\n", "\n", "path = '../tests/data/granules/VNP03MOD.A2020219.0742.001.2020219124651.nc'\n", "vnp03mod = starepandas.io.granules.VNP03MOD(path)\n", "vnp03mod.read_latlon()\n", "\n", "path = '../tests/data/granules/CLDMSK_L2_VIIRS_SNPP.A2020219.0742.001.2020219190616.nc'\n", "cldmsk = starepandas.io.granules.CLDMSKL2VIIRS(path)\n", "cldmsk.read_latlon()" ] }, { "cell_type": "code", "execution_count": 26, "id": "023a29c9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(5,5), dpi=100)\n", "\n", "n = 20\n", "ns = 0\n", "nt = 0\n", "\n", "ax.grid('on')\n", "\n", "ax.plot(cldmsk.lon[ns:ns+n, nt:nt+n].flatten(), cldmsk.lat[ns:ns+n, nt:nt+n].flatten(), \n", " color='r', lw=0, marker='.')\n", "\n", "ax.plot(vnp03mod.lon[ns:ns+n, nt:nt+n].flatten(), vnp03mod.lat[ns:ns+n, nt:nt+n].flatten(), \n", " color='g',lw=0, marker='.')\n", "\n", "ax.plot(vnp03dnb.lon[ns:ns+n, nt:nt+n].flatten(), vnp03dnb.lat[ns:ns+n, nt:nt+n].flatten(), \n", " color='b',lw=0, marker='.')" ] }, { "cell_type": "code", "execution_count": null, "id": "4421e5ee", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }