|
9 | 9 | "- Creates a leaflet map for creating regions of interest\n", |
10 | 10 | "- Queries CMR for granules and granule polygons\n", |
11 | 11 | "- Plots granule polygons on map\n", |
12 | | - "- Retrieves and plots granule tracks on map" |
| 12 | + "- Retrieves and plots granule tracks on map\n", |
| 13 | + "\n", |
| 14 | + "### Jupyter and SlideRule\n", |
| 15 | + "[Jupyter widgets](https://ipywidgets.readthedocs.io) are used to set parameters for the SlideRule API. \n", |
| 16 | + "\n", |
| 17 | + "Regions of interest for submitting to SlideRule are drawn on a [ipyleaflet](https://ipyleaflet.readthedocs.io) map. " |
13 | 18 | ] |
14 | 19 | }, |
15 | 20 | { |
|
49 | 54 | "cell_type": "markdown", |
50 | 55 | "metadata": {}, |
51 | 56 | "source": [ |
52 | | - "#### Set ICESat-2 Product" |
| 57 | + "### Set ICESat-2 Product \n", |
| 58 | + "\n", |
| 59 | + "- [ATL03: Global Geolocated Photon Data](https://nsidc.org/data/atl03)\n", |
| 60 | + "- [ATL06: Land Ice Height](https://nsidc.org/data/atl06)\n", |
| 61 | + "- [ATL08: Land and Vegetation Height](https://nsidc.org/data/atl08)\n", |
| 62 | + "\n", |
| 63 | + "### Interactive Mapping with Leaflet\n", |
| 64 | + "\n", |
| 65 | + "Interactive maps within the SlideRule python API are built upon [ipyleaflet](https://ipyleaflet.readthedocs.io).\n", |
| 66 | + "\n", |
| 67 | + "There are 3 projections available within SlideRule for mapping ([Global](https://epsg.io/3857), [North](https://epsg.io/5936) and [South](https://epsg.io/3031)). " |
53 | 68 | ] |
54 | 69 | }, |
55 | 70 | { |
|
62 | 77 | "icesat2.init(\"slideruleearth.io\", loglevel=logging.WARNING)\n", |
63 | 78 | "icesat2.get_version()\n", |
64 | 79 | "\n", |
65 | | - "# dropdown menu for ICESat-2 product\n", |
66 | | - "product_select = widgets.Dropdown(\n", |
67 | | - " options=['ATL03','ATL06','ATL08'],\n", |
68 | | - " description='Product:',\n", |
69 | | - " disabled=False\n", |
70 | | - ")\n", |
71 | | - "display(product_select)" |
| 80 | + "# display widgets for setting ICESat-2 parameters\n", |
| 81 | + "# and the interactive map projection\n", |
| 82 | + "SRwidgets = ipysliderule.widgets()\n", |
| 83 | + "widgets.VBox([\n", |
| 84 | + " SRwidgets.product,\n", |
| 85 | + " SRwidgets.release,\n", |
| 86 | + " SRwidgets.start_date,\n", |
| 87 | + " SRwidgets.end_date,\n", |
| 88 | + " SRwidgets.projection\n", |
| 89 | + "])" |
72 | 90 | ] |
73 | 91 | }, |
74 | 92 | { |
|
84 | 102 | "metadata": {}, |
85 | 103 | "outputs": [], |
86 | 104 | "source": [ |
87 | | - "# create ipyleaflet map in projection\n", |
88 | | - "m = ipysliderule.leaflet('Global', center=(-25.3,131))\n", |
| 105 | + "# create ipyleaflet map in specified projection\n", |
| 106 | + "m = ipysliderule.leaflet(SRwidgets.projection.value)\n", |
89 | 107 | "m.map" |
90 | 108 | ] |
91 | 109 | }, |
|
102 | 120 | "metadata": {}, |
103 | 121 | "outputs": [], |
104 | 122 | "source": [ |
| 123 | + "%%time\n", |
105 | 124 | "# for each region of interest\n", |
106 | 125 | "granule_list = []\n", |
107 | 126 | "granule_polygons = []\n", |
108 | 127 | "for poly in m.regions:\n", |
109 | 128 | " # polygon from map\n", |
110 | 129 | " resources,polygons = icesat2.cmr(polygon=poly,\n", |
111 | | - " short_name=product_select.value,\n", |
| 130 | + " short_name=SRwidgets.product.value,\n", |
| 131 | + " time_start=SRwidgets.time_start,\n", |
| 132 | + " time_end=SRwidgets.time_end,\n", |
| 133 | + " version=SRwidgets.release.value,\n", |
112 | 134 | " return_polygons=True)\n", |
113 | 135 | " granule_list.extend(resources)\n", |
114 | 136 | " granule_polygons.extend(polygons)\n", |
|
270 | 292 | "metadata": {}, |
271 | 293 | "outputs": [], |
272 | 294 | "source": [ |
| 295 | + "%%time\n", |
273 | 296 | "# granule resources for selected segments\n", |
274 | 297 | "perf_start = time.perf_counter()\n", |
275 | 298 | "gdf = sliderule.icesat2.__emptyframe()\n", |
|
282 | 305 | " gdf = gdf.append(future.result())\n", |
283 | 306 | "\n", |
284 | 307 | "# Display Statistics\n", |
285 | | - "perf_stop = time.perf_counter()\n", |
286 | | - "perf_duration = perf_stop - perf_start\n", |
287 | | - "print(\"Completed in {:.3f} seconds of wall-clock time\".format(perf_duration))\n", |
288 | 308 | "print(\"Reference Ground Tracks: {}\".format(gdf[\"rgt\"].unique()))\n", |
289 | 309 | "print(\"Cycles: {}\".format(gdf[\"cycle\"].unique()))\n", |
290 | 310 | "print(\"Received {} segments\".format(gdf.shape[0]))" |
|
343 | 363 | "name": "python", |
344 | 364 | "nbconvert_exporter": "python", |
345 | 365 | "pygments_lexer": "ipython3", |
346 | | - "version": "3.8.13" |
| 366 | + "version": "3.10.6" |
347 | 367 | } |
348 | 368 | }, |
349 | 369 | "nbformat": 4, |
|
0 commit comments