{ "cells": [ { "cell_type": "markdown", "id": "eac2be7d", "metadata": {}, "source": [ "# Interaction WolfArray/vectors - Rasterizing/Fill in\n", "\n", "You can want to rasterize a vector layer to create a raster representation of the vector data. This can be useful for various analyses and visualizations.\n", "\n", "To do this, you can use multiple ways." ] }, { "cell_type": "markdown", "id": "15cd9cb2", "metadata": {}, "source": [ "## Importing necessary libraries" ] }, { "cell_type": "code", "execution_count": null, "id": "c1cb040f", "metadata": {}, "outputs": [], "source": [ "# import _add_path # for debugging purposes only - can be removed in production\n", "\n", "from wolfhece import is_enough, __version__\n", "assert is_enough(\"2.2.49\"), \"Please update wolfhece to 2.2.49 or later - you have \" + __version__\n", "\n", "from wolfhece.wolf_array import WolfArray, header_wolf, WOLF_ARRAY_FULL_INTEGER, WOLF_ARRAY_FULL_SINGLE\n", "from wolfhece.PyVertexvectors import Zones, zone, vector, wolfvertex as wv\n", "from wolfhece.assets.mesh import Mesh2D\n", "\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "71bb75e0", "metadata": {}, "source": [ "## Creation of an array\n", "\n", "First of all, we need to create an array where we will fill in the vector data. The steps are as follows:\n", "\n", "1. Create a header\n", "1. Set shape and resolution\n", "1. Create an array from the header" ] }, { "cell_type": "code", "execution_count": 2, "id": "c7f95bca", "metadata": {}, "outputs": [], "source": [ "h = header_wolf()\n", "h.shape = (100, 100)\n", "h.set_resolution(1., 1.)\n", "\n", "a = WolfArray(srcheader=h)" ] }, { "cell_type": "markdown", "id": "e0ee7924", "metadata": {}, "source": [ "## Creation of a vector\n", "\n", "Secondly, we need to create a vector to fill in the array. In this example, we will create a simple polygon (square of 5m x 5m and 1 attached value named 'testvalue') with the following steps:\n", "\n", "1. Create a vector and add vertices from Numpy array\n", "1. Closed the vector as polygon\n", "1. Add a value to the vector with the key 'testvalue'" ] }, { "cell_type": "code", "execution_count": 3, "id": "3f0c5d2a", "metadata": {}, "outputs": [], "source": [ "v = vector(fromnumpy= np.asarray([[5.,5.],\n", " [10.,5.],\n", " [10.,10.],\n", " [5.,10.]]))\n", "\n", "v.force_to_close() # Close the vector as polygon\n", "\n", "v.add_value('testvalue', 5.) # Add an attribute 'testvalue' with value 5.0\n" ] }, { "cell_type": "markdown", "id": "bc1c7432", "metadata": {}, "source": [ "## Rasterizing using the attribute value\n", "\n", "Finally, we can rasterize the vector into the array using the attribute value 'testvalue' to fill in the raster cells that fall within the polygon.\n", "\n", "This méthode is a bit like [RasterIO](https://rasterio.readthedocs.io/en/stable/api/rasterio.rio.rasterize.html#rio-rasterize)." ] }, { "cell_type": "code", "execution_count": 4, "id": "d72c6f1a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a.rasterize_vector_valuebyid(v, id= 'testvalue') # Rasterize the vector into the array using the attribute value 'testvalue' to fill in the raster cells that fall within the polygon.\n", "\n", "fig, ax = a.plot_matplotlib() # Plot the array using Matplotlib\n", "v.myprop.color = 0xFF0000 # Set the color of the first vector to red with full opacity\n", "v.plot_matplotlib(ax=ax)\n" ] }, { "cell_type": "markdown", "id": "316ed516", "metadata": {}, "source": [ "## Creation of a zone\n", "\n", "In WOLF, a zone is a collection of vectors that can be managed together. Zones allow you to group related vectors for easier manipulation and analysis.\n", "\n", "You can create a zone, add vectors to it, and then perform operations on the entire zone as needed." ] }, { "cell_type": "code", "execution_count": 5, "id": "d1f86c09", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "z = zone()\n", "\n", "v2 = vector(fromnumpy= np.asarray([[25.,25.],\n", " [30.,25.],\n", " [50.,35.],\n", " [15.,30.]]))\n", "v2.force_to_close()\n", "\n", "z.add_vector(v, forceparent=True) # Add first vector to the zone and impose the parent attribute of the vector to be the zone\n", "z.add_vector(v2, forceparent=True) # Add second vector to the zone and impose the parent attribute of the vector to be the zone\n", "\n", "z.add_values('testvalue', np.asarray([5., 15.])) # Add an attribute 'testvalue' with values 5.0 and 15.0 for each vector in the zone - Values must be ordered as the vectors in the zone\n", "\n", "a.rasterize_zone_valuebyid(z, id = 'testvalue') # Rasterize the zone into the array using the attribute value 'testvalue' to fill in the raster cells that fall within the polygons of the vectors in the zone\n", "\n", "fig, ax = a.plot_matplotlib() # Plot the array using Matplotlib\n", "\n", "v2.myprop.color = 0x0000FF # Set the color of the second vector to blue with full opacity\n", "\n", "v2.plot_matplotlib(ax=ax)" ] }, { "cell_type": "markdown", "id": "dcd0e280", "metadata": {}, "source": [ "## Filling a vector with a scalar value passed by parameter" ] }, { "cell_type": "code", "execution_count": 6, "id": "f5246945", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a.array[:,:] = 1. # Reset the array to zero\n", "a.fillin_vector_with_value(v2, value=20.) # Fill in the area of the second vector with the value 20.0\n", "\n", "fig, ax = a.plot_matplotlib() # Plot the array using Matplotlib\n", "\n", "v2.myprop.color = 0x0000FF # Set the color of the second vector to blue with full opacity\n", "\n", "v2.plot_matplotlib(ax=ax)" ] }, { "cell_type": "markdown", "id": "01346edd", "metadata": {}, "source": [ "## Interpolation \"z\" values\n", "\n", "If the vector has \"z\" values (elevation or height), you can interpolate these values into the raster array. This is useful for creating digital elevation models (DEMs) or other surface representations from vector data.\n", "\n", "**Be careful**: The interpolation only works if the vector has \"z\" values assigned to its vertices. If the array is an integer type, the interpolated values will be rounded to the nearest integer by np.ceil()." ] }, { "cell_type": "code", "execution_count": 7, "id": "964f98f4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(
, )" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a.array[:,:] = 1. # Reset the array to one\n", "v2.z = 20. # Set \"z\" value of all vertices to 20.0\n", "a.interpolate_on_polygon(v2) # Interpolate the \"z\" values of the vector into the raster array\n", "\n", "fig, ax = a.plot_matplotlib() # Plot the array using Matplotlib\n", "v2.plot_matplotlib(ax=ax)\n" ] }, { "cell_type": "markdown", "id": "3b690d43", "metadata": {}, "source": [ "## Advanced options\n", "\n", "When rasterizing or filling in vectors, you can use different methods for determining which raster cells fall within the vector geometry. The available methods are:\n", "- 'mpl': Uses Matplotlib's Path.contains_points method for point-in-polygon testing.\n", "- 'shapely_strict': Uses Shapely's geometry operations for **strict point-in-polygon** testing.\n", "- 'shapely_wboundary': Similar to 'shapely_strict', but **includes points on the boundary** of the polygon.\n", "- 'rasterio': Uses Rasterio's rasterization capabilities.\n", "\n", "**Shapely methods** generally provide **better performance** and accuracy, especially for complex geometries and large datasets." ] }, { "cell_type": "markdown", "id": "f052126d", "metadata": {}, "source": [ "## Strictly inside polygon" ] }, { "cell_type": "code", "execution_count": 8, "id": "473ab427", "metadata": {}, "outputs": [ { "data": { "image/png": "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R0d1wQUX6Nvf/vagI6EHvvWtb+nSSy/V6aefrqGhIf3Zn/3ZMV8339NoTr94yUteorGxMV188cV69NFHB5YXnTPjqX/lV35Fa9as0Ytf/GLl83k98sgjx9QcOXJEV111lU477TSdfPLJ2rBhw3GDVuC+W265Reeee+7SYfnmLPG/+Iu/WPo677O/brzxRvt3+dVXX730a7zffvjkJz9p39vlj1e/+tU9f5+9bWb37dtnz6g1xz48+OCDOu+887R+/Xo9/fTTg46GLplzhs37af5j5UR+//d/X5///Of1xS9+UX/913+t1atX2/fe/KFBtNx99932L7r77rtP3/jGN/TMM8/one98p/09sOiaa67RHXfcodtuu83WP/HEEyoUCgPNjfadccYZtql54IEH9J3vfEfr1q3Tu9/9bj388MP267zPfrr//vv1R3/0R/Y/ZJbj/fbHa1/7Wj355JNLj3vuuaf373PgqTe96U3BVVddtfTz+fn54PTTTw9uuOGGgeZCb5nfwjMzM0s/f/bZZ4NsNhv85//8n5d+7fDhw8HIyEjwJ3/yJwNKiV55+umn7Xt+9913L723q1atCm677balmh/84Ae25t577x1gUvTCC17wgmDXrl28z5762c9+Frzyla8MvvGNbwRvfetbgw996EP213m//fGJT3wiOO+88074tV6+z16uzB49etT+1735eHn57F/z83vvvXeg2RCuH/3oR3a4xvL3PpPJ2G0mvPfRV6lU7D9PPfVU+0/z59ys1i5/v81HWGvXruX9jrD5+Xnt3bvXrsCb7Qa8z34yn7q8613vOuZ9NXi//fLoo4/abYH/4l/8C11++eV67LHHev4+Oz8BrBP/8A//YP8yfP6UMPPzv/3bvx1YLoTPNLLGid77xa8hmp599lm7p+7Nb36zXve619lfM+/p8PCwTjnllGNqeb+j6Xvf+55tXs2WILN/bmZmRq95zWv03e9+l/fZM+Y/VswWQLPN4Pn4c+2PCy64QKVSSWeffbbdYvCpT31Kv/qrv6qHHnqop++zl80sAD9XccxfgMv3W8Ev5l94pnE1K/DT09MqFot2Hx388vjjj+tDH/qQ3QdvvkEb/rrkkkuWfmz2RZvm9qUvfan2799vv0G7V7zcZvDCF75QiUTiuO+IMz/PZrMDy4XwLb6/vPd++eAHP6g777xTd911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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "METHOD = 'shapely_strict' # Options are: 'mpl', 'shapely_strict', 'shapely_wboundary', 'rasterio'\n", "\n", "# Setup of a header and a mesh\n", "header = header_wolf()\n", "xmin_projet = 0\n", "ymin_projet = 0\n", "xmax_projet = 50\n", "ymax_projet = 50\n", "\n", "header.set_origin(xmin_projet, ymin_projet)\n", "header.set_resolution(1,1)\n", "header.nbx = xmax_projet - xmin_projet\n", "header.nby = ymax_projet - ymin_projet\n", "\n", "mesh = Mesh2D(header) # Useful to plot the cell boundaries\n", "\n", "# Setup of the WolfArray\n", "wa = WolfArray(srcheader=header, whichtype=WOLF_ARRAY_FULL_INTEGER)\n", "wa.array[:,:] = 0\n", "\n", "# Definition of two vectors\n", "v1 = vector()\n", "v2 = vector()\n", "\n", "v1.add_vertex(wv(xmin_projet, ymin_projet, 1))\n", "v1.add_vertex(wv(xmin_projet, (ymin_projet+ymax_projet)/2, 1))\n", "v1.add_vertex(wv((xmin_projet + xmax_projet)/2,ymin_projet, 1))\n", "v1.close_force()\n", "\n", "v2.add_vertex(wv((xmin_projet + xmax_projet)/2, ymax_projet, 1))\n", "v2.add_vertex(wv(xmax_projet, (ymin_projet+ymax_projet)/2, 1))\n", "v2.add_vertex(wv(xmax_projet, ymax_projet, 1))\n", "v2.close_force()\n", "\n", "# Selection of the cells strictly inside each polygon and setting values in the array\n", "ij = wa.get_ij_inside_polygon(v1, method = METHOD)\n", "wa.array.data[ij[:,0], ij[:,1]] = 1\n", "\n", "ij = wa.get_ij_inside_polygon(v2, method = METHOD)\n", "wa.array.data[ij[:,0], ij[:,1]] = 2\n", "\n", "fig, ax = wa.plot_matplotlib()\n", "mesh.plot_cells(ax = ax)\n", "\n", "v1.myprop.color = 0xFF0000\n", "v2.myprop.color = 0x0000FF\n", "\n", "v1.plot_matplotlib(ax=ax)\n", "v2.plot_matplotlib(ax=ax)\n", "\n", "fig.set_size_inches(8,8)" ] }, { "cell_type": "markdown", "id": "d9c70b9f", "metadata": {}, "source": [ "## Including boundary points" ] }, { "cell_type": "code", "execution_count": 9, "id": "38f94fad", "metadata": {}, "outputs": [ { "data": { "image/png": "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je3Cjv/1r3+9nn322bb/z4LZSqWSzj77bB06dEjJZDLoOPAR73W08H5HB+91dBSrn5yffvrpbT+X0c3sq1/9asViMRUKhWO+736dTqdPesySJUu82/HcRpY/GNHgvs+819HAex0tvN/RwXsdHb29vXbvZtDX16eLLrpIe/bsmf/e0aNHva8vu+yyQLMBAAAgeEZfmXW5SwbcX/i6+OKLNTQ0pM9+9rPeb8HN7W4AAACA6DK+md24caP+7//9v/rEJz6hF154QatWrdJf//Vfn/BLYYtxlxy4e9SebOkB7MJ7HR2819HC+x0dvNfRsaSD77XRW3MBAAAAoV0zCwAAANRCMwsAAIDQopkFAABAaNHMAgAAILSsbma3bdumN7zhDVq6dKkuueQSff/73w86Ejrgu9/9rq699lqdeeaZ6unp0V/8xV8c87j7O43u7heve93r1N/fr6uvvlrPPPNMYHnROnc89W/8xm9o+fLleu1rX6tMJqOnn376mJojR47olltu0RlnnKFTTz1V69evP2HQCsx3zz336MILL5zfLN/dS/yv/uqv5h/nfbbXnXfe6f0sv/XWW+e/x/tth0996lPee7vwdt5553X8fba2mZ2YmPD2qHW3fXj88ce1cuVKrV27Vi+++GLQ0dAmd59h9/10/2PlZP7wD/9Qn//85/XFL35Rf/d3f6dly5Z57737hwbh8uCDD3o/6B555BF9+9vf1ssvv6x3vetd3r8Dc2677TZ985vf1K5du7z65557TqOjo4HmRvPOOussr6l57LHH9IMf/EBr1qzRe97zHh04cMB7nPfZTo8++qj+5E/+xPsPmYV4v+3x1re+Vc8///z87aGHHur8++xYamhoyLnlllvmv65UKs6ZZ57p5HK5QHOhs9x/haenp+e/Pnr0qJNOp53/+l//6/z3Dh8+7CxZssT58z//84BSolNefPFF7z1/8MEH59/bU045xdm1a9d8zQ9/+EOv5uGHHw4wKTrhVa96lbN9+3beZ0v94he/cN785jc73/72t50rr7zS+fCHP+x9n/fbHp/85CedlStXnvSxTr7PVl6ZnZmZ8f7r3v14eeHsX/frhx9+ONBs8NePf/xjb7jGwvc+lUp5y0x478OvWCx6/zz99NO9f7p/zt2rtQvfb/cjrBUrVvB+h1ilUtHOnTu9K/DucgPeZzu5n7q8+93vPuZ9dfF+2+WZZ57xlgX+q3/1r3T99dfr2Wef7fj7bPwEsFb89Kc/9X4YHj8lzP364MGDgeWC/9xG1nWy937uMYTT0aNHvTV1l19+ud72trd533Pf076+Pp122mnH1PJ+h9P+/fu95tVdEuSun5uentbg4KCeeOIJ3mfLuP+x4i4BdJcZHI8/1/a45JJLtGPHDp177rneEoOtW7fqiiuu0JNPPtnR99nKZhaAnVdx3B+AC9dbwS7uX3hu4+pegZ+amtKNN97oraODXQ4dOqQPf/jD3jp49xe0Ya9rrrlm/r67Ltptbl//+tdrcnLS+wXtTrFymcGrX/1qxWKxE34jzv06nU4Hlgv+m3t/ee/t8sEPflD333+/HnjgAe8Xhea476m7rOjw4cPH1PN+h5N7leZNb3qTLrroIm8nC/cXPT/3uc/xPlvG/XjZ/WXsX//1X1c8Hvdu7n+0uL+46953r8zxftvptNNO01ve8hbl8/mO/rnutfUHovvDcM+ePcd8ROl+7X6EBXudc8453h+Che99qVTydjXgvQ8f93f83EbW/bh579693vu7kPvn/JRTTjnm/Xa37nLXZPF+h5/7c/ull17ifbbMO97xDm9JiXsVfu528cUXe+sp5+7zftvpl7/8pX70ox95W2d28s+1tcsM3G253I+o3D8UQ0ND+uxnP+v9MsF73/veoKOhA38Y3P+qW/hLX+4PQPeXgtyF4+66yk9/+tN685vf7DU/H//4x73F5+4epQjf0oL77rtP3/jGN7y9ZufWUbm/1Od+ROX+8+abb/b+vLvvv7s/6ZYtW7wfhJdeemnQ8dGEbDbrfSTp/hn+xS9+4b3v3/nOd/Stb32L99ky7p/luXXvc9wtFN29Rue+z/tth7GxMW9feHdpgbvtlrtdqvvJ+W/91m919s+1Y7E/+qM/clasWOH09fV5W3U98sgjQUdCBzzwwAPe1h3H32688cb57bk+/vGPOwMDA96WXO94xzucp59+OujYaMHJ3mf3du+9987X/OpXv3I+8IEPeNs4JRIJZ2RkxHn++ecDzY3m/bt/9++c17/+9d7P69e85jXen9v/8T/+x/zjvM92W7g1l4v32w4bN250Xve613l/rn/t137N+zqfz3f8fe5x/8evjhwAAADwk5VrZgEAABANNLMAAAAILZpZAAAAhBbNLAAAAEKLZhYAAAChRTMLAACA0KKZBQAAQGjRzAIAACC0aGYBwHDuvPJ0Ou2NeW2HOyLy61//esdyAYAJaGYBwGeVSkX/+l//a42Ojh7z/WKxqLPPPlu///u/X/P4bDbrzSx3Z9q342Mf+5h+7/d+T0ePHm3reQDAJIyzBYAu+N//+39r1apV+tKXvqTrr7/e+97mzZu1b98+Pfroo+rr6zvpcc8++6ze9KY36cc//rF+7dd+re2m2n2OL3/5y3r3u9/d1nMBgCm4MgsAXfCWt7xFd955p3eF9fnnn9c3vvEN7dy5U1/96lcXbWRdk5OTWrly5TGN7I4dO3Taaafp/vvv17nnnqtEIqENGzaoXC7rz/7sz/SGN7xBr3rVq/ShD33Ia2DnxGIx/Zt/82+81wUAW8SDDgAAUeE2stPT07rhhhu0f/9+feITn/Aa1Vr+5m/+RhdffPEJ33cb189//vNeY+qupXWXMIyMjHhN7n//7/9d//AP/6D169fr8ssv18aNG+ePGxoa8ppqALAFzSwAdElPT4/uuecenX/++brgggu89av1/OQnPzlpM/vyyy97z/XGN77R+9q9Mjs+Pq5CoaBTTz1Vg4OD+s3f/E098MADxzSzZ555pg4dOuStm+3t5cM5AOHHTzIA6KKvfOUr3rIAdw3sP/3TP9Wt/9WvfqWlS5ee8H33OeYaWdfAwIC3vMBtZBd+78UXXzzmuP7+fq+Rfemll9o+FwAwAc0sAHTJ3/7t3+ruu+/21rq6H/fffPPNqvc7uK9+9av185///ITvn3LKKSdc9T3Z947fueBnP/uZli1b5jW1AGADmlkA6AJ3jetNN92k3/3d3/U+/nd3FPj+97+vL37xizWPe/vb366nnnqqYzmefPJJ7zkBwBY0swDQBe5ese5V2LlfvnKXBNx11136yEc+on/8x39c9Li1a9fq4YcfPmZXgna4v1D2rne9qyPPBQAmoJkFAJ89+OCD2rZtm+69915vreuc973vfd4whVrLDa655hrF43H9z//5P9vO8X/+z//xljq8973vbfu5AMAUDE0AAMO5jfB/+2//Td/61rfaep477rjDW3/7p3/6px3LBgBBY2suADCcewX38OHD3n6y7Yy0fe1rX6vbb7+9o9kAIGhcmQUAAEBosWYWAAAAoUUzCwAAgNCimQUAAEBo0cwCAAAgtGhmAQAAEFo0swAAAAgtmlkAAACEFs0sAAAAQotmFgAAAAqr/x8+dfAv5apmwwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "METHOD = 'shapely_wboundary' # Options are: 'mpl', 'shapely_strict', 'shapely_wboundary', 'rasterio'\n", "\n", "# Setup of a header and a mesh\n", "header = header_wolf()\n", "xmin_projet = 0\n", "ymin_projet = 0\n", "xmax_projet = 50\n", "ymax_projet = 50\n", "\n", "header.set_origin(xmin_projet, ymin_projet)\n", "header.set_resolution(1,1)\n", "header.nbx = xmax_projet - xmin_projet\n", "header.nby = ymax_projet - ymin_projet\n", "\n", "mesh = Mesh2D(header) # Useful to plot the cell boundaries\n", "\n", "# Setup of the WolfArray\n", "wa = WolfArray(srcheader=header, whichtype=WOLF_ARRAY_FULL_INTEGER)\n", "wa.array[:,:] = 0\n", "\n", "# Definition of two vectors\n", "v1 = vector()\n", "v2 = vector()\n", "\n", "v1.add_vertex(wv(xmin_projet, ymin_projet, 1))\n", "v1.add_vertex(wv(xmin_projet, (ymin_projet+ymax_projet)/2, 1))\n", "v1.add_vertex(wv((xmin_projet + xmax_projet)/2,ymin_projet, 1))\n", "v1.close_force()\n", "\n", "v2.add_vertex(wv((xmin_projet + xmax_projet)/2, ymax_projet, 1))\n", "v2.add_vertex(wv(xmax_projet, (ymin_projet+ymax_projet)/2, 1))\n", "v2.add_vertex(wv(xmax_projet, ymax_projet, 1))\n", "v2.close_force()\n", "\n", "# Selection of the cells inside each polygon AND on the boundary and setting values in the array\n", "ij = wa.get_ij_inside_polygon(v1, method = METHOD)\n", "wa.array.data[ij[:,0], ij[:,1]] = 1\n", "\n", "ij = wa.get_ij_inside_polygon(v2, method = METHOD)\n", "wa.array.data[ij[:,0], ij[:,1]] = 2\n", "\n", "fig, ax = wa.plot_matplotlib()\n", "mesh.plot_cells(ax = ax)\n", "\n", "v1.myprop.color = 0xFF0000\n", "v2.myprop.color = 0x0000FF\n", "\n", "v1.plot_matplotlib(ax=ax)\n", "v2.plot_matplotlib(ax=ax)\n", "\n", "fig.set_size_inches(8,8)" ] }, { "cell_type": "markdown", "id": "41f9581a", "metadata": {}, "source": [ "## Prioritizing vector\n", "\n", "When using multiple overlapping or adjacent vectors you can control which vector's value is used to fill raster cells. \n", "\n", "Priority is determined by the order of vectors in the zone or in the provided list; the rasterization follows that sequence. Arrange vectors in the zone/list according to the desired priority.\n", "\n", "It is of importance when using methods that may include boundary points, such as 'shapely_wboundary', to ensure that the correct vector's value is applied to cells on shared boundaries." ] }, { "cell_type": "markdown", "id": "51a66641", "metadata": {}, "source": [ "## Important routines\n", "\n", "Internally, the main routines used for rasterizing/filling in vectors are:\n", "- `get_ij_inside_polygon()`: Determines which raster cells fall within a given polygon vector.\n", "- `get_xy_inside_polygon()`: Similar to `get_ij_inside_polygon()`, but returns coordinates instead of indices.\n", "- `get_xy_infootprint()`: Retrieves the coordinates and indices of raster cells that fall within the footprint of a vector.\n", "- `get_ij_infootprint()`: Similar to `get_xy_footprint_vector()`, but returns indices instead of coordinates." ] }, { "cell_type": "code", "execution_count": 10, "id": "60c64a37", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Return the indices inside a polygon.\n", "\n", " Main principle:\n", " - First, get all indices in the footprint of the polygon (bounding box + epsilon)\n", " - Then, test each point if it is inside the polygon with the selected method\n", " - Filter with the mask if needed\n", "\n", " Returned indices are stored in an array of shape (N,2) with N the number of points found inside the polygon.\n", "\n", " :param myvect: target vector\n", " :param usemask: limit potential nodes to unmaksed nodes\n", " :param eps: epsilon for the intersection\n", " :param method: method to use ('mpl', 'shapely_strict', 'shapely_wboundary', 'rasterio') - default is 'shapely_strict'\n", " \n" ] } ], "source": [ "print(a.get_ij_inside_polygon.__doc__)" ] }, { "cell_type": "code", "execution_count": 11, "id": "1082d99f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Return the coordinates inside a polygon.\n", "\n", " Main principle:\n", " - Get all the coordinates in the footprint of the polygon (taking into account the epsilon if provided)\n", " - Test each coordinate if it is inside the polygon or not (and along boundary if method allows it)\n", " - Apply the mask if requested\n", "\n", " Returned values are stored in an array of shape (N,2) with N the number of points found inside the polygon.\n", "\n", " :param myvect: target vector - vector or Shapely Polygon\n", " :param usemask: limit potential nodes to unmaksed nodes\n", " :param method: method to use ('mpl', 'shapely_strict', 'shapely_wboundary', 'rasterio') - default is 'shapely_strict'\n", " :param epsilon: tolerance for the point-in-polygon test - default is 0.\n", " \n" ] } ], "source": [ "print(a.get_xy_inside_polygon.__doc__)" ] }, { "cell_type": "code", "execution_count": 12, "id": "458fd0a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Return the coordinates and the indices of the cells in the footprint of a vector.\n", "\n", " Coordinates are stored in a numpy array of shape (n,2) where n is the number of cells in the footprint.\n", " Indices are stored in a numpy array of shape (n,2) where n is the number of cells in the footprint. -> See get_ij_infootprint\n", "\n", " Main principle:\n", " - get the indices with 'get_ij_infootprint'\n", " - then convert them to coordinates.\n", "\n", " :param myvect: target vector or Shapely Polygon\n", " :param eps: epsilon to avoid rounding errors\n", " :return: tuple of two numpy arrays - (coordinates, indices)\n", " \n" ] } ], "source": [ "print(a.get_xy_infootprint.__doc__)" ] }, { "cell_type": "code", "execution_count": 13, "id": "b73423a1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", " Return the indices of the cells in the footprint of a vector\n", "\n", " Main principle:\n", " - get the bounding box of the vector\n", " - convert the bounding box to indices\n", " - limit indices to the array size\n", " - create a meshgrid of indices\n", "\n", " Indices are stored in a numpy array of shape (n,2) where n is the number of cells in the footprint.\n", "\n", " :param myvect: target vector or Shapely Polygon\n", " :param eps: epsilon to avoid rounding errors\n", " :return: numpy array of indices\n", " \n" ] } ], "source": [ "print(a.get_ij_infootprint.__doc__)" ] }, { "cell_type": "markdown", "id": "0e76498c", "metadata": {}, "source": [ "## Do not confuse\n", "\n", "- rasterize_vector_along_grid : routine of header_wolf class --> rasterize a vector along to the grid - very useful for flow discharge computation bsed on arbitrary cross-sections\n", "- rasterize_vector_valuebyid : routine of WolfArray class --> fill the grid with the value (by its id) inside the polygon formed by the vector" ] }, { "cell_type": "code", "execution_count": 14, "id": "2ca33b09", "metadata": {}, "outputs": [ { "data": { "image/png": "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3KuOb33rW7r00kvV1dW1V88DAEC9C1mWZXkdAQAAauPFF1/UoYceqp/97Gc644wznMfOPvtsPfPMM3r88cc1ZMiQin9v3bp1am5u1po1azR+/Pi9/sWC/Ry33nqrTjrppL16LgAA6hlH6AEAqCOJRELXX3+9c6R906ZNuu+++/TLX/5Sd9xxR5+TeduvfvUrHXLIIT0m87fffrtisZiWLl2qD3zgAxo+fLg+85nP6O2339aiRYsUj8e1zz776Ctf+Yozid+hsbFRn/rUp5ztAgCAPTdoL/4uAAAwkD2ZX7x4sc466yz99a9/1RVXXOFM1nfnoYceUktLyy6P25P3+fPnO5Nz+7P19un8n/70p52J/u9//3utXr1ap59+uo455hi1trbu/HtHHnmk84sFAACw55jQAwBQZ0KhkG666SYddNBB+uAHP+h8nv39rF27tuKEfvv27c5zHXjggc739hH6O++8U6+88orC4bBSqZROOOEEPfDAAz0m9OPGjdNLL73kfI6+oYETBgEA2BP8LygAAHXo5z//uXOKvP2Z+PXr17/v+HfeeUdNTU27PG4/x47JvG3MmDHOqfb2ZL78sVdffbXH3xs2bJgzmd+6dete//8CAEC9YkIPAECdeeSRR3TDDTc4n323T30///zz9X7XyN1vv/305ptv7vL44MGDdzn6X+mx3le0f+ONNzRixAhnYg8AAPYME3oAAOqI/Zn3c845R1/+8pedU+HtK80/9thjuvnmm3f79w477DDlcrmqdTz77LPOcwIAgD3HhB4AgDpiryVvH43fcUE6+/T4f//3f9fXv/51tbe39/n3Zs6cqUwm0+Nq9XvDvsjeiSeeWJXnAgCgXjGhBwCgTjz44INauHChbrvtNuez7zv867/+q44++ujdnnr/yU9+UoMGDdKf//znve7YsGGDc9r/ueeeu9fPBQBAPQtZ7/ehOQAAAMn5ZcBvf/tb/dd//ddePc83vvEN5/P4t9xyS9XaAACoRyxbBwAA+sU+kv/WW285682PHDlyj59n//331yWXXFLVNgAA6hFH6AEAAAAAMBCfoQcAAAAAwEBM6AEAAAAAMBATegAAAAAADMSEHgAAAAAAAzGhBwAAAADAQEzoAQAAAAAwEBN6AAAAAAAMxIQeAAAAAAADMaEHAAAAAEDm+X+JqB72FpUMjgAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from wolfhece.PyVertex import getRGBfromI, getIfromRGB\n", "\n", "v3 = vector(fromnumpy= np.asarray([[25.,25.],\n", " [100.,80.],\n", " [50.,90.],\n", " [60.,10.],\n", " ]))\n", "\n", "raster_v3 = a.rasterize_vector_along_grid(v3)\n", "\n", "mesh = Mesh2D(a.get_header()) # Asset the mesh for plotting cell boundaries\n", "\n", "fig, ax = mesh.plot_cells(color = 'lightgrey')\n", "\n", "raster_v3.myprop.color = 0x0000FF # blue using Hex code\n", "raster_v3.plot_matplotlib(ax)\n", "\n", "v3.myprop.color = getIfromRGB((255,0,0)) # red using RGB (0-255 scale)\n", "v3.plot_matplotlib(ax)\n", "\n", "fig.set_size_inches(12,12)" ] } ], "metadata": { "kernelspec": { "display_name": "python3.11", "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.11.9" } }, "nbformat": 4, "nbformat_minor": 5 }