Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save manthey/a66f69ae84dc59bbd54c2fbbb1c8844f to your computer and use it in GitHub Desktop.
Save manthey/a66f69ae84dc59bbd54c2fbbb1c8844f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "7b21e140",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: ipyleaflet in /env/lib/python3.8/site-packages (0.16.0)\n",
"Requirement already satisfied: girder_client in /env/lib/python3.8/site-packages (3.1.14)\n",
"Requirement already satisfied: ipywidgets<8,>=7.6.0 in /env/lib/python3.8/site-packages (from ipyleaflet) (7.7.0)\n",
"Requirement already satisfied: xyzservices>=2021.8.1 in /env/lib/python3.8/site-packages (from ipyleaflet) (2022.4.0)\n",
"Requirement already satisfied: traittypes<3,>=0.2.1 in /env/lib/python3.8/site-packages (from ipyleaflet) (0.2.1)\n",
"Requirement already satisfied: requests-toolbelt in /env/lib/python3.8/site-packages (from girder_client) (0.9.1)\n",
"Requirement already satisfied: click>=6.7 in /env/lib/python3.8/site-packages (from girder_client) (8.1.3)\n",
"Requirement already satisfied: diskcache in /env/lib/python3.8/site-packages (from girder_client) (5.4.0)\n",
"Requirement already satisfied: requests>=2.4.2 in /env/lib/python3.8/site-packages (from girder_client) (2.27.1)\n",
"Requirement already satisfied: ipykernel>=4.5.1 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (6.13.0)\n",
"Requirement already satisfied: ipython>=4.0.0 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (8.3.0)\n",
"Requirement already satisfied: traitlets>=4.3.1 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (5.2.0)\n",
"Requirement already satisfied: nbformat>=4.2.0 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (5.4.0)\n",
"Requirement already satisfied: widgetsnbextension~=3.6.0 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (3.6.0)\n",
"Requirement already satisfied: ipython-genutils~=0.2.0 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (0.2.0)\n",
"Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /env/lib/python3.8/site-packages (from ipywidgets<8,>=7.6.0->ipyleaflet) (1.1.0)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /env/lib/python3.8/site-packages (from requests>=2.4.2->girder_client) (1.26.9)\n",
"Requirement already satisfied: idna<4,>=2.5 in /env/lib/python3.8/site-packages (from requests>=2.4.2->girder_client) (3.3)\n",
"Requirement already satisfied: charset-normalizer~=2.0.0 in /env/lib/python3.8/site-packages (from requests>=2.4.2->girder_client) (2.0.12)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /env/lib/python3.8/site-packages (from requests>=2.4.2->girder_client) (2021.10.8)\n",
"Requirement already satisfied: jupyter-client>=6.1.12 in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (7.3.1)\n",
"Requirement already satisfied: psutil in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (5.9.0)\n",
"Requirement already satisfied: nest-asyncio in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (1.5.5)\n",
"Requirement already satisfied: matplotlib-inline>=0.1 in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (0.1.3)\n",
"Requirement already satisfied: tornado>=6.1 in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (6.1)\n",
"Requirement already satisfied: debugpy>=1.0 in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (1.6.0)\n",
"Requirement already satisfied: packaging in /env/lib/python3.8/site-packages (from ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (21.3)\n",
"Requirement already satisfied: jedi>=0.16 in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.18.1)\n",
"Requirement already satisfied: pickleshare in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.7.5)\n",
"Requirement already satisfied: pexpect>4.3 in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (4.8.0)\n",
"Requirement already satisfied: setuptools>=18.5 in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (44.0.0)\n",
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (3.0.29)\n",
"Requirement already satisfied: stack-data in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.2.0)\n",
"Requirement already satisfied: pygments>=2.4.0 in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (2.12.0)\n",
"Requirement already satisfied: decorator in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (5.1.1)\n",
"Requirement already satisfied: backcall in /env/lib/python3.8/site-packages (from ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.2.0)\n",
"Requirement already satisfied: fastjsonschema in /env/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (2.15.3)\n",
"Requirement already satisfied: jsonschema>=2.6 in /env/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (4.5.1)\n",
"Requirement already satisfied: jupyter-core in /env/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (4.10.0)\n",
"Requirement already satisfied: notebook>=4.4.1 in /env/lib/python3.8/site-packages (from widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (6.4.11)\n",
"Requirement already satisfied: parso<0.9.0,>=0.8.0 in /env/lib/python3.8/site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.8.3)\n",
"Requirement already satisfied: importlib-resources>=1.4.0 in /env/lib/python3.8/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (5.7.1)\n",
"Requirement already satisfied: attrs>=17.4.0 in /env/lib/python3.8/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (21.4.0)\n",
"Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /env/lib/python3.8/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.18.1)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /env/lib/python3.8/site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (2.8.2)\n",
"Requirement already satisfied: entrypoints in /env/lib/python3.8/site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (0.4)\n",
"Requirement already satisfied: pyzmq>=22.3 in /env/lib/python3.8/site-packages (from jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (22.3.0)\n",
"Requirement already satisfied: nbconvert>=5 in /env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (6.5.0)\n",
"Requirement already satisfied: prometheus-client in /env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.14.1)\n",
"Requirement already satisfied: jinja2 in /env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (3.1.2)\n",
"Requirement already satisfied: argon2-cffi in /env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (21.3.0)\n",
"Requirement already satisfied: terminado>=0.8.3 in /env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.13.3)\n",
"Requirement already satisfied: Send2Trash>=1.8.0 in /env/lib/python3.8/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (1.8.0)\n",
"Requirement already satisfied: ptyprocess>=0.5 in /env/lib/python3.8/site-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.7.0)\n",
"Requirement already satisfied: wcwidth in /env/lib/python3.8/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.2.5)\n",
"Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /env/lib/python3.8/site-packages (from packaging->ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (3.0.9)\n",
"Requirement already satisfied: asttokens in /env/lib/python3.8/site-packages (from stack-data->ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (2.0.5)\n",
"Requirement already satisfied: executing in /env/lib/python3.8/site-packages (from stack-data->ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.8.3)\n",
"Requirement already satisfied: pure-eval in /env/lib/python3.8/site-packages (from stack-data->ipython>=4.0.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.2.2)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: zipp>=3.1.0 in /env/lib/python3.8/site-packages (from importlib-resources>=1.4.0->jsonschema>=2.6->nbformat>=4.2.0->ipywidgets<8,>=7.6.0->ipyleaflet) (3.8.0)\n",
"Requirement already satisfied: defusedxml in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.7.1)\n",
"Requirement already satisfied: nbclient>=0.5.0 in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.6.3)\n",
"Requirement already satisfied: bleach in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (5.0.0)\n",
"Requirement already satisfied: beautifulsoup4 in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (4.11.1)\n",
"Requirement already satisfied: MarkupSafe>=2.0 in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (2.1.1)\n",
"Requirement already satisfied: jupyterlab-pygments in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.2.2)\n",
"Requirement already satisfied: mistune<2,>=0.8.1 in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.8.4)\n",
"Requirement already satisfied: tinycss2 in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (1.1.1)\n",
"Requirement already satisfied: pandocfilters>=1.4.1 in /env/lib/python3.8/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (1.5.0)\n",
"Requirement already satisfied: six>=1.5 in /env/lib/python3.8/site-packages (from python-dateutil>=2.8.2->jupyter-client>=6.1.12->ipykernel>=4.5.1->ipywidgets<8,>=7.6.0->ipyleaflet) (1.16.0)\n",
"Requirement already satisfied: argon2-cffi-bindings in /env/lib/python3.8/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (21.2.0)\n",
"Requirement already satisfied: cffi>=1.0.1 in /env/lib/python3.8/site-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (1.15.0)\n",
"Requirement already satisfied: soupsieve>1.2 in /env/lib/python3.8/site-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (2.3.2.post1)\n",
"Requirement already satisfied: webencodings in /env/lib/python3.8/site-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (0.5.1)\n",
"Requirement already satisfied: pycparser in /env/lib/python3.8/site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets<8,>=7.6.0->ipyleaflet) (2.21)\n"
]
}
],
"source": [
"!pip install ipyleaflet girder_client \n",
"# large_image[all] --find-links https://girder.github.io/large_image_wheels"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "df037fdf",
"metadata": {},
"outputs": [],
"source": [
"import ipyleaflet as ipl\n",
"import girder_client\n",
"import pprint"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b9611e09",
"metadata": {},
"outputs": [],
"source": [
"gc = girder_client.GirderClient(apiUrl='https://demo.kitware.com/histomicstk/api/v1')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f9acfd46",
"metadata": {},
"outputs": [],
"source": [
"resource = '/collection/HistomicsTK Tests/Images/TCGA-02-0010-01Z-00-DX4.07de2e55-a8fe-40ee-9e98-bcb78050b9f7.svs'"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d6a5a0f3",
"metadata": {},
"outputs": [],
"source": [
"itemId = gc.get('resource/lookup', parameters={'path': resource})['_id']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "de09a249",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'levels': 9,\n",
" 'magnification': 20.0,\n",
" 'mm_x': 0.0005015,\n",
" 'mm_y': 0.0005015,\n",
" 'sizeX': 32001,\n",
" 'sizeY': 38474,\n",
" 'tileHeight': 240,\n",
" 'tileWidth': 240}\n"
]
}
],
"source": [
"metadata = gc.get(f'item/{itemId}/tiles')\n",
"tileUrl = gc.urlBase + f'item/{itemId}/tiles' + '/zxy/{z}/{x}/{y}'\n",
"pprint.pprint(metadata)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "9fbf89e7",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'bounds': [[0, 0], [38474, 32001]],\n",
" 'custom': True,\n",
" 'name': 'PixelSpace',\n",
" 'origin': [0, 0],\n",
" 'proj4def': '+proj=longlat +axis=esu',\n",
" 'resolutions': [256,\n",
" 128.0,\n",
" 64.0,\n",
" 32.0,\n",
" 16.0,\n",
" 8.0,\n",
" 4.0,\n",
" 2.0,\n",
" 1.0,\n",
" 0.5,\n",
" 0.25,\n",
" 0.125,\n",
" 0.0625,\n",
" 0.03125,\n",
" 0.015625,\n",
" 0.0078125,\n",
" 0.00390625,\n",
" 0.001953125,\n",
" 0.0009765625,\n",
" 0.00048828125]}\n",
"TileLayer(attribution='', bounds=[[0, 0], [38474, 32001]], max_native_zoom=8, max_zoom=20, options=['attribution', 'bounds', 'detect_retina', 'max_native_zoom', 'max_zoom', 'min_native_zoom', 'min_zoom', 'no_wrap', 'tile_size', 'tms'], tile_size=240, url='https://demo.kitware.com/histomicstk/api/v1/item/5d5c07539114c049342b66fb/tiles/zxy/{z}/{x}/{y}')\n",
"Map(center=[19237.0, 16000.5], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_text', 'zoom_out_title']),), crs={'name': 'PixelSpace', 'custom': True, 'resolutions': [256, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, 0.0078125, 0.00390625, 0.001953125, 0.0009765625, 0.00048828125], 'proj4def': '+proj=longlat +axis=esu', 'bounds': [[0, 0], [38474, 32001]], 'origin': [0, 0]}, default_style=MapStyle(), dragging_style=MapStyle(cursor='move'), layers=(TileLayer(attribution='', base=True, bounds=[[0, 0], [38474, 32001]], max_native_zoom=8, max_zoom=20, options=['attribution', 'bounds', 'detect_retina', 'max_native_zoom', 'max_zoom', 'min_native_zoom', 'min_zoom', 'no_wrap', 'tile_size', 'tms'], tile_size=240, url='https://demo.kitware.com/histomicstk/api/v1/item/5d5c07539114c049342b66fb/tiles/zxy/{z}/{x}/{y}'),), max_zoom=10.0, min_zoom=0.0, options=['bounce_at_zoom_limits', 'box_zoom', 'center', 'close_popup_on_click', 'double_click_zoom', 'dragging', 'fullscreen', 'inertia', 'inertia_deceleration', 'inertia_max_speed', 'interpolation', 'keyboard', 'keyboard_pan_offset', 'keyboard_zoom_offset', 'max_zoom', 'min_zoom', 'prefer_canvas', 'scroll_wheel_zoom', 'tap', 'tap_tolerance', 'touch_zoom', 'world_copy_jump', 'zoom', 'zoom_animation_threshold', 'zoom_delta', 'zoom_snap', 'zoom_start'], scroll_wheel_zoom=True, style=MapStyle(), zoom=0.0)\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "e0f45e39433a456abe91cc8bba5329f6",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Map(center=[19237.0, 16000.5], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zo…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Warning: coordinates are Y, X\n",
"proj = dict(\n",
" name='PixelSpace',\n",
" custom=True,\n",
" # Why does this need to be 256?\n",
" resolutions=[256 * 2 ** (-l) for l in range(20)],\n",
" # This works but has x and y reversed\n",
" proj4def='+proj=longlat +axis=esu',\n",
" bounds=[[0,0],[metadata['sizeY'],metadata['sizeX']]],\n",
" origin=[0,0],\n",
" # This almost works to fix the x, y reversal, but bounds are weird and other issues occur\n",
" # proj4def='+proj=longlat +axis=seu',\n",
" # bounds=[[-metadata['sizeX'],-metadata['sizeY']],[metadata['sizeX'],metadata['sizeY']]],\n",
" # origin=[0,0],\n",
")\n",
"pprint.pprint(proj)\n",
"tileLayer = ipl.TileLayer(\n",
" url=tileUrl, \n",
" attribution='', \n",
" bounds=proj['bounds'] ,\n",
" min_zoom=0,\n",
" max_native_zoom=metadata['levels'] - 1,\n",
" max_zoom=20,\n",
" tile_size=metadata['tileWidth'],\n",
")\n",
"pprint.pprint(tileLayer)\n",
" \n",
"map = ipl.Map(\n",
" crs=proj,\n",
" basemap=tileLayer,\n",
" min_zoom=0,\n",
" max_zoom=metadata['levels'] + 1,\n",
" zoom=0,\n",
" # center=[metadata['sizeX']/2, metadata['sizeY']/2],\n",
" center=[metadata['sizeY']/2, metadata['sizeX']/2],\n",
" scroll_wheel_zoom=True,\n",
" dragging=True,\n",
" attribution_control=False,\n",
")\n",
"pprint.pprint(map)\n",
"if False:\n",
" # Make some rectangles to prove with have pixel space coordinates\n",
" rectangle = ipl.Rectangle(bounds=[[0,0],[metadata['sizeY'],metadata['sizeX']]])\n",
" #rectangle = ipl.Rectangle(bounds=[[0,0],[metadata['sizeX'],metadata['sizeY']]])\n",
" map.add_layer(rectangle)\n",
" rectangle = ipl.Rectangle(bounds=[[0,0],[5000,10000]])\n",
" map.add_layer(rectangle)\n",
"# Render the map\n",
"map"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ad888b15",
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment