{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simple network data preprocessing\n", "\n", "This guide introduces a selection of tools to preprocess the street network and eliminate unwanted gaps in the network and fix its topology." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import momepy\n", "import geopandas as gpd\n", "\n", "from shapely.geometry import LineString" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Close gaps\n", "\n", "The first issue which may happen is the network which is disconnected. The endpoints do not match. Such a network would result in incorrect results of any graph-based analysis. `momepy.close_gaps` can fix the issue by snapping nearby endpoints to a midpoint between the two." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "l1 = LineString([(1, 0), (2, 1)])\n", "l2 = LineString([(2.1, 1), (3, 2)])\n", "l3 = LineString([(3.1, 2), (4, 0)])\n", "l4 = LineString([(4.1, 0), (5, 0)])\n", "l5 = LineString([(5.1, 0), (6, 0)])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df = gpd.GeoDataFrame(['a', 'b', 'c', 'd', 'e'], geometry=[l1, l2, l3, l4, l5])\n", "df.plot(figsize=(10, 10)).set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All LineStrings above need to be fixed." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "df.geometry = momepy.close_gaps(df, .25)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(figsize=(10, 10)).set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compare how the fixed network looks compared to the original one." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = df.plot(alpha=.5, figsize=(10, 10))\n", "gpd.GeoDataFrame(geometry=[l1, l2, l3, l4, l5]).plot(ax=ax, color='r', alpha=.5)\n", "ax.set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Remove false nodes\n", "\n", "A very common issue is incorrect topology. LineString should end either at road intersections or in dead-ends. However, we often see geometry split randomly along the way. `momepy.remove_false_nodes` can fix that.\n", "\n", "We will use `mapclassify.greedy` to highlight each segment." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "from mapclassify import greedy" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "df = gpd.read_file(momepy.datasets.get_path('tests'), layer='broken_network')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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zL6E572x+AGWyxGpOBopSLXZGZgA3G67EJFKpFCQavN/wALgftuFiFQihYJUm+8AL3pj8fm2CxGpRAoFqTabAm/ZLkKkUikUpGoUnOiqwHgUCiIDplCQajLJvSoURAZIoSDVZGP3+rbVKkQqmEJBqsnGQBsw3XIdIhVLoSDVZAwwV2cniAycQkFERLooFEREpItCQaqN/p8WGQT9BZJqMg1YpeBEJ9guRKRSKRSkmjzlXneyWoVIBVMoSDV5GfgK0ylVRAZAoSBVwxuLtwFZNFIQGTCFglSbycB3C050jO1CRCqRQkGqzWTM/9fb2y5EpBIpFKTaZIElaF5BZEAUClJVvLH4XOBVFAoiA6JQkGo0GQgUnGiD7UJEKo1CQarRZGAUsKXtQkQqjUJBqpE2sYkMkEJBqo43Fp+BOVNB8woi/aRQkGo1Gdi54EQ9tgsRqSQKBalWTwFrABvYLkSkkigUpFpNdq96hCTSDwoFqVZvAHNQKIj0i0JBqpI3Fl+CeYSkUBDpB4WCVLPJwCYFJ7qq7UJEKoVCQapZ57zCjlarEKkgCgWpZi8Ai9EjJJE+UyhI1fLG4gsxwaBQEOkjhYJUu8nANgUnOtJ2ISKVQKEg1W4y0ABsa7sQkUqgUJBq97R71SMkkT5QKEhV88binwFvA9vYrkWkEigUpBZMAb5juQaRiqBQkFowBfAVnOg4y3WIlD2FgtSCKe51C5tFiFQChYLUglfcq47nFFkBr+0CREpgFrAR8J7tQkTKnaejo8N2DSIiUib0+EhERLooFEREpItCQUREuigURESki0JBRES6KBRERKSLQkFERLooFEREpItCQUREuigURESki0JBRES6KBRERKSLQkFERLooFEREpItCQUREuigURESki0JBRES6KBRERKSLQkFERLooFEREpItCQUREuigURESki0JBRES6KBRERKSLQkFERLooFEREpItCQUREuigURESki0JBRES6KBRERKTL/wMoOSnK60wUGAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df.plot(greedy(df), categorical=True, figsize=(10, 10), cmap=\"Set3\").set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see that the topology of the network above is not as it should be.\n", "\n", "For a reference, let's check how many geometries we have now:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "83" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Okay, 83 is a starting value. Now let's remove false nodes." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "fixed = momepy.remove_false_nodes(df)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fixed.plot(greedy(fixed), categorical=True, figsize=(10, 10), cmap=\"Set3\").set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the figure above, it is clear that the network is now topologically correct. How many features are there now?" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "56" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(fixed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have been able to represent the same network using 27 features less.\n", "\n", "## Extend lines\n", "\n", "In some cases, like in generation of [enclosures](../elements/enclosed.ipynb), we may want to close some gaps by extending existing LineStrings until they meet other geometry." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "l1 = LineString([(0, 0), (2, 0)])\n", "l2 = LineString([(2.1, -1), (2.1, 1)])\n", "l3 = LineString([(3.1, 2), (4, 0.1)])\n", "l4 = LineString([(3.5, 0), (5, 0)])\n", "l5 = LineString([(2.2, 0), (3.5, 1)])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df = gpd.GeoDataFrame(['a', 'b', 'c', 'd', 'e'], geometry=[l1, l2, l3, l4, l5])\n", "df.plot(figsize=(10, 10)).set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The situation above is typical. The network is almost connected, but there are gaps. Let's extend geometries and close them. Note that we cannot use `momepy.close_gaps` in this situation as we are not snapping endpoints to endpoints." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "extended = momepy.extend_lines(df, tolerance=.2)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "extended.plot(figsize=(10, 10)).set_axis_off()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = extended.plot(figsize=(10, 10), color='r')\n", "df.plot(ax=ax)\n", "ax.set_axis_off()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The figures above are self-explanatory. However, remember that the extended network is not topologically correct and is not suitable for network analysis directly. For `enclosures` it is perfect though.\n", "\n", "For more details and further options, see the [API documentation](../../api.rst)." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.5 ('geo_dev')", "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.5" }, "vscode": { "interpreter": { "hash": "8d1b2c984ad473d756980598d6fae8279815dc9c89a9d51a262cfb04eba7ee8f" } } }, "nbformat": 4, "nbformat_minor": 4 }