{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "0dd2c5d4", "metadata": {}, "outputs": [], "source": [ "import xarray as xr\n", "import geopandas as gpd\n", "from shapely.geometry import box\n", "import rioxarray as rxr # Make sure you have rioxarray installed (pip install rioxarray)\n", "import numpy as np\n", "import ibis\n", "ibis.options.interactive = True" ] }, { "cell_type": "code", "execution_count": 2, "id": "d615f835", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "8af2324c357f4c16910329aaf3247544", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0, layout=Layout(width='auto'), style=ProgressStyle(bar_color='black'))" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "con = ibis.duckdb.connect()\n", "con.raw_sql('INSTALL spatial;')\n", "con.raw_sql('LOAD spatial;')" ] }, { "cell_type": "markdown", "id": "700cf1f9", "metadata": {}, "source": [ "- The .rio accessor: https://corteva.github.io/rioxarray/html/rioxarray.html#rioxarray-rio-accessors\n", "\n", "- Affine( pixel_width, 0, top_left_x_coord,\n", " 0, -pixel_height, top_left_y_coord)\n", "\n", "- Rasterio Affine Docs (https://affine.readthedocs.io/en/latest/)" ] }, { "cell_type": "code", "execution_count": 4, "id": "cf514138", "metadata": {}, "outputs": [], "source": [ "filename = 'BedMachineAntarctica-v3.nc'\n", "sat_im = rxr.open_rasterio(filename)\n", "transform = sat_im.rio.transform()\n", "\n", "# filename = 'antarctic_ice_vel_phase_map_v01.nc'\n", "# vel = rxr.open_rasterio(filename)\n", "# vx_transform = vel.VX.rio.transform()\n", "# vy_transform = vel.VY.rio.transform()" ] }, { "cell_type": "code", "execution_count": 5, "id": "7f98b578", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 7GB\n",
       "Dimensions:       (band: 1, x: 12445, y: 12445)\n",
       "Coordinates:\n",
       "  * band          (band) int64 8B 1\n",
       "  * x             (x) float64 100kB -2.8e+06 -2.8e+06 ... 2.799e+06 2.8e+06\n",
       "  * y             (y) float64 100kB 2.8e+06 2.8e+06 ... -2.799e+06 -2.8e+06\n",
       "    spatial_ref   int64 8B 0\n",
       "    coord_system  int64 8B 0\n",
       "Data variables:\n",
       "    lat           (band, y, x) float64 1GB ...\n",
       "    SOURCE        (band, y, x) int8 155MB ...\n",
       "    lon           (band, y, x) float64 1GB ...\n",
       "    VX            (band, y, x) float32 620MB ...\n",
       "    VY            (band, y, x) float32 620MB ...\n",
       "    STDX          (band, y, x) float32 620MB ...\n",
       "    STDY          (band, y, x) float32 620MB ...\n",
       "    ERRX          (band, y, x) float32 620MB ...\n",
       "    ERRY          (band, y, x) float32 620MB ...\n",
       "    CNT           (band, y, x) int32 620MB ...\n",
       "Attributes: (12/27)\n",
       "    cdm_data_type:             Grid\n",
       "    comment:                   \n",
       "    Conventions:               CF-1.6\n",
       "    creator_name:              J. Mouginot\n",
       "    date_created:              2019-07-08T14:43:24.00005131959583Z\n",
       "    geospatial_lat_max:        -60\n",
       "    ...                        ...\n",
       "    spatial_resolution:        450 m\n",
       "    standard_name_vocabulary:  CF Standard Name Table (v22, 12 February 2013)\n",
       "    summary:                   \n",
       "    time_coverage_end:         2016-12-31\n",
       "    time_coverage_start:       1995-01-01\n",
       "    title:                     MEaSURES Antarctica Ice Velocity Map 450m spacing
