{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Open Street Map Example\n", "\n", "This example shows how to use the Open Street Map data block with the UP42 Python SDK. This block enables use of the OSM vector layers (e.g. streets, water bodies, building footprints etc) with UP42. We use the UP42 SDK and geopandas to query and visualize mapped [public bookcases](https://en.wikipedia.org/wiki/Public_bookcase) in Brooklyn, New York City. \n", "\n", "In the example, the workflow, the area of interest and the workflow parameters are defined. After running the job, the results are downloaded and visualized. For more information, refer to the block's [UP42 Marketplace page](https://marketplace.up42.com/block/df2ec03a-50c4-47ac-8a83-2db613869cf9) and [Documentation](https://docs.up42.com/up42-blocks/data/openstreetmap.html)." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [], "source": [ "import up42\n", "import geopandas as gpd\n", "import requests" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2021-03-12 01:32:27,636 - Authentication with UP42 successful!\n", "2021-03-12 01:32:28,408 - Initialized Project(name: sdk-test, project_id: 6df5f59e-706d-4102-a136-b83b87c6006c, description: , createdAt: 2021-03-05T14:27:13.550603Z)\n" ] } ], "source": [ "up42.authenticate(project_id=\"12345\", \n", " project_api_key=\"12345\")\n", "project = up42.initialize_project()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2021-03-12 01:36:10,385 - Getting existing workflows in project ...\n", "2021-03-12 01:36:10,742 - Got 5 workflows for project 6df5f59e-706d-4102-a136-b83b87c6006c.\n", "100%|██████████| 5/5 [00:01<00:00, 2.71it/s]\n", "2021-03-12 01:36:12,587 - Using existing workflow: Open Street Map - Example - 2c25924c-315d-4026-802b-caae51c0fcac\n", "2021-03-12 01:36:15,543 - Added tasks to workflow: [{'name': 'openstreetmap:1', 'parentName': None, 'blockId': 'df2ec03a-50c4-47ac-8a83-2db613869cf9'}]\n" ] } ], "source": [ "# Construct the workflow\n", "workflow = project.create_workflow(name=\"Open Street Map - Example\", use_existing=True)\n", "workflow.add_workflow_tasks(input_tasks=[\"OpenStreetMap\"])" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 133, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Query the NYC Brooklyn administrative boundaries from the NYC city planning data portal (https://www1.nyc.gov/site/planning/index.page)\n", "ny_admin_boundaries = \"https://services5.arcgis.com/GfwWNkhOj9bNBqoJ/arcgis/rest/services/NYC_Borough_Boundary/FeatureServer/0/query?where=1=1&outFields=*&outSR=4326&f=pgeojson\"\n", "data = requests.get(ny_admin_boundaries).json()\n", "df_ny = gpd.GeoDataFrame.from_features(data[\"features\"], crs=\"EPSG:4326\")\n", "df_brooklyn = df_ny[df_ny[\"BoroName\"] == \"Brooklyn\"]\n", "df_brooklyn.plot()" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'openstreetmap:1': {'time': '2018-01-01T00:00:00Z/2021-12-31T23:59:59Z',\n", " 'osm_tags': ['amenity=public_bookcase'],\n", " 'limit': 1,\n", " 'bbox': [-74.041898061485,\n", " 40.5695382231083,\n", " -73.8335606279059,\n", " 40.7391362162605]}}" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Define the aoi and input parameters of the workflow to run it.\n", "# Even though the Openstreetmap block only accepts a bounding box geometry, we can just pass the GeoDataFrame here as the \n", "# `geometry` argument and select the `geometry_operation` as `bbox`. The function will take care of transforming the geometry, \n", "# see the resulting block input parameters.\n", "input_parameters = workflow.construct_parameters(geometry=df_brooklyn, \n", " geometry_operation=\"bbox\", \n", " start_date=\"2018-01-01\",\n", " end_date=\"2021-12-31\",\n", " limit=1)\n", "\n", "# Set OSM search tags to query public bookcases, see this list of possible OSM tags https://wiki.openstreetmap.org/wiki/Map_features#Financial\n", "input_parameters[\"openstreetmap:1\"][\"osm_tags\"] = [\"amenity=public_bookcase\"]\n", "input_parameters" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2021-03-12 02:29:34,362 - Estimated: 1-1 Credits, Duration: 0-0 min.\n" ] } ], "source": [ "# Price estimation\n", "estimate = workflow.estimate_job(input_parameters)" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2021-03-12 02:27:13,898 - Selected input_parameters: {'openstreetmap:1': {'time': '2018-01-01T00:00:00Z/2021-12-31T23:59:59Z', 'osm_tags': ['amenity=public_bookcase'], 'limit': 1, 'bbox': [-74.041898061485, 40.5695382231083, -73.8335606279059, 40.7391362162605]}}\n", "2021-03-12 02:27:18,983 - Created and running new job: c0396ad8-1a32-463a-876e-534eea2345cb.\n", "2021-03-12 02:27:19,362 - Tracking job status continuously, reporting every 30 seconds...\n", "2021-03-12 02:27:41,315 - Job finished successfully! - c0396ad8-1a32-463a-876e-534eea2345cb\n" ] } ], "source": [ "# Run the workflow, download and visualize the results.\n", "job = workflow.run_job(input_parameters=input_parameters, track_status=True)" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 139, "metadata": {}, "output_type": "execute_result" } ], "source": [ "job.download_results()\n", "job.map_results()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": "up42-py", "language": "python", "name": "up42-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.3" } }, "nbformat": 4, "nbformat_minor": 4 }