Created
June 2, 2017 08:42
-
-
Save jeroendereu/4c861846e7882b6692b2fbd60b2ba5e9 to your computer and use it in GitHub Desktop.
A quick method to rename the fields of a shapefile. All fields can be renamed in one loop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# batch rename the fields of a shapefile\n", | |
| "# all fields can be renamed in one loop (unlike ArcMap, where you have to rename fields one by one)\n", | |
| "# Parameter: the old and new fieldnames need to be stored in a textfile (see below)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import geopandas as gpd\n", | |
| "import pandas as pd\n", | |
| "import fiona\n", | |
| "import tkinter.filedialog as tkfd\n", | |
| "import tkinter.simpledialog as tksd\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "%matplotlib inline" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# import shapefile, with the 'to be converted' fieldnames/columnnames\n", | |
| "input_shapefile = tkfd.askopenfilename(title = \"Select input shapefile\", \n", | |
| " initialdir = \"C:/\", \n", | |
| " filetypes = ((\"shapefile\", \"*.shp\"),(\"all files\", \"*.*\")))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "shapefile = gpd.read_file(input_shapefile)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style>\n", | |
| " .dataframe thead tr:only-child th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: left;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>A</th>\n", | |
| " <th>B</th>\n", | |
| " <th>C</th>\n", | |
| " <th>D</th>\n", | |
| " <th>Id</th>\n", | |
| " <th>K</th>\n", | |
| " <th>L</th>\n", | |
| " <th>M</th>\n", | |
| " <th>N</th>\n", | |
| " <th>Sample</th>\n", | |
| " <th>geometry</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>1</td>\n", | |
| " <td>12</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2</td>\n", | |
| " <td>1</td>\n", | |
| " <td>58</td>\n", | |
| " <td>3</td>\n", | |
| " <td>6</td>\n", | |
| " <td>9</td>\n", | |
| " <td>12</td>\n", | |
| " <td>POINT (51733.56446929721 185566.2300957716)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>0</td>\n", | |
| " <td>2</td>\n", | |
| " <td>3</td>\n", | |
| " <td>5</td>\n", | |
| " <td>2</td>\n", | |
| " <td>6</td>\n", | |
| " <td>8</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>15</td>\n", | |
| " <td>POINT (78627.49070676332 206613.6506294408)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>42</td>\n", | |
| " <td>52</td>\n", | |
| " <td>32</td>\n", | |
| " <td>36</td>\n", | |
| " <td>3</td>\n", | |
| " <td>56</td>\n", | |
| " <td>65</td>\n", | |
| " <td>12</td>\n", | |
| " <td>36</td>\n", | |
| " <td>16</td>\n", | |
| " <td>POINT (97102.44873076177 179719.7243919747)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>4</td>\n", | |
| " <td>58</td>\n", | |
| " <td>95</td>\n", | |
| " <td>2</td>\n", | |
| " <td>4</td>\n", | |
| " <td>6</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2</td>\n", | |
| " <td>1</td>\n", | |
| " <td>22</td>\n", | |
| " <td>POINT (85175.57709501592 174107.0789163296)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>22</td>\n", | |
| " <td>11</td>\n", | |
| " <td>0</td>\n", | |
| " <td>22</td>\n", | |
| " <td>5</td>\n", | |
| " <td>22</td>\n", | |
| " <td>11</td>\n", | |
| " <td>2</td>\n", | |
| " <td>33</td>\n", | |
| " <td>25</td>\n", | |
| " <td>POINT (79329.07139121895 189541.8539743536)</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " A B C D Id K L M N Sample \\\n", | |
| "0 1 12 0 2 1 58 3 6 9 12 \n", | |
| "1 0 2 3 5 2 6 8 1 0 15 \n", | |
| "2 42 52 32 36 3 56 65 12 36 16 \n", | |
| "3 4 58 95 2 4 6 0 2 1 22 \n", | |
| "4 22 11 0 22 5 22 11 2 33 25 \n", | |
| "\n", | |
| " geometry \n", | |
| "0 POINT (51733.56446929721 185566.2300957716) \n", | |
| "1 POINT (78627.49070676332 206613.6506294408) \n", | |
| "2 POINT (97102.44873076177 179719.7243919747) \n", | |
| "3 POINT (85175.57709501592 174107.0789163296) \n", | |
| "4 POINT (79329.07139121895 189541.8539743536) " | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# example shapefile\n", | |
| "shapefile.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "<matplotlib.axes._subplots.AxesSubplot at 0x9e5ff28>" | |
| ] | |
| }, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| }, | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVQAAAD8CAYAAAAoqlyCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGjdJREFUeJzt3X+Q1fV97/HnayG1Jg0UcPVy+dHFK2aqVvGyg7S9mh+Y\nxdj0YisozrTSW4RYNDcmmdyrtZEEx2nMjfEWmahEjGAbAqIRNFqyBkfv3AngkqCAP8ISSQFRtiwD\nnTvWCvu+f3w/W7+shF13P8s5e3g9Zs6c776/38/nfD46vvye7/ec81FEYGZmfVdX6QGYmdUKB6qZ\nWSYOVDOzTByoZmaZOFDNzDJxoJqZZeJANTPLxIFqZpaJA9XMLJPBlR5Abqeddlo0NDRUehhmVkM2\nbdr0zxFR391xNReoDQ0NtLS0VHoYZlZDJP2qJ8f5Lb+ZWSYOVDOzTByoZmaZOFDNzDJxoJqZZeJA\nNTPLxIFqZpaJA9WsHyy64wkuv/CrLLrjiUoPxU4gB6pZP3hq1UY6jgRPrdpY6aHYCeRANesHl0+f\nRN0gcfn0SZUeip1AqrVVTxsbG8NfPTWznCRtiojG7o7zGaqZWSYOVOuRZTv/nv+2cQ7Ldv59pYdi\nVrUcqNYjz+57jg46eHbfc5UeilnV6jZQJY2R9KyklyVtk/SFVB8uqVnS9vQ8LNUbJL0taXN63Ffq\na6KkLZJaJS2UpFQ/RdKKVN8gqaHUZlZ6je2SZuX+B2A988nTP04ddXzy9I9XeihmVavbm1KSRgIj\nI+Jnkj4KbAKuAP4CaI+Ib0i6GRgWEf8zheGTEXHeMfraCPx3YAPwFLAwIp6WNA84PyKulzQT+JOI\nuFrScKAFaAQivfbEiDjw68brm1Jmllu2m1IRsTcifpa2/wV4BRgFTAOWpsOWUoTs8QY0EhgSEeuj\nSPFlpTblvlYBU9LZ61SgOSLaU4g2A5d1N2Yzs0r4QNdQ09nnhRRnmGdExN60603gjNKh49Lb/eck\nXZxqo4DdpWN2p1rnvl0AEXEYOAiMKNeP0aY8rrmSWiS1tLW1fZApmZll0+NAlfRbwKPATRFxqLwv\nnXF2XjvYC4yNiAnAl4DvSxqSabzHFBGLI6IxIhrr67td9sXMrF/0KFAlfYgiTP8hIh5L5bfS2/jO\nt/P7ACLinYjYn7Y3ATuAs4E9wOhSt6NTjfQ8JvU1GBgK7C/Xj9HGzKyq9OQuv4AlwCsR8e3SrjVA\n5133WcDqdHy9pEFp+0xgPPDLdHngkKTJqc9rO9t06Ws6sC6d9a4FmiQNS58iaEo1M7Oq05NVT/8Q\n+HNgi6TNqfbXwDeAlZJmA78Crkr7LgEWSHoX6ACuj4j2tG8e8BBwKvB0ekAR2A9LagXagZkAEdEu\n6XbghXTcglJfZmZVxd/lNzPrhr/Lb2Z2gjlQzcwycaCamWXiQDUzy8SBamaWiQPVzCwTB6qZWSYO\nVDOzTByoZmaZOFDNzDJxoJqZZeJANTPLxIFqZpaJA9XMLBMHqplZJg5UM7NMHKhmZpk4UM3MMunJ\nIn1jJD0r6WVJ2yR9IdWHS2qWtD09Dyu1uUVSq6TXJE0t1SdK2pL2LUyL9SHpFEkrUn2DpIZSm1np\nNbZLmoWZWZXqyRnqYeDLEXEOMBm4QdI5wM3ATyJiPPCT9Ddp30zgXOAy4Dudq6AC9wJzKFZCHZ/2\nA8wGDkTEWcDdwJ2pr+HAfOAiYBIwvxzcZmbVpNtAjYi9EfGztP0vwCvAKGAasDQdthS4Im1PA34Q\nEe9ExOtAKzBJ0khgSESsT0tEL+vSprOvVcCUdPY6FWiOiPaIOAA0814Im5lVlQ90DTW9Fb8Q2ACc\nERF70643gTPS9ihgV6nZ7lQblba71o9qExGHgYPAiOP0ZWZWdXocqJJ+C3gUuCkiDpX3pTPOiq1H\nLWmupBZJLW1tbZUahpmd5HoUqJI+RBGm/xARj6XyW+ltPOl5X6rvAcaUmo9OtT1pu2v9qDaSBgND\ngf3H6esoEbE4IhojorG+vr4nUzIzy64nd/kFLAFeiYhvl3atATrvus8CVpfqM9Od+3EUN582pssD\nhyRNTn1e26VNZ1/TgXXprHct0CRpWLoZ1ZRqZmZVZ3APjvlD4M+BLZI2p9pfA98AVkqaDfwKuAog\nIrZJWgm8TPEJgRsi4khqNw94CDgVeDo9oAjshyW1Au0UnxIgItol3Q68kI5bEBHtvZyrmVm/UnEi\nWDsaGxujpaWl0sMwsxoiaVNENHZ3nL8pZWaWiQPVzCwTB6qZWSYOVDOzTByoZmaZOFDNzDJxoJqZ\nZeJANTPLxIFqZpaJA9XMLBMHqplZJg5UM7NMHKhmZpk4UM3MMnGgmpll4kA1M8vEgWpmlokD1cws\nEweqmVkmPVn19EFJ+yRtLdUukPRTSVskPSFpSKo3SHpb0ub0uK/UZmI6vlXSwrTyKWl11BWpvkFS\nQ6nNLEnb02MWZmZVrCdnqA8Bl3WpPQDcHBG/B/wQ+Epp346ImJAe15fq9wJzKJaVHl/qczZwICLO\nAu4G7gSQNByYD1wETALmp6WkzcyqUreBGhHPUyztXHY28HzabgauPF4fkkYCQyJifRTLrC4Drki7\npwFL0/YqYEo6e50KNEdEe0QcSK/TNdjNzKpGb6+hbqMIQoAZwJjSvnHp7f5zki5OtVHA7tIxu1Ot\nc98ugIg4DBwERpTrx2hjZlZ1ehuofwnMk7QJ+Cjwb6m+FxgbEROALwHf77y+2p8kzZXUIqmlra2t\nv1/OzOyYehWoEfFqRDRFxERgObAj1d+JiP1pe1Oqnw3sAUaXuhidaqTnMQCSBgNDgf3l+jHadB3P\n4ohojIjG+vr63kzJzKzPehWokk5Pz3XA3wD3pb/rJQ1K22dS3Hz6ZUTsBQ5Jmpyuj14LrE7drQE6\n7+BPB9al66xrgSZJw9LNqKZUMzOrSj352NRy4KfAxyTtljQbuEbSL4BXgTeA76XDLwFekrSZ4gbT\n9RHReUNrHsWnA1opzlyfTvUlwAhJrRSXCW4GSO1uB15IjwWlvsw+kLu++wyXzLiLu777TKWHYjVM\nxclg7WhsbIyWlpZKD8OqzCUz7qKjI6irE88/8uVKD8cGGEmbIqKxu+P8TSk7KUxruoC6OjGt6YJK\nD8VqmM9Qzcy64TNUM7MTzIFqZpaJA9XMLBMHqplZJg5UM7NMHKhmZpk4UM3MMnGgWp8t2Pwjznt8\nAQs2/6jSQzGrKAeq9dnKnZs4EsHKnZsqPRSzinKgWp9d1TCRQRJXNUys9FDMKspfPTUz64a/empm\ndoI5UM3MMnGgmpll4kA1M8vEgWpmlokD1cwsk54s0vegpH2StpZqF0j6qaQtkp6QNKS07xZJrZJe\nkzS1VJ+Yjm+VtDCtfoqkUyStSPUNkhpKbWZJ2p4enSuj1oxFdzzB5Rd+lUV3PFHpoZhZBj05Q30I\nuKxL7QHg5oj4PeCHwFcAJJ0DzATOTW2+07msNHAvMIdiaenxpT5nAwci4izgbuDO1NdwYD5wETAJ\nmJ+Wk64ZT63aSMeR4KlVGys9lKp227PPMP6eb3Pbs16x1Kpbt4EaEc8DXZdvPht4Pm03A1em7WnA\nDyLinYh4nWLJ6EmSRgJDImJ9FN8kWAZcUWqzNG2vAqaks9epQHNEtEfEgfQ6XYN9QLt8+iTqBonL\np0+q9FCq2vKtL3EkguVbX6r0UMyOq7fXULdRBCHADGBM2h4F7CodtzvVRqXtrvWj2kTEYeAgMOI4\nfdWMG2/9Y576+e3ceOsfV3ooVe2a885nkMQ1551f6aGYHdfgXrb7S2ChpK8Ca4B/yzekD07SXGAu\nwNixYys5FOsHCz55KQs+eWmlh2HWrV6doUbEqxHRFBETgeXAjrRrD++drQKMTrU9abtr/ag2kgYD\nQ4H9x+nrWONZHBGNEdFYX1/fmymZ9StfBz459CpQJZ2enuuAvwHuS7vWADPTnftxFDefNkbEXuCQ\npMnp+ui1wOpSm847+NOBdek661qgSdKwdDOqKdXMBhxfBz459ORjU8uBnwIfk7Rb0mzgGkm/AF4F\n3gC+BxAR24CVwMvAPwI3RMSR1NU8ik8HtFKc0T6d6kuAEZJagS8BN6e+2oHbgRfSY0GqmQ04vg58\ncvDP95mZdcM/32dmdoI5UM3MMnGgmpll4kA1M8vEgWpmlokD1cwsEweqmVkmDlQzs0wcqGZmmThQ\nzcwycaCamWXiQDUzy8SBamYVdcej65jwlf/NHY+uq/RQ+syBamYV9cj6lzjSETyyfuD/VqwD1cwq\nasbk8xlUJ2ZMHvi/FevfQzUz64Z/D9V65Odtf8sPdzTy87a/rfRQzAY8B+pJbuehRwmOsPPQo5Ue\nitmAd9IH6j03PsDUD13NPTc+UOmhVETDkCsRg2gYcmWlh2I24PVkkb4HJe2TtLVUmyBpvaTNklok\nTUr1Bklvp/pmSfeV2kyUtEVSq6SFafVT0gqpK1J9g6SGUptZkranxyz6wZP3N9NxpIMn72/uj+6r\n3oX1t/An/6mFC+tvqfRQzAa8npyhPgRc1qX2TeDrETEBuC393WlHRExIj+tL9XuBORRLS48v9Tkb\nOBARZwF3A3cCSBoOzAcuAiYB89Ny0ll99nOfpm5QHZ/93Kdzd91jCzb/iPMeX8CCzT+q2BjMrO+6\nDdSIeB7ounxzAEPS9lCKpaR/LUkjgSERsT6KjxUsA65Iu6cBS9P2KmBKOnudCjRHRHtEHACaeX+w\n99nnF13H2ndX8PlF1+XuusdW7tzEkQhW7txUsTGYWd/19hrqTcD/krQL+BZQfr84Lr3df07Sxak2\nCthdOmZ3qnXu2wUQEYeBg8CIcv0YbY4iaW669NDS1tbWyylVzlUNExkkcVXDxEoPxcz6YHAv2/0V\n8MWIeFTSVcAS4FJgLzA2IvZLmgg8LuncTGP9tSJiMbAYis+h9vfr5XbbhD/itgl/VOlhmFkf9fYM\ndRbwWNp+hOIaJxHxTkTsT9ubgB3A2cAeYHSp/ehUIz2PAZA0mOISwv5y/RhtzMyqTm8D9Q3g42n7\nU8B2AEn1kgal7TMpbj79MiL2AockTU7XR68FVqf2aygCGmA6sC5dZ10LNEkalm5GNaWamVlV6vYt\nv6TlwCeA0yTtprjzPgf4u3RG+a/A3HT4JcACSe8CHcD1EdF5Q2sexScGTgWeTg8oLhc8LKmV4ubX\nTICIaJd0O/BCOm5BqS8zs6rj7/KbmXXD3+U3MzvBHKhmZpk4UM3MMnGgmpll4kA1M8vEgWpmlokD\n1cwsEweqmVkmDlQzs0wcqGZmmThQzcwycaCamWXiQDUzy8SBamaWiQPVzCwTB6qZWSYOVDOzTByo\nZmaZOFDNzDLpNlAlPShpn6StpdoESeslbZbUImlSad8tklolvSZpaqk+UdKWtG9hWv0USadIWpHq\nGyQ1lNrMkrQ9PTpXRjUzq0o9OUN9CLisS+2bwNcjYgJwW/obSedQrFp6bmrznc5lpYF7KVZLHZ8e\nnX3OBg5ExFnA3cCdqa/hFCusXgRMAuan5aTNzKpSt4EaEc9TLO98VBkYkraHAm+k7WnADyLinYh4\nHWgFJkkaCQyJiPVRLLO6DLii1GZp2l4FTElnr1OB5ohoj4gDQDPvD3Yzs6oxuJftbgLWSvoWRSj/\nQaqPAtaXjtudau+m7a71zja7ACLisKSDwIhy/RhtjiJpLjAXYOzYsb2ckplZ3/T2ptRfAV+MiDHA\nF4El+Yb0wUXE4ohojIjG+vr6Sg7FzKrYXd99hktm3MVd332mX/rvbaDOAh5L249QXOME2AOMKR03\nOtX2pO2u9aPaSBpMcQlh/3H6MjPrldU/fpGOjmD1j1/sl/57G6hvAB9P258CtqftNcDMdOd+HMXN\np40RsRc4JGlyuj56LbC61KbzDv50YF26zroWaJI0LN2Mako1M7NemdZ0AXV1YlrTBf3Sf7fXUCUt\nBz4BnCZpN8Wd9znA36Uzyn8lXb+MiG2SVgIvA4eBGyLiSOpqHsUnBk4Fnk4PKC4XPCypleLm18zU\nV7uk24EX0nELIqLrzTEzsx778pxL+fKcS/utfxUng7WjsbExWlpaKj0MM6shkjZFRGN3x/mbUmZm\nmThQzcwycaCamWXiQDUzy8SBamaWiQPVzCwTB6qZWSYOVDOzTByoZmaZOFDNzDJxoJqZZeJANTPL\nxIFqZpaJA9XMLBMHqplZJg5UM7NMHKhmZpk4UM3MMuk2UCU9KGmfpK2l2gpJm9Njp6TNqd4g6e3S\nvvtKbSZK2iKpVdLCtFgfaUG/Fam+QVJDqc0sSdvTYxZmZlWs20X6KBbWWwQs6yxExNWd25LuAg6W\njt8REROO0c+9FIv7bQCeAi6jWKhvNnAgIs6SNBO4E7ha0nCKBQEbgQA2SVoTEQd6Pj0zsxOn2zPU\niHieYjXS90lnmVcBy4/Xh6SRwJCIWJ+WiF4GXJF2TwOWpu1VwJTU71SgOSLaU4g2U4SwmVlV6us1\n1IuBtyJie6k2Lr3df07Sxak2CthdOmZ3qnXu2wUQEYcpznZHlOvHaGNmVnV68pb/eK7h6LPTvcDY\niNgvaSLwuKRz+/ga3ZI0F5gLMHbs2P5+OTOzY+r1GaqkwcCfAis6axHxTkTsT9ubgB3A2cAeYHSp\n+ehUIz2PKfU5FNhfrh+jzVEiYnFENEZEY319fW+nZGbWJ315y38p8GpE/PtbeUn1kgal7TOB8cAv\nI2IvcEjS5HR99FpgdWq2Bui8gz8dWJeus64FmiQNkzQMaEo1M7Oq1O1bfknLgU8Ap0naDcyPiCXA\nTN5/M+oSYIGkd4EO4PqI6LyhNY/iEwOnUtzdfzrVlwAPS2qluPk1EyAi2iXdDryQjltQ6svMrOqo\nOBmsHY2NjdHS0lLpYZhVlTseXccj619ixuTzufXKT1V6OAOOpE0R0djdcf6mlNlJ4JH1L3GkI3hk\n/UuVHkpNc6CanQRmTD6fQXVixuTzKz2Umua3/GZm3fBbfjOzE8yBamaWiQPVzCwTB6qZWSYOVDOz\nTByoZmaZOFDNzDJxoJqZZeJANTPLxIFqZpaJA9XMLBMHqplZJg7Uk1THwa/R8ebv0nHwa5UeilnN\ncKCerN5eARxJz9bf7rnxAaZ+6GruufGBSg/F+pED9WR16tXAoPRs/e3J+5vpONLBk/c3V3oo1o8c\nqCepuqFfo+4/vELd0K9Veignhc9+7tPUDarjs5/7dKWHYv2o20CV9KCkfZK2lmorJG1Oj52SNpf2\n3SKpVdJrkqaW6hMlbUn7FqbVT5F0SuqvVdIGSQ2lNrMkbU+PzpVRzQaczy+6jrXvruDzi66r9FCs\nH/XkDPUh4LJyISKujogJETEBeBR4DEDSORSrlp6b2nync1lp4F5gDsXS0uNLfc4GDkTEWcDdwJ2p\nr+HAfOAiYBIwPy0nbWZWlboN1Ih4nmJ55/dJZ5lX8d5y0tOAH0TEOxHxOtAKTJI0EhgSEeujWHNl\nGXBFqc3StL0KmJL6nQo0R0R7RBwAmukS7GZm1aSv11AvBt6KiO3p71HArtL+3ak2Km13rR/VJiIO\nAweBEcfpy8ysKvU1UK/hvbPTipE0V1KLpJa2trZKD8fMTlK9DlRJg4E/BcofZNwDjCn9PTrV9qTt\nrvWj2qQ+hwL7j9PX+0TE4ohojIjG+vr63k7JzKxP+nKGeinwakSU38qvAWamO/fjKG4+bYyIvcAh\nSZPT9dFrgdWlNp138KcD69J11rVAk6Rh6WZUU6qZmVWlwd0dIGk58AngNEm7gfkRsYTibv5Rb/cj\nYpuklcDLwGHghog4knbPo/jEwKnA0+kBsAR4WFIrxc2vmamvdkm3Ay+k4xZExDFvjpmZVQMVJ4O1\nQ1Ib8Kv052nAP1dwOP3N8xu4anluUHvz+52I6PZ6Ys0FapmklohorPQ4+ovnN3DV8tyg9uf36/ir\np2ZmmThQzcwyqfVAXVzpAfQzz2/gquW5Qe3P75hq+hqqmdmJVOtnqGZmJ8yACNT0E4Fb0s8FtqTa\ncEnN6af9msu/RJXzJwRP0Px+W9IqSa9KekXS79fK/CR9rPRTj5slHZJ0Uw3N74uStknaKmm5pN+s\nlbml1/9Cmts2STelWs3ML7uIqPoHsBM4rUvtm8DNaftm4M60fQ7wInAKMA7YAQxK+zYCkwFRfLHg\nM6k+D7gvbc8EVpzg+S0FrkvbvwH8di3NrzTPQcCbwO/UwvwofqzndeDU9PdK4C9qYW7p9c4DtgIf\npvgS0DPAWbUyv375Z1bpAfTwX+xO3h+orwEj0/ZI4LW0fQtwS+m4tcDvp2NeLdWvAe4vH5O2B1N8\nIFknaG5D03+U6lKvifl1mVMT8H9rZX6894tow9PrPpnmOODnll5vBrCk9PdXgf9RK/Prj8eAeMsP\nBPCMpE2S5qbaGVH8RgAUZz1npO2cPyF4IowD2oDvSfq5pAckfYTamV9Z+evKA35+EbEH+BbwT8Be\n4GBE/JgamFuyFbhY0ghJHwYup/jBolqZX3YDJVD/SxSrA3wGuEHSJeWdUfzvbaB+XGEw8J+BeyPi\nQuD/UbyN+ncDfH4ASPoN4L8Cj3TdN1Dnl64dTqP4n+J/BD4i6c/KxwzUuQFExCsUK2j8GPhHYDNw\npMsxA3Z+/WFABGo6EyAi9gE/pFgS5S0VKwGQnvelw3P+hOCJsBvYHREb0t+rKAK2VubX6TPAzyLi\nrfR3LczvUuD1iGiLiHcplgL6A2pjbgBExJKImBgRlwAHgF9QQ/PLreoDVdJHJH20c5viGtVWjv7Z\nv1kc/XOAuX5CsN9FxJvALkkfS6UpFL/WVRPzK+n6Y+S1ML9/AiZL+nAa0xTgFWpjbgBIOj09j6X4\n/ePvU0Pzy67SF3G7ewBnUtw5fBHYBtya6iOAnwDbKe4+Di+1uZXiDuNrpLuJqd5IEcY7gEW898WG\n36R4K9pKcTfyzBM8xwlAC/AS8DgwrMbm9xGKs46hpVpNzA/4OvBqGtfDFHe4a2Ju6fX/D8X/4F8E\nptTSv7v+ePibUmZmmVT9W34zs4HCgWpmlokD1cwsEweqmVkmDlQzs0wcqGZmmThQzcwycaCamWXy\n/wFzGG7bE2GjDAAAAABJRU5ErkJggg==\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0xa88f1d0>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# example shapefile plotted\n", | |
| "shapefile.plot()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# Open the file -textfileformat- that includes the old fieldnames and the new fieldnames. The file is structured as follows:\n", | |
| "# no header\n", | |
| "# old_fieldname_1;new_fieldname_1\n", | |
| "# old_fieldname_2;new_fieldname_2\n", | |
| "# ...\n", | |
| "info_file = tkfd.askopenfilename(title = \"Select textfile\", \n", | |
| " initialdir = \"C:/\", \n", | |
| " filetypes = ((\"textfile\", \"*.txt\"),(\"all files\", \"*.*\")))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false, | |
| "scrolled": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "mapping = pd.read_csv(info_file, \n", | |
| " delimiter=\";\", \n", | |
| " lineterminator=\"\\n\", \n", | |
| " header=None)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style>\n", | |
| " .dataframe thead tr:only-child th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: left;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>0</th>\n", | |
| " <th>1</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>A</td>\n", | |
| " <td>Apricot</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>B</td>\n", | |
| " <td>Banana</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>C</td>\n", | |
| " <td>Cherry</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>D</td>\n", | |
| " <td>Date</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>E</td>\n", | |
| " <td>Elderberry</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5</th>\n", | |
| " <td>F</td>\n", | |
| " <td>Fig</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>6</th>\n", | |
| " <td>G</td>\n", | |
| " <td>Grape</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>7</th>\n", | |
| " <td>K</td>\n", | |
| " <td>Kiwi</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>8</th>\n", | |
| " <td>L</td>\n", | |
| " <td>Lemon</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>9</th>\n", | |
| " <td>M</td>\n", | |
| " <td>Mango</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>10</th>\n", | |
| " <td>N</td>\n", | |
| " <td>Nectarine</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " 0 1\n", | |
| "0 A Apricot\n", | |
| "1 B Banana\n", | |
| "2 C Cherry\n", | |
| "3 D Date\n", | |
| "4 E Elderberry\n", | |
| "5 F Fig\n", | |
| "6 G Grape\n", | |
| "7 K Kiwi\n", | |
| "8 L Lemon\n", | |
| "9 M Mango\n", | |
| "10 N Nectarine" | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# example textfile with old and new fieldnames\n", | |
| "# NOTE: there are more fieldnames in the textfile (e.g. F;Fig, G;Grape and K;Kiwi) then there are in the shapefile. \n", | |
| "# Only matching names will be changed. Non-matching names will be skipped.\n", | |
| "mapping" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "mapping.columns = ('from', 'to')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style>\n", | |
| " .dataframe thead tr:only-child th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: left;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>from</th>\n", | |
| " <th>to</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>A</td>\n", | |
| " <td>Apricot</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>B</td>\n", | |
| " <td>Banana</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>C</td>\n", | |
| " <td>Cherry</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>D</td>\n", | |
| " <td>Date</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>E</td>\n", | |
| " <td>Elderberry</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " from to\n", | |
| "0 A Apricot\n", | |
| "1 B Banana\n", | |
| "2 C Cherry\n", | |
| "3 D Date\n", | |
| "4 E Elderberry" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# example textfile with column names 'from' and 'to'\n", | |
| "mapping.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# create a dictionary which includes with the old_fieldnames as index and the new_fieldname as\n", | |
| "dict_mapping = mapping.set_index('from').to_dict()['to']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "{'A': 'Apricot',\n", | |
| " 'B': 'Banana',\n", | |
| " 'C': 'Cherry',\n", | |
| " 'D': 'Date',\n", | |
| " 'E': 'Elderberry',\n", | |
| " 'F': 'Fig',\n", | |
| " 'G': 'Grape',\n", | |
| " 'K': 'Kiwi',\n", | |
| " 'L': 'Lemon',\n", | |
| " 'M': 'Mango',\n", | |
| " 'N': 'Nectarine'}" | |
| ] | |
| }, | |
| "execution_count": 12, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "dict_mapping" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# for loop to replace the old fieldnames by the new fieldnames\n", | |
| "new_names = []\n", | |
| "for name in shapefile.columns:\n", | |
| " if name in dict_mapping.keys():\n", | |
| " new_names.append(dict_mapping[name])\n", | |
| " else:\n", | |
| " new_names.append(name)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# add the new fieldnames as column headers in the shapefile\n", | |
| "shapefile.columns = new_names" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style>\n", | |
| " .dataframe thead tr:only-child th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: left;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>Apricot</th>\n", | |
| " <th>Banana</th>\n", | |
| " <th>Cherry</th>\n", | |
| " <th>Date</th>\n", | |
| " <th>Id</th>\n", | |
| " <th>Kiwi</th>\n", | |
| " <th>Lemon</th>\n", | |
| " <th>Mango</th>\n", | |
| " <th>Nectarine</th>\n", | |
| " <th>Sample</th>\n", | |
| " <th>geometry</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>1</td>\n", | |
| " <td>12</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2</td>\n", | |
| " <td>1</td>\n", | |
| " <td>58</td>\n", | |
| " <td>3</td>\n", | |
| " <td>6</td>\n", | |
| " <td>9</td>\n", | |
| " <td>12</td>\n", | |
| " <td>POINT (51733.56446929721 185566.2300957716)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>0</td>\n", | |
| " <td>2</td>\n", | |
| " <td>3</td>\n", | |
| " <td>5</td>\n", | |
| " <td>2</td>\n", | |
| " <td>6</td>\n", | |
| " <td>8</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>15</td>\n", | |
| " <td>POINT (78627.49070676332 206613.6506294408)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>42</td>\n", | |
| " <td>52</td>\n", | |
| " <td>32</td>\n", | |
| " <td>36</td>\n", | |
| " <td>3</td>\n", | |
| " <td>56</td>\n", | |
| " <td>65</td>\n", | |
| " <td>12</td>\n", | |
| " <td>36</td>\n", | |
| " <td>16</td>\n", | |
| " <td>POINT (97102.44873076177 179719.7243919747)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>4</td>\n", | |
| " <td>58</td>\n", | |
| " <td>95</td>\n", | |
| " <td>2</td>\n", | |
| " <td>4</td>\n", | |
| " <td>6</td>\n", | |
| " <td>0</td>\n", | |
| " <td>2</td>\n", | |
| " <td>1</td>\n", | |
| " <td>22</td>\n", | |
| " <td>POINT (85175.57709501592 174107.0789163296)</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>22</td>\n", | |
| " <td>11</td>\n", | |
| " <td>0</td>\n", | |
| " <td>22</td>\n", | |
| " <td>5</td>\n", | |
| " <td>22</td>\n", | |
| " <td>11</td>\n", | |
| " <td>2</td>\n", | |
| " <td>33</td>\n", | |
| " <td>25</td>\n", | |
| " <td>POINT (79329.07139121895 189541.8539743536)</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " Apricot Banana Cherry Date Id Kiwi Lemon Mango Nectarine Sample \\\n", | |
| "0 1 12 0 2 1 58 3 6 9 12 \n", | |
| "1 0 2 3 5 2 6 8 1 0 15 \n", | |
| "2 42 52 32 36 3 56 65 12 36 16 \n", | |
| "3 4 58 95 2 4 6 0 2 1 22 \n", | |
| "4 22 11 0 22 5 22 11 2 33 25 \n", | |
| "\n", | |
| " geometry \n", | |
| "0 POINT (51733.56446929721 185566.2300957716) \n", | |
| "1 POINT (78627.49070676332 206613.6506294408) \n", | |
| "2 POINT (97102.44873076177 179719.7243919747) \n", | |
| "3 POINT (85175.57709501592 174107.0789163296) \n", | |
| "4 POINT (79329.07139121895 189541.8539743536) " | |
| ] | |
| }, | |
| "execution_count": 15, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# example shapefile with new field/column-names\n", | |
| "# NOTE: only the fieldnames included in the textfile have been changed, the other fields (e.g. sample, id) remained untouched and are still in the shapefile.\n", | |
| "shapefile.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# define the output location and the output filename.shp\n", | |
| "output_shapefile = tkfd.asksaveasfilename(title = \"Select output location and define output filename.shp -don't forget .shp!-\", \n", | |
| " initialdir = \"C:/\", \n", | |
| " filetypes = ((\"shapefile\", \".shp\"), (\"all types\", \"*.*\")))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 17, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "# write the shapefile with the new fieldnames to the newly defined shapefile\n", | |
| "shapefile.to_file(output_shapefile)" | |
| ] | |
| } | |
| ], | |
| "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.6.0" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment