Skip to content

Instantly share code, notes, and snippets.

@yogabonito
Created February 2, 2018 15:40
Show Gist options
  • Save yogabonito/95c5fc8ef21d2065a69a7c9243a28759 to your computer and use it in GitHub Desktop.
Save yogabonito/95c5fc8ef21d2065a69a7c9243a28759 to your computer and use it in GitHub Desktop.
demonstration of solving a regionalization task using region
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# enable inline plots in notebooks"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# imports"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import geopandas as gpd\n",
"import matplotlib.pyplot as plt\n",
"from shapely.geometry import Polygon\n",
"\n",
"from region.p_regions.exact import PRegionsExact"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# define input"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"geometry = [\n",
" Polygon([(x, y),\n",
" (x, y+1),\n",
" (x+1, y+1),\n",
" (x+1, y)]) for y in range(3) for x in range(3)\n",
"]\n",
"gdf = gpd.GeoDataFrame(\n",
" {\"attribute\": [726.7, 623.6, 487.3,\n",
" 200.4, 245.0, 481.0,\n",
" 170.9, 225.9, 226.9]},\n",
" geometry=geometry)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# plot input"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQIAAAD8CAYAAACcoKqNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAA3lJREFUeJzt3DuKVUEUQNFd0uIHE1sxM3MAilMxMFNjB/HoQRirWQdO\nRXQAZmbiJxE/KJSBodAmt6kHb60BHA4n2JdK7phzBhy2C6sXANYTAkAIACEAEgIgIQASAiAhABIC\nICEAEgIgIQASAiAhABICICEAEgIgIQASAqA6Wr3A/4wx/FQR/vVlznm81bC9D0HV5btPT1bvsNqP\nt892Nx+fHvwdPr54uHvw/PXB3+HVk/u7Led5GgBCAAgBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJ\nAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQ\nEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAA\nCQGQEAAJAZAQAAkBkBAA1Zhzrt7hTGOM/V4Q1phzzs0+5EdbDTpPn77+Plm9w2o3rh3t3n34dvB3\nuHPr6u7hyzcHf4fTR/d2W87zNACEABACICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEA\nEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABIC\nICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAh\nABICICEAqjHnXL3DmcYY+70grDHnnJt9yI+2GnSevv+aJ6t3WO3KxbF7//nnwd/h9vEld+jvHbac\n52kACAEgBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQE\nQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBC\nACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCAFRjzrl6hzONMT5X\n11fvsQdmNVYvsQfc4a8vc87jrYbtfQiA8+dpAAgBIARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQE\nQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAVH8AmwFK7QgE\nQ/UAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f5294768518>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gdf.plot(column=\"attribute\", cmap='Blues')\n",
"plt.gca().invert_yaxis()\n",
"plt.gca().set_axis_off()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# calculate regions"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"running FLOW algorithm\n"
]
}
],
"source": [
"cluster_obj = PRegionsExact()\n",
"cluster_obj.fit_from_geodataframe(gdf, \"attribute\", 2) # we build two regions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# save regions"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"gdf[\"region\"] = cluster_obj.labels_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# plot output"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAQIAAAD8CAYAAACcoKqNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAA0dJREFUeJzt3DFKZFEQQNH7BgUNx5W4LxfRuAj35UrGUMGgJhCjgZ7k\nN6/BcxZQFBXcz0v+mpmAn+3X7gWA/YQAEAJACICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABI\nCICEAEgIgIQAqG52L/A/ay0/VYR/vc3Mw1HDrj4EVXePT8+7d9jt4/Xl5A7u8O3j9eV05DxPA0AI\nACEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAh\nABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQAS\nAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgKgWjOze4ez1lrXvSDsMTNz\n2If85qhBl/T+Oc+7d9jt/nad3OHrDnePTz/+Dh+vL6cj53kaAEIACAGQEAAJAZAQAAkBkBAACQGQ\nEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAA\nCQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkBkBAACQGQEAAJAZAQAAkB\nkBAACQGQEAAJAZAQAAkBkBAACQGQEADVmpndO5y11rruBWGPmZnDPuQ3Rw26pPfPed69w273t+vk\nDu7w7f52nY6c52kACAEgBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARA\nQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIA\nJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCACQEQEIAJARAQgAkBEBCAFRr\nZnbvcNZa60/1e/ceV2CqtXuJK+AOX95m5uGoYVcfAuDyPA0AIQCEAEgIgIQASAiAhABICICEAEgI\ngIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICICEAEgIgIQASAiAhABICIDq\nL25TSu2p3tppAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f529d7e9c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gdf.plot(column=\"region\", cmap='Blues')\n",
"plt.gca().invert_yaxis()\n",
"plt.gca().set_axis_off()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment