Created
March 12, 2021 19:40
-
-
Save rmg55/b144cb273d9ccfdf979e9843fdf5e651 to your computer and use it in GitHub Desktop.
using stackstac with NASA HLS S30 catalog
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"id": "becoming-church", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#!/opt/conda/envs/py_geo/bin/pip3 install stackstac" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"id": "angry-executive", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# from dask.distributed import LocalCluster, Client\n", | |
"# import dask\n", | |
"import os\n", | |
"env = dict(GDAL_DISABLE_READDIR_ON_OPEN='EMPTY_DIR', \n", | |
" AWS_NO_SIGN_REQUEST='YES',\n", | |
" GDAL_MAX_RAW_BLOCK_CACHE_SIZE='200000000',\n", | |
" GDAL_SWATH_SIZE='200000000',\n", | |
" VSI_CURL_CACHE_SIZE='200000000',\n", | |
" GDAL_HTTP_COOKIEFILE=os.path.expanduser('~/cookies.txt'),\n", | |
" GDAL_HTTP_COOKIEJAR=os.path.expanduser('~/cookies.txt'))\n", | |
"\n", | |
"\n", | |
"os.environ.update(env)\n", | |
" \n", | |
"# dask.config.set({'distributed.dashboard.link':'/proxy/{port}/status'})\n", | |
"# cluster = LocalCluster(threads_per_worker=1)\n", | |
"# cl = Client(cluster)\n", | |
"# cl" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"id": "computational-noise", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from satsearch import Search\n", | |
"def get_STAC_items(url, collection, dates, bbox):\n", | |
" results = Search.search(url=url,\n", | |
" collections=collection, \n", | |
" datetime=dates,\n", | |
" bbox=bbox)\n", | |
"\n", | |
" return(results)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"id": "radical-intensity", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"51" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"url = 'https://cmr.earthdata.nasa.gov/stac/LPCLOUD/' \n", | |
"collection = ['HLSS30.v1.5']#'C1711924822-LPCLOUD' #HLS\n", | |
"bbox=[-104.79107047, 40.78311181, -104.67687336, 40.87008987]\n", | |
"dates = '2013-01-01/2021-03-01'\n", | |
"\n", | |
"stac_items_hls = get_STAC_items(url,collection,dates,','.join(map(str, bbox))).items()\n", | |
"s_col = stac_items_hls.geojson()['features']\n", | |
"\n", | |
"## Note HLSS30.v1.5 is missing the 'type' tag in the assets - add it back in\n", | |
"for i,f in enumerate(s_col):\n", | |
" for b in ['B8A', 'B08', 'B09', 'B04', 'B12', 'B02', 'B06', 'B11', 'B07', 'B05', 'B03', 'Fmask', 'B01', 'B10']:\n", | |
" try:\n", | |
" s_col[i]['assets'][b]['type']='image/tiff; application=geotiff; profile=cloud-optimized'\n", | |
" except:\n", | |
" pass\n", | |
" for b in ['SAA','SZA','VAA','VZA','browse','metadata']:\n", | |
" try:\n", | |
" del s_col[i]['assets'][b]\n", | |
" except:\n", | |
" pass\n", | |
"len(stac_items_hls)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"id": "received-boost", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"'https://lpdaac.earthdata.nasa.gov/lp-prod-protected/HLSS30.015/HLS.S30.T13TEF.2020192T174909.v1.5.B01.tif'" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"s_col[0]['assets']['B01']['href']" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"id": "multiple-industry", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Driver: GTiff/GeoTIFF\n", | |
"Files: /vsicurl/https://lpdaac.earthdata.nasa.gov/lp-prod-protected/HLSS30.015/HLS.S30.T13TEF.2020192T174909.v1.5.B01.tif\n", | |
"Size is 3660, 3660\n", | |
"Coordinate System is:\n", | |
"PROJCRS[\"UTM Zone 13, Northern Hemisphere\",\n", | |
" BASEGEOGCRS[\"Unknown datum based upon the WGS 84 ellipsoid\",\n", | |
" DATUM[\"Not_specified_based_on_WGS_84_spheroid\",\n", | |
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n", | |
" LENGTHUNIT[\"metre\",1],\n", | |
" ID[\"EPSG\",7030]]],\n", | |
" PRIMEM[\"Greenwich\",0,\n", | |
" ANGLEUNIT[\"degree\",0.0174532925199433,\n", | |
" ID[\"EPSG\",9122]]]],\n", | |
" CONVERSION[\"Transverse Mercator\",\n", | |
" METHOD[\"Transverse Mercator\",\n", | |
" ID[\"EPSG\",9807]],\n", | |
" PARAMETER[\"Latitude of natural origin\",0,\n", | |
" ANGLEUNIT[\"degree\",0.0174532925199433],\n", | |
" ID[\"EPSG\",8801]],\n", | |
" PARAMETER[\"Longitude of natural origin\",-105,\n", | |
" ANGLEUNIT[\"degree\",0.0174532925199433],\n", | |
" ID[\"EPSG\",8802]],\n", | |
" PARAMETER[\"Scale factor at natural origin\",0.9996,\n", | |
" SCALEUNIT[\"unity\",1],\n", | |
" ID[\"EPSG\",8805]],\n", | |
" PARAMETER[\"False easting\",500000,\n", | |
" LENGTHUNIT[\"metre\",1],\n", | |
" ID[\"EPSG\",8806]],\n", | |
" PARAMETER[\"False northing\",0,\n", | |
" LENGTHUNIT[\"metre\",1],\n", | |
" ID[\"EPSG\",8807]]],\n", | |
" CS[Cartesian,2],\n", | |
" AXIS[\"easting\",east,\n", | |
" ORDER[1],\n", | |
" LENGTHUNIT[\"metre\",1,\n", | |
" ID[\"EPSG\",9001]]],\n", | |
" AXIS[\"northing\",north,\n", | |
" ORDER[2],\n", | |
" LENGTHUNIT[\"metre\",1,\n", | |
" ID[\"EPSG\",9001]]]]\n", | |
"Data axis to CRS axis mapping: 1,2\n", | |
"Origin = (499980.000000000000000,4600020.000000000000000)\n", | |
"Pixel Size = (30.000000000000000,-30.000000000000000)\n", | |
"Metadata:\n", | |
" ACCODE=LaSRC\n", | |
" add_offset=0.0\n", | |
" AREA_OR_POINT=Area\n", | |
" arop_ave_xshift(meters)=0\n", | |
" arop_ave_yshift(meters)=0\n", | |
" arop_ncp=0\n", | |
" arop_rmse(meters)=0\n", | |
" arop_s2_refimg=NONE\n", | |
" cloud_coverage=2\n", | |
" DATASTRIP_ID=S2B_OPER_MSI_L1C_DS_EPAE_20200710T213436_S20200710T175549_N02.09\n", | |
" HLS_PROCESSING_TIME=2020-08-26T10:42:16Z\n", | |
" HORIZONTAL_CS_CODE=EPSG:32613\n", | |
" HORIZONTAL_CS_NAME=WGS84 / UTM zone 13N\n", | |
" L1C_IMAGE_QUALITY=NONE\n", | |
" L1_PROCESSING_TIME=2020-07-10T22:07:35.514709Z\n", | |
" long_name=Coastal_Aerosol\n", | |
" MEAN_SUN_AZIMUTH_ANGLE=141.512151037981\n", | |
" MEAN_SUN_ZENITH_ANGLE=22.8485611602836\n", | |
" MEAN_VIEW_AZIMUTH_ANGLE=284.447540146177\n", | |
" MEAN_VIEW_ZENITH_ANGLE=8.19597510827437\n", | |
" MSI band 01 bandpass adjustment slope and offset=0.995900, -0.000200\n", | |
" MSI band 02 bandpass adjustment slope and offset=0.977800, -0.004000\n", | |
" MSI band 03 bandpass adjustment slope and offset=1.007500, -0.000800\n", | |
" MSI band 04 bandpass adjustment slope and offset=0.976100, 0.001000\n", | |
" MSI band 11 bandpass adjustment slope and offset=1.000000, -0.000300\n", | |
" MSI band 12 bandpass adjustment slope and offset=0.986700, 0.000400\n", | |
" MSI band 8a bandpass adjustment slope and offset=0.996600, 0.000000\n", | |
" NBAR_AngleBand=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12\n", | |
" NBAR_SOLAR_ZENITH=24.7807801205817\n", | |
" NCOLS=3660\n", | |
" NROWS=3660\n", | |
" OVR_RESAMPLING_ALG=NEAREST\n", | |
" PROCESSING_BASELINE=02.09\n", | |
" PRODUCT_URI=S2B_MSIL1C_20200710T174909_N0209_R141_T13TEF_20200710T213436.SAFE\n", | |
" scale_factor=0.0001\n", | |
" SENSING_TIME=2020-07-10T18:02:38.62776Z\n", | |
" SPACECRAFT_NAME=Sentinel-2B\n", | |
" spatial_coverage=89\n", | |
" SPATIAL_RESOLUTION=30\n", | |
" TILE_ID=S2B_OPER_MSI_L1C_TL_EPAE_20200710T213436_A017470_T13TEF_N02.09\n", | |
" ULX=499980\n", | |
" ULY=4600020\n", | |
" _FillValue=-9999\n", | |
"Image Structure Metadata:\n", | |
" COMPRESSION=DEFLATE\n", | |
" INTERLEAVE=BAND\n", | |
"Corner Coordinates:\n", | |
"Upper Left ( 499980.000, 4600020.000) (105d 0' 0.86\"W, 41d33' 6.64\"N)\n", | |
"Lower Left ( 499980.000, 4490220.000) (105d 0' 0.85\"W, 40d33'45.90\"N)\n", | |
"Upper Right ( 609780.000, 4600020.000) (103d41' 1.68\"W, 41d32'39.52\"N)\n", | |
"Lower Right ( 609780.000, 4490220.000) (103d42'12.11\"W, 40d33'19.70\"N)\n", | |
"Center ( 554880.000, 4545120.000) (104d20'48.87\"W, 41d 3'19.68\"N)\n", | |
"Band 1 Block=256x256 Type=Int16, ColorInterp=Gray\n", | |
" Description = Coastal_Aerosol\n", | |
" NoData Value=-9999\n", | |
" Overviews: 1830x1830, 915x915, 458x458, 229x229\n", | |
" Offset: 0, Scale:0.0001\n" | |
] | |
} | |
], | |
"source": [ | |
"!gdalinfo /vsicurl/https://lpdaac.earthdata.nasa.gov/lp-prod-protected/HLSS30.015/HLS.S30.T13TEF.2020192T174909.v1.5.B01.tif --config GDAL_DISABLE_READDIR_ON_OPEN EMPTY_DIR" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"id": "refined-louis", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"<xarray.DataArray 'stackstac-b699f8cdf661476c41177051d5cfeaf3' (time: 51, band: 14, y: 3715, x: 3717)>\n", | |
"dask.array<fetch_raster_window, shape=(51, 14, 3715, 3717), dtype=float64, chunksize=(1, 1, 3715, 3715), chunktype=numpy.ndarray>\n", | |
"Coordinates:\n", | |
" * time (time) object 1594404158627000000 ... 1614276155393000000\n", | |
" id (time) <U19 'G1947862363-LPCLOUD' ... 'G2014001638-LPCLOUD'\n", | |
" * band (band) <U5 'B8A' 'B08' 'B09' 'B04' ... 'Fmask' 'B01' 'B10'\n", | |
" * x (x) float64 5e+05 5e+05 5e+05 ... 6.114e+05 6.114e+05\n", | |
" * y (y) float64 4.601e+06 4.601e+06 ... 4.489e+06 4.489e+06\n", | |
" eo:cloud_cover (time) int64 2 0 0 39 1 0 1 1 80 ... 42 39 97 100 40 0 4 81\n", | |
" start_datetime (time) <U24 '2020-07-10T18:02:38.627Z' ... '2021-02-25T18...\n", | |
" end_datetime (time) <U24 '2020-07-10T18:02:38.627Z' ... '2021-02-25T18...\n", | |
"Attributes:\n", | |
" spec: RasterSpec(epsg=32613, bounds=(499950, 4489410, 611460, 4600...\n", | |
" crs: epsg:32613\n", | |
" transform: | 30.00, 0.00, 499950.00|\\n| 0.00,-30.00, 4600860.00|\\n| 0.0...\n", | |
" resolution: 30\n" | |
] | |
} | |
], | |
"source": [ | |
"import stackstac\n", | |
"s = stackstac.stack(s_col,epsg=32613,resolution=30,chunksize=3715)\n", | |
"print(s)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"id": "aquatic-stevens", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", | |
"<defs>\n", | |
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", | |
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", | |
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", | |
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", | |
"</symbol>\n", | |
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", | |
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", | |
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", | |
"</symbol>\n", | |
"</defs>\n", | |
"</svg>\n", | |
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", | |
" *\n", | |
" */\n", | |
"\n", | |
":root {\n", | |
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", | |
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", | |
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", | |
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", | |
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", | |
" --xr-background-color: var(--jp-layout-color0, white);\n", | |
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n", | |
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", | |
"}\n", | |
"\n", | |
"html[theme=dark],\n", | |
"body.vscode-dark {\n", | |
" --xr-font-color0: rgba(255, 255, 255, 1);\n", | |
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n", | |
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n", | |
" --xr-border-color: #1F1F1F;\n", | |
" --xr-disabled-color: #515151;\n", | |
" --xr-background-color: #111111;\n", | |
" --xr-background-color-row-even: #111111;\n", | |
" --xr-background-color-row-odd: #313131;\n", | |
"}\n", | |
"\n", | |
".xr-wrap {\n", | |
" display: block;\n", | |
" min-width: 300px;\n", | |
" max-width: 700px;\n", | |
"}\n", | |
"\n", | |
".xr-text-repr-fallback {\n", | |
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", | |
" display: none;\n", | |
"}\n", | |
"\n", | |
".xr-header {\n", | |
" padding-top: 6px;\n", | |
" padding-bottom: 6px;\n", | |
" margin-bottom: 4px;\n", | |
" border-bottom: solid 1px var(--xr-border-color);\n", | |
"}\n", | |
"\n", | |
".xr-header > div,\n", | |
".xr-header > ul {\n", | |
" display: inline;\n", | |
" margin-top: 0;\n", | |
" margin-bottom: 0;\n", | |
"}\n", | |
"\n", | |
".xr-obj-type,\n", | |
".xr-array-name {\n", | |
" margin-left: 2px;\n", | |
" margin-right: 10px;\n", | |
"}\n", | |
"\n", | |
".xr-obj-type {\n", | |
" color: var(--xr-font-color2);\n", | |
"}\n", | |
"\n", | |
".xr-sections {\n", | |
" padding-left: 0 !important;\n", | |
" display: grid;\n", | |
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n", | |
"}\n", | |
"\n", | |
".xr-section-item {\n", | |
" display: contents;\n", | |
"}\n", | |
"\n", | |
".xr-section-item input {\n", | |
" display: none;\n", | |
"}\n", | |
"\n", | |
".xr-section-item input + label {\n", | |
" color: var(--xr-disabled-color);\n", | |
"}\n", | |
"\n", | |
".xr-section-item input:enabled + label {\n", | |
" cursor: pointer;\n", | |
" color: var(--xr-font-color2);\n", | |
"}\n", | |
"\n", | |
".xr-section-item input:enabled + label:hover {\n", | |
" color: var(--xr-font-color0);\n", | |
"}\n", | |
"\n", | |
".xr-section-summary {\n", | |
" grid-column: 1;\n", | |
" color: var(--xr-font-color2);\n", | |
" font-weight: 500;\n", | |
"}\n", | |
"\n", | |
".xr-section-summary > span {\n", | |
" display: inline-block;\n", | |
" padding-left: 0.5em;\n", | |
"}\n", | |
"\n", | |
".xr-section-summary-in:disabled + label {\n", | |
" color: var(--xr-font-color2);\n", | |
"}\n", | |
"\n", | |
".xr-section-summary-in + label:before {\n", | |
" display: inline-block;\n", | |
" content: '►';\n", | |
" font-size: 11px;\n", | |
" width: 15px;\n", | |
" text-align: center;\n", | |
"}\n", | |
"\n", | |
".xr-section-summary-in:disabled + label:before {\n", | |
" color: var(--xr-disabled-color);\n", | |
"}\n", | |
"\n", | |
".xr-section-summary-in:checked + label:before {\n", | |
" content: '▼';\n", | |
"}\n", | |
"\n", | |
".xr-section-summary-in:checked + label > span {\n", | |
" display: none;\n", | |
"}\n", | |
"\n", | |
".xr-section-summary,\n", | |
".xr-section-inline-details {\n", | |
" padding-top: 4px;\n", | |
" padding-bottom: 4px;\n", | |
"}\n", | |
"\n", | |
".xr-section-inline-details {\n", | |
" grid-column: 2 / -1;\n", | |
"}\n", | |
"\n", | |
".xr-section-details {\n", | |
" display: none;\n", | |
" grid-column: 1 / -1;\n", | |
" margin-bottom: 5px;\n", | |
"}\n", | |
"\n", | |
".xr-section-summary-in:checked ~ .xr-section-details {\n", | |
" display: contents;\n", | |
"}\n", | |
"\n", | |
".xr-array-wrap {\n", | |
" grid-column: 1 / -1;\n", | |
" display: grid;\n", | |
" grid-template-columns: 20px auto;\n", | |
"}\n", | |
"\n", | |
".xr-array-wrap > label {\n", | |
" grid-column: 1;\n", | |
" vertical-align: top;\n", | |
"}\n", | |
"\n", | |
".xr-preview {\n", | |
" color: var(--xr-font-color3);\n", | |
"}\n", | |
"\n", | |
".xr-array-preview,\n", | |
".xr-array-data {\n", | |
" padding: 0 5px !important;\n", | |
" grid-column: 2;\n", | |
"}\n", | |
"\n", | |
".xr-array-data,\n", | |
".xr-array-in:checked ~ .xr-array-preview {\n", | |
" display: none;\n", | |
"}\n", | |
"\n", | |
".xr-array-in:checked ~ .xr-array-data,\n", | |
".xr-array-preview {\n", | |
" display: inline-block;\n", | |
"}\n", | |
"\n", | |
".xr-dim-list {\n", | |
" display: inline-block !important;\n", | |
" list-style: none;\n", | |
" padding: 0 !important;\n", | |
" margin: 0;\n", | |
"}\n", | |
"\n", | |
".xr-dim-list li {\n", | |
" display: inline-block;\n", | |
" padding: 0;\n", | |
" margin: 0;\n", | |
"}\n", | |
"\n", | |
".xr-dim-list:before {\n", | |
" content: '(';\n", | |
"}\n", | |
"\n", | |
".xr-dim-list:after {\n", | |
" content: ')';\n", | |
"}\n", | |
"\n", | |
".xr-dim-list li:not(:last-child):after {\n", | |
" content: ',';\n", | |
" padding-right: 5px;\n", | |
"}\n", | |
"\n", | |
".xr-has-index {\n", | |
" font-weight: bold;\n", | |
"}\n", | |
"\n", | |
".xr-var-list,\n", | |
".xr-var-item {\n", | |
" display: contents;\n", | |
"}\n", | |
"\n", | |
".xr-var-item > div,\n", | |
".xr-var-item label,\n", | |
".xr-var-item > .xr-var-name span {\n", | |
" background-color: var(--xr-background-color-row-even);\n", | |
" margin-bottom: 0;\n", | |
"}\n", | |
"\n", | |
".xr-var-item > .xr-var-name:hover span {\n", | |
" padding-right: 5px;\n", | |
"}\n", | |
"\n", | |
".xr-var-list > li:nth-child(odd) > div,\n", | |
".xr-var-list > li:nth-child(odd) > label,\n", | |
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", | |
" background-color: var(--xr-background-color-row-odd);\n", | |
"}\n", | |
"\n", | |
".xr-var-name {\n", | |
" grid-column: 1;\n", | |
"}\n", | |
"\n", | |
".xr-var-dims {\n", | |
" grid-column: 2;\n", | |
"}\n", | |
"\n", | |
".xr-var-dtype {\n", | |
" grid-column: 3;\n", | |
" text-align: right;\n", | |
" color: var(--xr-font-color2);\n", | |
"}\n", | |
"\n", | |
".xr-var-preview {\n", | |
" grid-column: 4;\n", | |
"}\n", | |
"\n", | |
".xr-var-name,\n", | |
".xr-var-dims,\n", | |
".xr-var-dtype,\n", | |
".xr-preview,\n", | |
".xr-attrs dt {\n", | |
" white-space: nowrap;\n", | |
" overflow: hidden;\n", | |
" text-overflow: ellipsis;\n", | |
" padding-right: 10px;\n", | |
"}\n", | |
"\n", | |
".xr-var-name:hover,\n", | |
".xr-var-dims:hover,\n", | |
".xr-var-dtype:hover,\n", | |
".xr-attrs dt:hover {\n", | |
" overflow: visible;\n", | |
" width: auto;\n", | |
" z-index: 1;\n", | |
"}\n", | |
"\n", | |
".xr-var-attrs,\n", | |
".xr-var-data {\n", | |
" display: none;\n", | |
" background-color: var(--xr-background-color) !important;\n", | |
" padding-bottom: 5px !important;\n", | |
"}\n", | |
"\n", | |
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", | |
".xr-var-data-in:checked ~ .xr-var-data {\n", | |
" display: block;\n", | |
"}\n", | |
"\n", | |
".xr-var-data > table {\n", | |
" float: right;\n", | |
"}\n", | |
"\n", | |
".xr-var-name span,\n", | |
".xr-var-data,\n", | |
".xr-attrs {\n", | |
" padding-left: 25px !important;\n", | |
"}\n", | |
"\n", | |
".xr-attrs,\n", | |
".xr-var-attrs,\n", | |
".xr-var-data {\n", | |
" grid-column: 1 / -1;\n", | |
"}\n", | |
"\n", | |
"dl.xr-attrs {\n", | |
" padding: 0;\n", | |
" margin: 0;\n", | |
" display: grid;\n", | |
" grid-template-columns: 125px auto;\n", | |
"}\n", | |
"\n", | |
".xr-attrs dt,\n", | |
".xr-attrs dd {\n", | |
" padding: 0;\n", | |
" margin: 0;\n", | |
" float: left;\n", | |
" padding-right: 10px;\n", | |
" width: auto;\n", | |
"}\n", | |
"\n", | |
".xr-attrs dt {\n", | |
" font-weight: normal;\n", | |
" grid-column: 1;\n", | |
"}\n", | |
"\n", | |
".xr-attrs dt:hover span {\n", | |
" display: inline-block;\n", | |
" background: var(--xr-background-color);\n", | |
" padding-right: 10px;\n", | |
"}\n", | |
"\n", | |
".xr-attrs dd {\n", | |
" grid-column: 2;\n", | |
" white-space: pre-wrap;\n", | |
" word-break: break-all;\n", | |
"}\n", | |
"\n", | |
".xr-icon-database,\n", | |
".xr-icon-file-text2 {\n", | |
" display: inline-block;\n", | |
" vertical-align: middle;\n", | |
" width: 1em;\n", | |
" height: 1.5em !important;\n", | |
" stroke-width: 0;\n", | |
" stroke: currentColor;\n", | |
" fill: currentColor;\n", | |
"}\n", | |
"</style><pre class='xr-text-repr-fallback'><xarray.DataArray 'stackstac-b699f8cdf661476c41177051d5cfeaf3' ()>\n", | |
"array(3167.58068519)\n", | |
"Coordinates:\n", | |
" band <U5 'B01'</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.DataArray</div><div class='xr-array-name'>'stackstac-b699f8cdf661476c41177051d5cfeaf3'</div></div><ul class='xr-sections'><li class='xr-section-item'><div class='xr-array-wrap'><input id='section-0c1f2e60-12df-4b14-bab5-c5be2543f9b3' class='xr-array-in' type='checkbox' checked><label for='section-0c1f2e60-12df-4b14-bab5-c5be2543f9b3' title='Show/hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-array-preview xr-preview'><span>3.168e+03</span></div><div class='xr-array-data'><pre>array(3167.58068519)</pre></div></div></li><li class='xr-section-item'><input id='section-7b4c0ce0-3aa1-4714-810c-e9ff72c2bd24' class='xr-section-summary-in' type='checkbox' checked><label for='section-7b4c0ce0-3aa1-4714-810c-e9ff72c2bd24' class='xr-section-summary' >Coordinates: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>band</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'><U5</div><div class='xr-var-preview xr-preview'>'B01'</div><input id='attrs-53a08b03-7436-4820-a11e-5b2f1e83b961' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-53a08b03-7436-4820-a11e-5b2f1e83b961' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-823fd9f3-a487-45aa-8bb3-6fd3e48589ff' class='xr-var-data-in' type='checkbox'><label for='data-823fd9f3-a487-45aa-8bb3-6fd3e48589ff' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array('B01', dtype='<U5')</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-125102e8-8a8d-4f58-9ae3-78c7e0892277' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-125102e8-8a8d-4f58-9ae3-78c7e0892277' class='xr-section-summary' title='Expand/collapse section'>Attributes: <span>(0)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'></dl></div></li></ul></div></div>" | |
], | |
"text/plain": [ | |
"<xarray.DataArray 'stackstac-b699f8cdf661476c41177051d5cfeaf3' ()>\n", | |
"array(3167.58068519)\n", | |
"Coordinates:\n", | |
" band <U5 'B01'" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"s.sel(band='B01').isel(x=slice(100,200),y=slice(100,200)).mean().compute()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python [conda env:py_geo]", | |
"language": "python", | |
"name": "conda-env-py_geo-py" | |
}, | |
"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.8.6" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is great to see @rmg55—glad it's working for you.
FYI, re:
HLSS30.v1.5 is missing the 'type' tag in the assets - add it back in
—if you're doing that because stackstac wasn't giving you any assets, note that you could passto override which ones it automatically chooses. (See the docs for the
assets
parameter: https://stackstac.readthedocs.io/en/latest/api/main.html#stackstac.stack)Also worth noting that your GDAL settings in
os.environ
might work fine running dask with the local-threaded scheduler (what it looks like you're doing here), but if you were to usedistributed
locally or on a cluster, they wouldn't stick.Take a look at the
gdal_env
parameter parameter in the docs for a way to set this (gdal_env=stackstac.DEFAULT_GDAL_ENV.updated(always=dict(...))
). It's really cumbersome to use, so I'd appreciate any input on what you'd typically want to set and how to make it easier.