From b0a2332501562f520c3dbfabefa65437c1616d50 Mon Sep 17 00:00:00 2001 From: Chris Rowe Date: Tue, 2 Jul 2024 08:20:32 -0400 Subject: [PATCH] add example overture_buildings layer notebook --- .gitignore | 3 + notebooks/layers/overture_buildings.ipynb | 183 ++++++++++++++++++++++ 2 files changed, 186 insertions(+) create mode 100644 notebooks/layers/overture_buildings.ipynb diff --git a/.gitignore b/.gitignore index 01b3808..5d919a7 100644 --- a/.gitignore +++ b/.gitignore @@ -163,3 +163,6 @@ cython_debug/ /keys keys/ wri-gee-358d958ce7c6.json + +# data +/data diff --git a/notebooks/layers/overture_buildings.ipynb b/notebooks/layers/overture_buildings.ipynb new file mode 100644 index 0000000..865a113 --- /dev/null +++ b/notebooks/layers/overture_buildings.ipynb @@ -0,0 +1,183 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import geopandas as gpd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # update the wd path to be able to laod the module\n", + "os.chdir('../..')\n", + "os.getcwd()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get Area of Interest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# load boundary from s3\n", + "boundary_path = 'https://cities-indicators.s3.eu-west-3.amazonaws.com/data/boundaries/boundary-BRA-Salvador-ADM4union.geojson'\n", + "city_gdf = gpd.read_file(boundary_path, driver='GeoJSON')\n", + "city_gdf.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get area in sqare km\n", + "city_gdf.to_crs(epsg=3857).area / 10**6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get Layer" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from city_metrix.layers import OvertureBuildings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "overture_buildings = OvertureBuildings().get_data(city_gdf.total_bounds)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Save to file" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a data folder if it does not exist\n", + "if not os.path.exists('data'):\n", + " os.makedirs('data')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Save the overture_buildings to a geoparquet file\n", + "# This is much quicker and creates a significantly smaller file compared to geojson\n", + "overture_buildings.to_parquet('data/overture_buildings.geoparquet')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Save the overture_buildings to a geojson file\n", + "overture_buildings.to_file('data/overture_buildings.geojson', driver='GeoJSON')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "cities-cif", + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}