{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib.collections as mplc\n",
"import libpysal as ps\n",
"from shapely import geometry as sgeom\n",
"import descartes as des\n",
"import pointpats \n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"data = ps.io.open(ps.examples.get_path('columbus.shp')).read()\n",
"chains = [chain.parts[0] for chain in data]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[(8.624129295349121, 14.236980438232422),\n",
" (8.559700012207031, 14.742449760437012),\n",
" (8.809452056884766, 14.734430313110352),\n",
" (8.808412551879883, 14.636520385742188),\n",
" (8.919304847717285, 14.638500213623047),\n",
" (9.087138175964355, 14.63049030303955),\n",
" (9.09996509552002, 14.244830131530762),\n",
" (9.015047073364258, 14.241840362548828),\n",
" (9.008951187133789, 13.995059967041016),\n",
" (8.818140029907227, 14.002050399780273),\n",
" (8.653305053710938, 14.008090019226074),\n",
" (8.642902374267578, 14.089710235595703),\n",
" (8.63259220123291, 14.1705904006958),\n",
" (8.625825881958008, 14.22367000579834),\n",
" (8.624129295349121, 14.236980438232422)]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"points = chains[0]\n",
"points"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's plot that polygon by interpreting it in Shapely and using its draw behavior."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
""
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly = sgeom.Polygon(points)\n",
"poly"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Nifty. Now, I've implemented Skyum's method for finding the Minimum Bounding Circle for a set of points in `centrography`. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Right now, there's some extra printing. Essentially, if you have sufficiently straight lines on the boundary, the equations for the circumcenter of the tuple $(p,q,r)$ explodes. Thus, I test if $\\angle (p,q,r)$ identifies a circle whose diameter is $(p,r)$ or $(p,q)$. There are two triplets of straight enough lines, so their circle equations are modified, and I retain printing for bug diagnostics."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"(radius, center), inset, removed, constraints = pointpats.skyum(points)\n",
"#p,q,r = cent.skyum(points)\n",
"#mbc = cent._circle(points[p], points[q], points[r])\n",
"#mbc = cent._circle()\n",
"mbc_poly = sgeom.Point(*center).buffer(radius)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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W7dWq1atlJaW5vWPAAAaJMoZ4KCioiKtXbtWW7du1bZt27Rt27bKErb/64SEhMqy1KJFC6WlpR1StJo2bVplAUtISFBJSUm15e37778/4ONQKKTt27dXOfb+z/teZ2VlqVOnTkpISPD6xwkAcYVyBngoPz9fX3zxhVavXq3Vq1drzZo1Wr16tb799ludeOKJysrKqiw7p5xyigYPHuzE0StrrfLz86ssjitXrtS2bdu0YcMGbd26VZ06dVLXrl3VrVu3yueTTz5ZycnJnmQHANcZa63XGQ6RnZ1tlyxZ4nUMIGbC4bA+/fRTLV269IAStnv3bnXp0qWytOwrMJ06dVIgEP//dtp3BHD/73n16tVav3692rZtW/k9d+vWTb1799Ypp5wiY4zXsQHgqBhjllprs2O2P8oZEHuhUEgfffSRFixYoIULF+qTTz5RVlaWevfurVNPPbWyhLVv314+3/E3L6esrExff/11ZWFbuXKlPv74YxUUFKh///4aOHCgBg4cqJ49eyopKcnruABwWJQzwEFbtmzRwoULK8vY2rVr1bNnTw0cOFADBgxQv3791KRJE69jOm/r1q2VP8cFCxZU/hwHDBiggQMHqn///mrcuLHXMQHgAJQzwAEFBQV6++23NXv2bL333nvau3dvZYEYMGAAR3xiZN8RyH2Fbd8RyKFDhyonJ0eDBg1iwgEAz1HOAI9s27ZNc+bM0axZszR//nz17dtXOTk5Ouecc3TyySdzrVQ92Hft3ty5czVr1ix9/fXXGjFihHJycjRixAg1atTI64gAjkOUM6CeWGu1atUqzZ49W7NmzdJXX32l8847T2PGjNF5552njIwMryMe97799tvKwrxgwQL169dPOTk5ysnJUbt27byOB+A4QTkDYmTmTGniRGnbNql1a2nKFGncOKuPP/5YL7zwgmbNmqVwOKwxY8ZozJgx+vGPf6zExESvY6MaoVBIb7/9tmbNmqU33nhD7du3V05OjsaNG6eTTjrJ63gAGjDKGRADM2dKV18tFRb+8LmEhDK1aDFJKSmv6oorrtAFF1yg008/ndOVcSgcDmvhwoV69dVX9dxzz6lr166aMGGCLrroIqWkpHgdD0ADQzkDYqBDB2njxkM/39qfr/dOeUEmQTIBI1+ikUkwMgm+8teJvvLXSf7y10l++ZL9Mon+8tcpAZmkgExy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\n",
"text/plain": [
"