From 61da92c4bf9ae4644ec3259866126f90a35574b5 Mon Sep 17 00:00:00 2001 From: Dani Arribas-Bel Date: Mon, 9 Jul 2018 20:30:07 +0100 Subject: [PATCH 1/5] Adding exercises to notebook 1 --- 01-introduction-geospatial-data.ipynb | 120 +++++++++++++++++++++++++- 1 file changed, 119 insertions(+), 1 deletion(-) diff --git a/01-introduction-geospatial-data.ipynb b/01-introduction-geospatial-data.ipynb index 5c00070..cbcaa5c 100644 --- a/01-introduction-geospatial-data.ipynb +++ b/01-introduction-geospatial-data.ipynb @@ -182,6 +182,40 @@ "africa.plot()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: create a plot of South America\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "countries.head()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -486,6 +520,31 @@ "Note the different scale of x and y." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: project the countries to [Web Mercator](http://epsg.io/3857), the CRS used by Google Maps, OpenStreetMap and most web providers.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -512,6 +571,34 @@ "See the [04-more-on-visualization.ipynb](04-more-on-visualization.ipynb) notebook for more details on visualizing geospatial datasets." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: replicate the figure above by coloring the countries in black and cities in yellow\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -629,6 +716,37 @@ "source": [ "See http://geopandas.readthedocs.io/en/latest/gallery/create_geopandas_from_pandas.html#sphx-glr-gallery-create-geopandas-from-pandas-py for full example" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: use [geojson.io](http://geojson.io) to mark five points, and create a `GeoDataFrame` with it. Note that coordinates will be expressed in longitude and latitude, so you'll have to set the CRS accordingly.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] } ], "metadata": { @@ -647,7 +765,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.5" + "version": "3.6.5" } }, "nbformat": 4, From 7ff6e22b1e9bd9910ef474c48e6ab7be1c0045d8 Mon Sep 17 00:00:00 2001 From: Dani Arribas-Bel Date: Mon, 9 Jul 2018 20:36:13 +0100 Subject: [PATCH 2/5] Adding missing image --- img/TopologicSpatialRelarions2.png | Bin 0 -> 63727 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/TopologicSpatialRelarions2.png diff --git a/img/TopologicSpatialRelarions2.png b/img/TopologicSpatialRelarions2.png new file mode 100644 index 0000000000000000000000000000000000000000..bf0e631b65778e90c42a6101630dc0cafcdf213b GIT binary patch literal 63727 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

B6qu^rS#%sp!*AugBjqPW08i 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 IqSdAU0Rh($ literal 0 HcmV?d00001 From ba74dd135e885870dc395d1adc657d3e65d26ce9 Mon Sep 17 00:00:00 2001 From: Dani Arribas-Bel Date: Mon, 9 Jul 2018 21:55:28 +0100 Subject: [PATCH 3/5] Inline exercises for notebook 2 --- 02-spatial-relationships-operations.ipynb | 111 +++++++++++++++++++++- 1 file changed, 108 insertions(+), 3 deletions(-) diff --git a/02-spatial-relationships-operations.ipynb b/02-spatial-relationships-operations.ipynb index c413dcc..945093a 100644 --- a/02-spatial-relationships-operations.ipynb +++ b/02-spatial-relationships-operations.ipynb @@ -125,8 +125,41 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You can recognize the abstract shape of Belgium.\n", + "You can recognize the abstract shape of Belgium." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", "\n", + "**Exercise**: produce a similar figure as above that includes France, Spain, Paris, Madrid, and a line that connects both capitals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "Brussels, the capital of Belgium, is thus located within Belgium. This is a spatial relationship, and we can test this using the individual shapely geometry objects as follow:" ] }, @@ -302,6 +335,32 @@ "" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: find all of the countries contiguous to Brazil" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -326,7 +385,7 @@ "metadata": {}, "outputs": [], "source": [ - "geopandas.GeoSeries([belgium, brussels.buffer(1)]).plot(alpha=0.5, cmap='tab10')" + "geopandas.GeoSeries([belgium, brussels.buffer(1), brussels]).plot(alpha=0.5, cmap='tab10')" ] }, { @@ -399,6 +458,52 @@ "africa" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: Create a single polygon for Europe" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "**Exercise**: Create a single polygon with all of the countries that you would have to cross to travel directly (as the crow flies) from Beijing to Sydney" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "code", "execution_count": null, @@ -445,7 +550,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.5" + "version": "3.6.5" } }, "nbformat": 4, From 591beee901936a78eabca35dd8ebee21e33b2237 Mon Sep 17 00:00:00 2001 From: Dani Arribas-Bel Date: Tue, 10 Jul 2018 13:01:13 +0100 Subject: [PATCH 4/5] Exercises for notebook 3 --- 03-spatial-joins.ipynb | 127 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 1 deletion(-) diff --git a/03-spatial-joins.ipynb b/03-spatial-joins.ipynb index 12fb751..66f6f37 100644 --- a/03-spatial-joins.ipynb +++ b/03-spatial-joins.ipynb @@ -239,6 +239,92 @@ "joined['continent'].value_counts()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: Which rivers pass within 1 degree of Paris? And for Hong Kong?\n", + "\n", + "Tip: `rivers` contains empty geometries, make sure to get rid of them before anything else\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise** [PRO]: Find all European cities within 1 degre of at least one river\n", + "\n", + "\n", + "This requires:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1. Obtaining a list of European cities\n", + "1. Creating a `GeoDataFrame` with all river lines\n", + "1. For every European city, checking whether at least one river \"crosses\" the area within 1 degree\n", + "1. If so, saving the record of a city" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -300,6 +386,45 @@ "\n", "" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: if we define rural as those areas that are not within 50Km of the centre of a city, what is the extention of rural North America? What is the percentage that it covers?\n", + "\n", + "Tip: make sure your projection allows you to calculate distances in metres ([wink wink](http://epsg.io/3083))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] } ], "metadata": { @@ -318,7 +443,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.5" + "version": "3.6.5" } }, "nbformat": 4, From 7a294204eb9a2d6c1207da7f899fa98dadc27378 Mon Sep 17 00:00:00 2001 From: Dani Arribas-Bel Date: Tue, 10 Jul 2018 13:24:06 +0100 Subject: [PATCH 5/5] Adding minor edits and exercises to notebook 4 --- 04-more-on-visualization.ipynb | 91 +++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 1 deletion(-) diff --git a/04-more-on-visualization.ipynb b/04-more-on-visualization.ipynb index 563c2df..bc34a29 100644 --- a/04-more-on-visualization.ipynb +++ b/04-more-on-visualization.ipynb @@ -90,6 +90,32 @@ "ax.set_axis_off()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: create a 12 by 12 plot of the world rivers without axes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -144,6 +170,36 @@ "ax.set_axis_off()" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: create an equal interval map of the length of world rivers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -176,6 +232,39 @@ "ax.set(xlim=(-20, 60), ylim=(-40, 40))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### `matplotlib`tic approach\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "f, ax = plt.subplots(1, figsize=(15, 10))\n", + "countries.plot(edgecolor='k', facecolor='none', ax=ax)\n", + "rivers.plot(ax=ax)\n", + "cities.plot(ax=ax, color='C1')\n", + "ax.axis('equal')\n", + "ax.set(xlim=(-20, 60), ylim=(-40, 40))\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "---\n", + "\n", + "**Exercise**: make a map of Europe with its rivers and cities\n", + "\n", + "---" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -346,7 +435,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.5" + "version": "3.6.5" } }, "nbformat": 4,