" ], "text/plain": [ " Size: 7GB\n", "Dimensions: (band: 1, x: 12445, y: 12445)\n", "Coordinates:\n", " * band (band) int64 8B 1\n", " * x (x) float64 100kB -2.8e+06 -2.8e+06 ... 2.799e+06 2.8e+06\n", " * y (y) float64 100kB 2.8e+06 2.8e+06 ... -2.799e+06 -2.8e+06\n", " spatial_ref int64 8B 0\n", " coord_system int64 8B 0\n", "Data variables:\n", " lat (band, y, x) float64 1GB ...\n", " SOURCE (band, y, x) int8 155MB ...\n", " lon (band, y, x) float64 1GB ...\n", " VX (band, y, x) float32 620MB ...\n", " VY (band, y, x) float32 620MB ...\n", " STDX (band, y, x) float32 620MB ...\n", " STDY (band, y, x) float32 620MB ...\n", " ERRX (band, y, x) float32 620MB ...\n", " ERRY (band, y, x) float32 620MB ...\n", " CNT (band, y, x) int32 620MB ...\n", "Attributes: (12/27)\n", " cdm_data_type: Grid\n", " comment: \n", " Conventions: CF-1.6\n", " creator_name: J. Mouginot\n", " date_created: 2019-07-08T14:43:24.00005131959583Z\n", " geospatial_lat_max: -60\n", " ... ...\n", " spatial_resolution: 450 m\n", " standard_name_vocabulary: CF Standard Name Table (v22, 12 February 2013)\n", " summary: \n", " time_coverage_end: 2016-12-31\n", " time_coverage_start: 1995-01-01\n", " title: MEaSURES Antarctica Ice Velocity Map 450m spacing" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vel" ] }, { "cell_type": "code", "execution_count": 5, "id": "9489595e", "metadata": {}, "outputs": [], "source": [ "tab = con.read_parquet('grid_300km_30m.parquet')" ] }, { "cell_type": "code", "execution_count": 6, "id": "98f2dd49", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "aa7e518e9ed745d9869ca053e848a57d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "FloatProgress(value=0.0, layout=Layout(width='auto'), style=ProgressStyle(bar_color='black'))" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Stratified sampling in 'THICK' bins using ibis to conserve memory\n", "num_points = 200_000\n", "n_bins = 50 # Adjust for smoothness\n", "\n", "# Compute bin edges\n", "thick_min = tab.THICK.min().execute()\n", "thick_max = tab.THICK.max().execute()\n", "bin_edges = np.linspace(thick_min, thick_max, n_bins + 1)\n", "\n", "samples_per_bin = num_points // n_bins\n", "sampled_tables = []\n", "\n", "for b in range(n_bins):\n", " lower = bin_edges[b]\n", " upper = bin_edges[b+1]\n", " # Filter rows in this bin\n", " bin_rows = tab.filter((tab.THICK >= lower) & (tab.THICK < upper))\n", " # Count rows in this bin\n", " bin_count = bin_rows.count().execute()\n", " n = min(samples_per_bin, bin_count)\n", " if n > 0:\n", " # Sample n rows from this bin\n", " sampled = bin_rows.sample(n/bin_count)\n", " sampled_tables.append(sampled)\n", "\n", "# Concatenate all sampled tables\n", "sampled_tab = sampled_tables[0]\n", "for t in sampled_tables[1:]:\n", " sampled_tab = sampled_tab.union(t)\n", "\n", "# 3.1. Create a spatial index for your GeoDataFrame\n", "gdf = sampled_tab.to_pandas()\n", "gdf.crs = \"EPSG:3031\"\n", "gdf_sindex = gdf.sindex" ] }, { "cell_type": "code", "execution_count": 7, "id": "e57852d7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "188641" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.hist(gdf.THICK, bins = 50)\n", "\n", "len(gdf)" ] }, { "cell_type": "code", "execution_count": 8, "id": "ae2f315d", "metadata": {}, "outputs": [], "source": [ "gdf.to_parquet(\"CNN_uniform_medGrid.parquet\", engine='pyarrow', index=False) " ] }, { "cell_type": "code", "execution_count": 9, "id": "e1e79d11", "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", "
THICKgeometryEASTNORTHvxvyvith_bmsmbzstempgridCellId
067.61POINT (-436492.017 805811.959)-4.364920e+058.058120e+05-0.4723370.0719710.477789465.73584072.7923621142.1935510.040661244.656438168
120.52POINT (-1771954.88 406450.511)-1.771955e+064.064505e+05-200.011575-18.488875200.8643041.167979890.7504280.1339340.000384258.822599146
217.00POINT (-2081203.73 929734.905)-2.081204e+069.297349e+05-30.231132-52.25114860.36641386.6876471122.7039661260.2912870.077658258.262919181
39.76POINT (-2171317.081 1127943.654)-2.171317e+061.127944e+06328.824283433.530033544.126547291.501724349.52900131.5428200.002879259.838462181
414.60POINT (-1790058.512 611857.208)-1.790059e+066.118572e+05-139.122730-343.245610370.368307191.023203466.59578420.5843480.000208260.769420164
..........................................
1886364691.40POINT (1339999.16 -724732.062)1.339999e+06-7.247321e+050.195412-0.6615230.6897824461.96262726.1706963212.8732910.000693222.00026684
1886374683.00POINT (1340438.153 -722669.668)1.340438e+06-7.226697e+050.229136-0.6606270.6992364677.49540626.0989923211.7980070.000576222.01194784
1886384762.80POINT (1339922.911 -724065.063)1.339923e+06-7.240651e+050.200907-0.6609400.6908014550.00877126.1429503212.5235500.000711222.00437584
1886394724.17POINT (1335450.234 -721026.256)1.335450e+06-7.210263e+050.045724-0.7383380.7397524547.44261026.1111633211.6823840.000574222.03010084
1886404714.01POINT (1336947.857 -720463.901)1.336948e+06-7.204639e+050.096421-0.7349600.7412584580.86773726.0675743211.4718000.000371222.03056184
\n", "

188641 rows × 13 columns

\n", "
" ], "text/plain": [ " THICK geometry EAST NORTH \\\n", "0 67.61 POINT (-436492.017 805811.959) -4.364920e+05 8.058120e+05 \n", "1 20.52 POINT (-1771954.88 406450.511) -1.771955e+06 4.064505e+05 \n", "2 17.00 POINT (-2081203.73 929734.905) -2.081204e+06 9.297349e+05 \n", "3 9.76 POINT (-2171317.081 1127943.654) -2.171317e+06 1.127944e+06 \n", "4 14.60 POINT (-1790058.512 611857.208) -1.790059e+06 6.118572e+05 \n", "... ... ... ... ... \n", "188636 4691.40 POINT (1339999.16 -724732.062) 1.339999e+06 -7.247321e+05 \n", "188637 4683.00 POINT (1340438.153 -722669.668) 1.340438e+06 -7.226697e+05 \n", "188638 4762.80 POINT (1339922.911 -724065.063) 1.339923e+06 -7.240651e+05 \n", "188639 4724.17 POINT (1335450.234 -721026.256) 1.335450e+06 -7.210263e+05 \n", "188640 4714.01 POINT (1336947.857 -720463.901) 1.336948e+06 -7.204639e+05 \n", "\n", " vx vy v ith_bm smb \\\n", "0 -0.472337 0.071971 0.477789 465.735840 72.792362 \n", "1 -200.011575 -18.488875 200.864304 1.167979 890.750428 \n", "2 -30.231132 -52.251148 60.366413 86.687647 1122.703966 \n", "3 328.824283 433.530033 544.126547 291.501724 349.529001 \n", "4 -139.122730 -343.245610 370.368307 191.023203 466.595784 \n", "... ... ... ... ... ... \n", "188636 0.195412 -0.661523 0.689782 4461.962627 26.170696 \n", "188637 0.229136 -0.660627 0.699236 4677.495406 26.098992 \n", "188638 0.200907 -0.660940 0.690801 4550.008771 26.142950 \n", "188639 0.045724 -0.738338 0.739752 4547.442610 26.111163 \n", "188640 0.096421 -0.734960 0.741258 4580.867737 26.067574 \n", "\n", " z s temp gridCellId \n", "0 1142.193551 0.040661 244.656438 168 \n", "1 0.133934 0.000384 258.822599 146 \n", "2 1260.291287 0.077658 258.262919 181 \n", "3 31.542820 0.002879 259.838462 181 \n", "4 20.584348 0.000208 260.769420 164 \n", "... ... ... ... ... \n", "188636 3212.873291 0.000693 222.000266 84 \n", "188637 3211.798007 0.000576 222.011947 84 \n", "188638 3212.523550 0.000711 222.004375 84 \n", "188639 3211.682384 0.000574 222.030100 84 \n", "188640 3211.471800 0.000371 222.030561 84 \n", "\n", "[188641 rows x 13 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gdf" ] }, { "cell_type": "code", "execution_count": 10, "id": "b30145d1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([4065., 3814., 3880., 4065., 4103., 3980., 3995., 3950., 4067.,\n", " 4104., 4000., 4038., 4001., 3978., 3992., 4040., 4064., 4064.,\n", " 3906., 4039., 3957., 3937., 3990., 3915., 4030., 4038., 3955.,\n", " 4018., 3966., 4090., 3911., 3972., 3922., 3993., 3923., 4043.,\n", " 4069., 4123., 4040., 3873., 3988., 3973., 4023., 4027., 3966.,\n", " 4043., 1925., 1838., 1215., 268.]),\n", " array([5.1000000e-01, 9.5923800e+01, 1.9133760e+02, 2.8675140e+02,\n", " 3.8216520e+02, 4.7757900e+02, 5.7299280e+02, 6.6840660e+02,\n", " 7.6382040e+02, 8.5923420e+02, 9.5464800e+02, 1.0500618e+03,\n", " 1.1454756e+03, 1.2408894e+03, 1.3363032e+03, 1.4317170e+03,\n", " 1.5271308e+03, 1.6225446e+03, 1.7179584e+03, 1.8133722e+03,\n", " 1.9087860e+03, 2.0041998e+03, 2.0996136e+03, 2.1950274e+03,\n", " 2.2904412e+03, 2.3858550e+03, 2.4812688e+03, 2.5766826e+03,\n", " 2.6720964e+03, 2.7675102e+03, 2.8629240e+03, 2.9583378e+03,\n", " 3.0537516e+03, 3.1491654e+03, 3.2445792e+03, 3.3399930e+03,\n", " 3.4354068e+03, 3.5308206e+03, 3.6262344e+03, 3.7216482e+03,\n", " 3.8170620e+03, 3.9124758e+03, 4.0078896e+03, 4.1033034e+03,\n", " 4.1987172e+03, 4.2941310e+03, 4.3895448e+03, 4.4849586e+03,\n", " 4.5803724e+03, 4.6757862e+03, 4.7712000e+03]),\n", " )" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.hist(gdf.THICK, bins = 50)" ] }, { "cell_type": "code", "execution_count": 11, "id": "8cd3bb9e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "189176" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(gdf)" ] }, { "cell_type": "code", "execution_count": 12, "id": "9f8614bd", "metadata": {}, "outputs": [], "source": [ "size = 27 #pixels\n", "half = size // 2\n", "\n", "images = []\n", "vx_images = []\n", "vy_images = []\n", "im_data = {}\n", "\n", "scalar_feats = ['THICK', 'vx', 'vy', 'v', 'smb', 'z', 's', 'temp', 'gridCellId']\n", "\n", "for sclr in scalar_feats:\n", " im_data[sclr] = []\n", "\n", "\n", "for idx, data_row in gdf.iterrows():\n", " geom = data_row.geometry\n", "\n", " col, row = ~transform * (geom.x, geom.y) #Pixel coordinates\n", " col, row = int(np.floor(col)), int(np.floor(row))\n", "\n", " patch = sat_im.surface.isel(\n", " y=slice(row-half, row+half+1),\n", " x=slice(col-half, col+half+1)\n", " )\n", "\n", " image = xr.DataArray(\n", " patch[0].values,\n", " coords = {\n", " \"x\": np.arange(size),\n", " \"y\": np.arange(size)\n", " },\n", " dims = (\"x\", \"y\"),\n", " name = \"z_image\"\n", " )\n", "\n", " vx_col, vx_row = ~vx_transform * (geom.x, geom.y) #Pixel coordinates for vx\n", " vx_col, vx_row = int(np.floor(vx_col)), int(np.floor(vx_row))\n", "\n", " vx_patch = vel.VX.isel(\n", " y=slice(vx_row-half, vx_row+half+1),\n", " x=slice(vx_col-half, vx_col+half+1)\n", " )\n", "\n", " vx_image = xr.DataArray(\n", " vx_patch[0].values,\n", " coords = {\n", " \"x\": np.arange(size),\n", " \"y\": np.arange(size)\n", " },\n", " dims = (\"x\", \"y\"),\n", " name = \"vx_image\"\n", " )\n", "\n", " vy_col, vy_row = ~vy_transform * (geom.x, geom.y) #Pixel coordinates for vx\n", " vy_col, vy_row = int(np.floor(vy_col)), int(np.floor(vy_row))\n", "\n", " vy_patch = vel.VY.isel(\n", " y=slice(vy_row-half, vy_row+half+1),\n", " x=slice(vy_col-half, vy_col+half+1)\n", " )\n", "\n", " vy_image = xr.DataArray(\n", " vy_patch[0].values,\n", " coords = {\n", " \"x\": np.arange(size),\n", " \"y\": np.arange(size)\n", " },\n", " dims = (\"x\", \"y\"),\n", " name = \"vy_image\"\n", " )\n", "\n", " images.append(image)\n", " vx_images.append(vx_image)\n", " vy_images.append(vy_image)\n", " for sclr in scalar_feats:\n", " im_data[sclr].append(data_row[sclr])\n", "\n", "sc = np.arange(len(gdf))\n", "\n", "# Create a DataArray for all images\n", "all_images_da = xr.concat(images, dim = 'sample')\n", "all_images_da['sample'] = sc # Add sample coordinates\n", "\n", "all_VXimages_da = xr.concat(vx_images, dim = 'sample')\n", "all_VXimages_da['sample'] = sc # Add sample coordinates\n", "\n", "all_VYimages_da = xr.concat(vy_images, dim = 'sample')\n", "all_VYimages_da['sample'] = sc # Add sample coordinates\n", "\n", "scalars_ds = xr.Dataset(\n", " {\n", " 'vx': xr.DataArray(np.array(im_data['vx']), coords = {'sample': sc}, dims = ('sample',), name = 'vx'),\n", " 'vy': xr.DataArray(np.array(im_data['vy']), coords = {'sample': sc}, dims = ('sample',), name = 'vy'),\n", " 'v': xr.DataArray(np.array(im_data['v']), coords = {'sample': sc}, dims = ('sample',), name = 'v'),\n", " 'smb': xr.DataArray(np.array(im_data['smb']), coords = {'sample': sc}, dims = ('sample',), name = 'smb'),\n", " 'z': xr.DataArray(np.array(im_data['z']), coords = {'sample': sc}, dims = ('sample',), name = 'z'),\n", " 's': xr.DataArray(np.array(im_data['s']), coords = {'sample': sc}, dims = ('sample',), name = 's'),\n", " 'temp': xr.DataArray(np.array(im_data['temp']), coords = {'sample': sc}, dims = ('sample',), name = 'temp'),\n", " 'gridCellId': xr.DataArray(np.array(im_data['gridCellId']), coords = {'sample': sc}, dims = ('sample',), name = 'gridCellId')\n", " },\n", " coords = {'sample': sc}\n", ")\n", "\n", "# Create DataArrays for labels and scalar features, aligning with the 'sample' dimension\n", "labels_da = xr.DataArray(\n", " np.array(im_data[\"THICK\"]),\n", " coords={\"sample\": sc},\n", " dims=(\"sample\",),\n", " name=\"label\"\n", ")\n", "\n", "# Combine everything into a single Dataset\n", "training_data_ds = xr.Dataset(\n", " {\n", " \"z_images\": all_images_da,\n", " \"vx_images\": all_VXimages_da,\n", " \"vy_images\": all_VYimages_da,\n", " \"labels\": labels_da\n", " },\n", " coords={\"sample\": sc}, # Add sample coordinates from scalar_features_ds\n", " # name = \"Elevation images, with labels and scarlars\",\n", " attrs={'description': 'CNN data with elevation and ice-velocity images. N = 189176. Scalar features are everything from Niccolo 30M parquet + gridCellId.Images are 27x27 pixels. Roughly uniform dist in THICK (50 bins)'}\n", ")\n", "\n", "training_data_ds = training_data_ds.merge(scalars_ds)" ] }, { "cell_type": "code", "execution_count": 13, "id": "6cc1c242", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 2GB\n",
       "Dimensions:     (x: 27, y: 27, sample: 189176)\n",
       "Coordinates:\n",
       "  * x           (x) int64 216B 0 1 2 3 4 5 6 7 8 ... 18 19 20 21 22 23 24 25 26\n",
       "  * y           (y) int64 216B 0 1 2 3 4 5 6 7 8 ... 18 19 20 21 22 23 24 25 26\n",
       "  * sample      (sample) int64 2MB 0 1 2 3 4 ... 189172 189173 189174 189175\n",
       "Data variables:\n",
       "    z_images    (sample, x, y) float32 552MB 575.3 401.9 ... 3.212e+03 3.211e+03\n",
       "    vx_images   (sample, x, y) float32 552MB -0.1477 -1.239 ... 0.2628 0.277\n",
       "    vy_images   (sample, x, y) float32 552MB -2.234 -3.004 ... -0.651 -0.6441\n",
       "    labels      (sample) float64 2MB 12.0 65.75 60.7 ... 4.724e+03 4.714e+03\n",
       "    vx          (sample) float64 2MB 6.419 -7.437 32.78 ... 0.04572 0.09642\n",
       "    vy          (sample) float64 2MB 26.79 -12.35 -59.19 ... -0.7383 -0.735\n",
       "    v           (sample) float64 2MB 27.54 14.42 67.66 ... 0.6908 0.7398 0.7413\n",
       "    smb         (sample) float64 2MB 508.0 443.6 601.2 ... 26.14 26.11 26.07\n",
       "    z           (sample) float64 2MB 24.15 19.12 16.59 ... 3.212e+03 3.211e+03\n",
       "    s           (sample) float64 2MB 0.01221 0.000318 ... 0.000574 0.0003712\n",
       "    temp        (sample) float64 2MB 262.3 260.6 255.8 ... 222.0 222.0 222.0\n",
       "    gridCellId  (sample) int64 2MB 164 110 42 181 198 194 ... 84 84 84 84 84 84\n",
       "Attributes:\n",
       "    description:  CNN data with elevation and ice-velocity images. N = 189176...
" ], "text/plain": [ " Size: 2GB\n", "Dimensions: (x: 27, y: 27, sample: 189176)\n", "Coordinates:\n", " * x (x) int64 216B 0 1 2 3 4 5 6 7 8 ... 18 19 20 21 22 23 24 25 26\n", " * y (y) int64 216B 0 1 2 3 4 5 6 7 8 ... 18 19 20 21 22 23 24 25 26\n", " * sample (sample) int64 2MB 0 1 2 3 4 ... 189172 189173 189174 189175\n", "Data variables:\n", " z_images (sample, x, y) float32 552MB 575.3 401.9 ... 3.212e+03 3.211e+03\n", " vx_images (sample, x, y) float32 552MB -0.1477 -1.239 ... 0.2628 0.277\n", " vy_images (sample, x, y) float32 552MB -2.234 -3.004 ... -0.651 -0.6441\n", " labels (sample) float64 2MB 12.0 65.75 60.7 ... 4.724e+03 4.714e+03\n", " vx (sample) float64 2MB 6.419 -7.437 32.78 ... 0.04572 0.09642\n", " vy (sample) float64 2MB 26.79 -12.35 -59.19 ... -0.7383 -0.735\n", " v (sample) float64 2MB 27.54 14.42 67.66 ... 0.6908 0.7398 0.7413\n", " smb (sample) float64 2MB 508.0 443.6 601.2 ... 26.14 26.11 26.07\n", " z (sample) float64 2MB 24.15 19.12 16.59 ... 3.212e+03 3.211e+03\n", " s (sample) float64 2MB 0.01221 0.000318 ... 0.000574 0.0003712\n", " temp (sample) float64 2MB 262.3 260.6 255.8 ... 222.0 222.0 222.0\n", " gridCellId (sample) int64 2MB 164 110 42 181 198 194 ... 84 84 84 84 84 84\n", "Attributes:\n", " description: CNN data with elevation and ice-velocity images. N = 189176..." ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "training_data_ds" ] }, { "cell_type": "code", "execution_count": null, "id": "c0812faa", "metadata": {}, "outputs": [], "source": [ "# training_data_ds.to_netcdf('D:/DOCS/AntarticaBedmap/Gridded_CNN_train_uniform_VelSurface.nc')" ] }, { "cell_type": "code", "execution_count": 16, "id": "bdb4d03a", "metadata": {}, "outputs": [], "source": [ "test_import = xr.open_dataset('D:/DOCS/AntarticaBedmap/Gridded_CNN_train_uniform_VelSurface.nc')" ] }, { "cell_type": "code", "execution_count": null, "id": "4a1e044e", "metadata": {}, "outputs": [], "source": [ "p = gdf.iloc[0].geometry\n", "\n", "transform = sat_im.rio.transform()\n", "\n", "col, row = ~transform * (p.x, p.y)\n", "\n", "col, row = int(np.floor(col)), int(np.floor(row))\n", "\n", "print(p.x, p.y)\n", "\n", "print(sat_im.surface[0][row][col].x, sat_im.surface[0][row][col].y)" ] }, { "cell_type": "code", "execution_count": 25, "id": "9ac2f290", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Source file path for Affine class: c:\\Users\\Cap\\Documents\\Python_Scripts\\AppML\\.geoMLvenv\\Lib\\site-packages\\affine\\__init__.py\n" ] } ], "source": [ "import inspect\n", "\n", "source_file_path = inspect.getsourcefile(type(sat_im.surface.rio.transform()))\n", "print(f\"\\nSource file path for Affine class: {source_file_path}\")" ] } ], "metadata": { "kernelspec": { "display_name": ".geoMLvenv", "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.11.9" } }, "nbformat": 4, "nbformat_minor": 5 }