{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\"Open\n", "\n", "Uncomment the following line to install [geemap](https://geemap.org) if needed." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# !pip install geemap" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import os\n", "import ee\n", "import geemap\n", "import ipywidgets as widgets\n", "from ipyleaflet import WidgetControl" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Map = geemap.Map(center=(40, -100), zoom=4, height='750px')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Add Earth Engine dataset\n", "dem = ee.Image('USGS/SRTMGL1_003')\n", "\n", "# Set visualization parameters.\n", "vis_params = {\n", " 'min': 0,\n", " 'max': 4000,\n", " 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}\n", "\n", "# Add Earth Eninge layers to Map\n", "Map.addLayer(dem, vis_params, 'SRTM DEM', True, 0.7)\n", "\n", "Map" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "output_widget = widgets.Output(layout={'border': '1px solid black'})\n", "output_control = WidgetControl(widget=output_widget, position='bottomright')\n", "Map.add_control(output_control)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "style = {'description_width': 'initial'}\n", "uploader = widgets.FileUpload(\n", " description='Upload data',\n", " accept='.zip, .json, .geojson', \n", " multiple=False,\n", " button_style='primary',\n", " style=style\n", ")\n", "\n", "submit = widgets.Button(\n", " description='Display data',\n", " button_style='success',\n", " tooltip='Click me',\n", " style=style)\n", "\n", "reset = widgets.Button(\n", " description='Reset',\n", " button_style='warning',\n", " tooltip='Click me',\n", " style=style)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with output_widget:\n", " print('Upload shapefile or \\ngeojson as a zip file')\n", " display(uploader)\n", " display(submit)\n", " display(reset)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def get_vector(upload_widget, out_dir=None):\n", " \n", " import zipfile\n", " import glob\n", " \n", " if out_dir is None:\n", " out_dir = os.path.join(os.path.expanduser('~'), 'Downloads')\n", " if not os.path.exists(out_dir):\n", " os.makedirs(out_dir)\n", " \n", " vector = None\n", " \n", " try: \n", " [uploaded_file] = upload_widget.value\n", " file = upload_widget.value[uploaded_file]\n", " name = file['metadata']['name']\n", " content = file['content']\n", " out_file = os.path.join(out_dir, name)\n", " with open(out_file, \"wb\") as fp:\n", " fp.write(content)\n", "\n", " if name.endswith('.zip'):\n", " with zipfile.ZipFile(out_file, \"r\") as zip_ref:\n", " extract_dir = os.path.join(out_dir, name[:-4] + \"_\" + geemap.random_string(3))\n", " zip_ref.extractall(extract_dir)\n", " files = glob.glob(extract_dir + '/*.shp')\n", " if len(files) > 0:\n", " shp = files[0]\n", " vector = geemap.shp_to_ee(shp)\n", " else:\n", " files = glob.glob(extract_dir + '/*.geojson')\n", " if len(files) > 0:\n", " geojson = files[0]\n", " vector = geemap.geojson_to_ee(geojson)\n", " else:\n", " vector = geemap.geojson_to_ee(out_file)\n", " \n", " except Exception as e:\n", " print(e)\n", "\n", " return vector" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def submit_clicked(b):\n", " if uploader._counter > 0:\n", " Map.default_style = {'cursor': 'wait'} \n", " try:\n", " fc = get_vector(uploader)\n", " layer_name = 'Layer ' + geemap.random_string(3)\n", " Map.addLayer(fc, {}, layer_name)\n", " Map.centerObject(fc)\n", " uploader.value.clear()\n", " uploader._counter = 0 \n", " except Exception as e:\n", " print(e)\n", " Map.default_style = {'cursor': 'pointer'}\n", "\n", "submit.on_click(submit_clicked)\n", "\n", "def reset_clicked(b):\n", "\n", " Map.layers = Map.layers[:3]\n", " output_widget.clear_output()\n", " with output_widget:\n", " print('Upload shapefile or \\ngeojson as a zip file')\n", " display(uploader)\n", " display(submit)\n", " display(reset)\n", " uploader.value.clear()\n", " uploader._counter = 0\n", " \n", "reset.on_click(reset_clicked)" ] } ], "metadata": { "gist": { "data": { "description": "testing/Untitled2.ipynb", "public": true }, "id": "" }, "hide_input": true, "kernelspec": { "display_name": "Python 3", "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.8.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Table of Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }