DynaSlum/satsense

View on GitHub
notebooks/Performance/JaccardIndex_Multipolygons.ipynb

Summary

Maintainability
Test Coverage
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Jaccard index between two multi-polygons \n",
    "## Simple example "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This notebook illustrates the computation of Jaccard similarity index between two simple multi-polygons using `shapely` and `satsense` python libraries."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " ### Creating  two simple multi-polygons "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Multi-polygon 1 valid? True\n",
      "Multi-polygon 2 valid? True\n"
     ]
    }
   ],
   "source": [
    "# Python, shapely and satsense package imports\n",
    "from matplotlib import pyplot\n",
    "from shapely.geometry import MultiPolygon\n",
    "from satsense.util.shapefile import show_multipolygon as shmp # visualization of multipolygons\n",
    "\n",
    "# define the nodes of valid multi-polygons\n",
    "a = [(0, 0), (0, 1), (1, 1), (1, 0), (0, 0)]\n",
    "b = [(1, 1), (1, 2), (2, 2), (2, 1), (1, 1)]\n",
    "c = [(2,3), (4,3), (4,4), (2,4), (2,3)]\n",
    "\n",
    "multi1 = MultiPolygon([[a, []], [b, []] , [c, []]])\n",
    "\n",
    "d = [(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]\n",
    "e = [(3, 3), (3, 4), (4, 4), (4, 3), (3, 3)]\n",
    "\n",
    "multi2 = MultiPolygon([[d, []], [e, []]])\n",
    "\n",
    "print(\"Multi-polygon 1 valid?\", multi1.is_valid)\n",
    "print(\"Multi-polygon 2 valid?\", multi2.is_valid)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualizing the multi-polygons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f2455e8d320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualization parameters\n",
    "RED = '#FF0000'\n",
    "YOLK = '#FFE600'\n",
    "al = 0.8\n",
    "al_over = al - 0.2\n",
    "show_verticies = True\n",
    "\n",
    "extent = [-1, -1, 5, 5] # format of extent is [xmin, ymin, xmax, ymax]\n",
    "\n",
    "# Visualize the multi-polygons\n",
    "fig = pyplot.figure(1, dpi=90)\n",
    "\n",
    "ax = fig.add_subplot(131)\n",
    "shmp(multi1, ax, show_verticies, extent, RED, al, 'multi-polygon 1')\n",
    "ax = fig.add_subplot(132)\n",
    "shmp(multi2, ax, show_verticies, extent, YOLK, al, 'multi-polygon 2')\n",
    "ax = fig.add_subplot(133)\n",
    "shmp(multi1, ax, show_verticies, extent, RED, al_over, '') \n",
    "shmp(multi2, ax, show_verticies, extent, YOLK, al_over, 'overlay multi-\\n polygons 1 and 2')    \n",
    "    \n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### Jaccard Index between the two multi-polygons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The area of the intersection between the 2 multi-polygons is  3.0\n",
      "The area of the uinion between the 2 multi-polygons is  6.0\n",
      "The Jaccard index between the 2 multi-polygons is  0.5\n"
     ]
    }
   ],
   "source": [
    "# Satsense package import\n",
    "from satsense.performance.jaccard_similarity import jaccard_index_multipolygons as jim # jaccard index computation\n",
    "\n",
    "# intersections between the multi-polygons\n",
    "intersec = multi1.intersection(multi2).area\n",
    "print(\"The area of the intersection between the 2 multi-polygons is \",intersec)\n",
    "# union\n",
    "union = multi1.union(multi2).area\n",
    "print(\"The area of the uinion between the 2 multi-polygons is \",union)\n",
    "     \n",
    "# compute the Jaccard index (defined as intersection/union)\n",
    "print(\"The Jaccard index between the 2 multi-polygons is \", jim(multi1, multi2))\n"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda env:satelite]",
   "language": "python",
   "name": "conda-env-satelite-py"
  },
  "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}