{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "1ccf20eb-4ebd-a0f4-d039-1154703ac184"
      },
      "outputs": [],
      "source": [
        "from shapely import wkt, affinity\n",
        "import shapely\n",
        "import pandas as pd\n",
        "import json, geojson\n",
        "\n",
        "cls = ['Buildings','Misc.', 'Road' , 'Track', 'Trees', 'Crops', 'Waterway', 'Standing water', 'Vehicle Large', 'Vehicle Small']\n",
        "cls_col = ['gold','purple', 'gray' , 'brown', 'green', 'yellow', 'blue', 'darkgreen', 'orange', 'red']\n",
        "\n",
        "g = pd.read_csv('../input/grid_sizes.csv', names=['ImageId','Xmax','Ymin'])\n",
        "w = pd.read_csv('../input/train_wkt_v4.csv')\n",
        "d = {}\n",
        "for i in range(len(g)):\n",
        "    d[str(g['ImageId'][i])+'.tif'] = {'x': g['Xmax'][i], 'y': g['Ymin'][i], 'wkt':['','','','','','','','','','']}\n",
        "for i in range(len(w)):\n",
        "    d[str(w['ImageId'][i])+'.tif']['wkt'][w['ClassType'][i] -1 ] = w['MultipolygonWKT'][i]\n",
        "\n",
        "X_ = 400 * (400/(400+1))\n",
        "\n",
        "html = open('output.html', 'w')\n",
        "html.write(\"\"\"\n",
        "<!DOCTYPE html>\n",
        "<html>\n",
        "<body>\n",
        "\"\"\")\n",
        "\n",
        "im_break = 0\n",
        "for img in d:\n",
        "    if d[img]['wkt'] != ['','','','','','','','','','']:\n",
        "        html.write(\"<br/><br/>\"+ img + \"<br/><svg height='400' width='400'>\")\n",
        "        i = 0\n",
        "        for poly_ in d[img]['wkt']:\n",
        "            if len(poly_)>0:\n",
        "                poly = wkt.loads(poly_)\n",
        "                poly = affinity.scale(poly, xfact= X_/float(d[img]['x']), yfact= X_/float(d[img]['y']), origin=(0,0,0))\n",
        "                for p in poly:\n",
        "                    html.write(\"<polygon points='\" + \" \".join([str(x[0])+','+str(x[1]) for x in p.exterior.coords]) + \"' style='fill:\" + cls_col[i] + \";stroke:black;stroke-width:1;' />\")\n",
        "            i+=1\n",
        "        html.write(\"</svg>\")\n",
        "        im_break += 1\n",
        "    if im_break > 2: #remove\n",
        "        break #remove\n",
        "html.write(\"</body></html>\")\n",
        "html.close()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "0ad6dc5d-745e-ea0d-4b76-12cebf3e0a5c"
      },
      "outputs": [],
      "source": [
        "from IPython.core.display import HTML\n",
        "HTML(open('output.html', 'r').read())"
      ]
    }
  ],
  "metadata": {
    "_change_revision": 0,
    "_is_fork": false,
    "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": 0
}