Skip to content

Instantly share code, notes, and snippets.

@ricalanis
Created December 5, 2017 21:17
Show Gist options
  • Select an option

  • Save ricalanis/0d67302a80aab99bf07f42d31b963b7d to your computer and use it in GitHub Desktop.

Select an option

Save ricalanis/0d67302a80aab99bf07f42d31b963b7d to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"import io\n",
"import zipfile\n",
"import requests"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"r = requests.get('http://cartografia.ife.org.mx//descargas/distritacion2017/federal/01/01.zip')"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"zf = zipfile.ZipFile(io.BytesIO(r.content))"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<ZipInfo filename='01/' filemode='drwxrwxrwx' external_attr=0x10>,\n",
" <ZipInfo filename='01/SECCION.shx' compress_type=deflate filemode='-rwxrwxrwx' file_size=4916 compress_size=2859>,\n",
" <ZipInfo filename='01/SECCION.shp' compress_type=deflate filemode='-rwxrwxrwx' file_size=867512 compress_size=519120>,\n",
" <ZipInfo filename='01/SECCION.qpj' compress_type=deflate filemode='-rwxrwxrwx' file_size=600 compress_size=324>,\n",
" <ZipInfo filename='01/SECCION.prj' compress_type=deflate filemode='-rwxrwxrwx' file_size=391 compress_size=258>,\n",
" <ZipInfo filename='01/SECCION.dbf' compress_type=deflate filemode='-rwxrwxrwx' file_size=74969 compress_size=7769>,\n",
" <ZipInfo filename='01/MUNICIPIO.shx' compress_type=deflate filemode='-rwxrwxrwx' file_size=188 compress_size=133>,\n",
" <ZipInfo filename='01/MUNICIPIO.shp' compress_type=deflate filemode='-rwxrwxrwx' file_size=201804 compress_size=154497>,\n",
" <ZipInfo filename='01/MUNICIPIO.qpj' compress_type=deflate filemode='-rwxrwxrwx' file_size=600 compress_size=324>,\n",
" <ZipInfo filename='01/MUNICIPIO.prj' compress_type=deflate filemode='-rwxrwxrwx' file_size=391 compress_size=258>,\n",
" <ZipInfo filename='01/MUNICIPIO.dbf' compress_type=deflate filemode='-rwxrwxrwx' file_size=1951 compress_size=353>,\n",
" <ZipInfo filename='01/ENTIDAD.shx' compress_type=deflate filemode='-rwxrwxrwx' file_size=108 compress_size=59>,\n",
" <ZipInfo filename='01/ENTIDAD.shp' compress_type=deflate filemode='-rwxrwxrwx' file_size=25532 compress_size=20842>,\n",
" <ZipInfo filename='01/ENTIDAD.qpj' compress_type=deflate filemode='-rwxrwxrwx' file_size=600 compress_size=324>,\n",
" <ZipInfo filename='01/ENTIDAD.prj' compress_type=deflate filemode='-rwxrwxrwx' file_size=391 compress_size=258>,\n",
" <ZipInfo filename='01/ENTIDAD.dbf' compress_type=deflate filemode='-rwxrwxrwx' file_size=413 compress_size=135>,\n",
" <ZipInfo filename='01/DISTRITO.shx' compress_type=deflate filemode='-rwxrwxrwx' file_size=124 compress_size=71>,\n",
" <ZipInfo filename='01/DISTRITO.shp' compress_type=deflate filemode='-rwxrwxrwx' file_size=84396 compress_size=63362>,\n",
" <ZipInfo filename='01/DISTRITO.qpj' compress_type=deflate filemode='-rwxrwxrwx' file_size=600 compress_size=324>,\n",
" <ZipInfo filename='01/DISTRITO.prj' compress_type=deflate filemode='-rwxrwxrwx' file_size=391 compress_size=258>,\n",
" <ZipInfo filename='01/DISTRITO.dbf' compress_type=deflate filemode='-rwxrwxrwx' file_size=569 compress_size=131>]"
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zf.filelist"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"shapefile =zf.extract('01/SECCION.shx')\n",
"shapefile =zf.extract('01/SECCION.shp')"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"secciones = gpd.read_file(shapefile)"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {
"scrolled": true
},
"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>geometry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>POLYGON ((799361.072405081 2462060.9636707, 79...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>POLYGON ((800248.9540907959 2463191.42204376, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>POLYGON ((799361.072405081 2462060.9636707, 79...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>POLYGON ((804546.242234609 2466916.94549329, 8...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>POLYGON ((804630.775848488 2464700.60661786, 8...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>POLYGON ((784766.364876425 2421973.38071101, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>POLYGON ((808846.7117029669 2462662.53532147, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>POLYGON ((798135.860881574 2461112.71012965, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>POLYGON ((801901.879596756 2444981.00775046, 8...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>POLYGON ((788682.531459833 2453189.66676799, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>POLYGON ((802683.3626023 2449132.28054665, 802...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>POLYGON ((735459.10579946 2416778.53008543, 73...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>POLYGON ((777926.4952224781 2419210.05244003, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>POLYGON ((802683.3626023 2449132.28054665, 802...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>POLYGON ((803419.934294644 2445934.1065301, 80...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>POLYGON ((801901.879596756 2444981.00775046, 8...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>POLYGON ((735584.540295705 2417137.06466453, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>POLYGON ((780607.932759896 2423480.2793414, 78...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>POLYGON ((807466.1586349891 2441844.53140147, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>POLYGON ((807466.1586349891 2441844.53140147, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>POLYGON ((815044.829561662 2446868.76245295, 8...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>POLYGON ((821448.020654768 2442522.66101494, 8...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>POLYGON ((780337.958227387 2423142.133025, 780...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>POLYGON ((735189.679039796 2418670.73423446, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>POLYGON ((735557.6887605221 2417746.44041075, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>POLYGON ((737596.397796402 2418111.19073145, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>POLYGON ((734523.869543945 2417625.44243383, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>POLYGON ((780634.5840191439 2422997.47828425, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>POLYGON ((736272.440782276 2416913.06537492, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>POLYGON ((737596.397796402 2418111.19073145, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>572</th>\n",
" <td>POLYGON ((774867.813967876 2425645.2770351, 77...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>573</th>\n",
" <td>POLYGON ((783977.388846423 2418185.90339724, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>574</th>\n",
" <td>POLYGON ((786321.1091935179 2410571.63841837, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>575</th>\n",
" <td>POLYGON ((776838.7493229189 2406659.02974798, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>576</th>\n",
" <td>POLYGON ((783977.388846423 2418185.90339724, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>577</th>\n",
" <td>POLYGON ((799328.278312554 2413842.51714164, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>578</th>\n",
" <td>POLYGON ((780614.447228907 2414881.94788182, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>579</th>\n",
" <td>POLYGON ((784768.759177563 2419016.88058347, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>580</th>\n",
" <td>POLYGON ((786321.1091935179 2410571.63841837, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>581</th>\n",
" <td>POLYGON ((784757.2562260641 2418826.43506247, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>582</th>\n",
" <td>POLYGON ((784087.978466349 2418745.72547334, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>583</th>\n",
" <td>POLYGON ((783817.384513665 2418800.94615499, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>584</th>\n",
" <td>POLYGON ((783450.799347284 2418773.16209999, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>585</th>\n",
" <td>POLYGON ((776230.00566402 2418670.89308126, 77...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>586</th>\n",
" <td>POLYGON ((783624.059227273 2418634.78790394, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>587</th>\n",
" <td>POLYGON ((784225.155525418 2418490.42527966, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>588</th>\n",
" <td>POLYGON ((784013.492198292 2418368.08046214, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>589</th>\n",
" <td>POLYGON ((784216.135409737 2418441.29077942, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>590</th>\n",
" <td>POLYGON ((784336.063186279 2418511.8809222, 78...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>591</th>\n",
" <td>POLYGON ((774475.345904024 2419502.32548347, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>592</th>\n",
" <td>POLYGON ((783270.053349384 2409599.85140215, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>593</th>\n",
" <td>POLYGON ((769709.121249803 2423414.98075418, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>594</th>\n",
" <td>POLYGON ((763726.845089145 2416280.19818495, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>595</th>\n",
" <td>POLYGON ((783578.6256757959 2418146.17698977, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>596</th>\n",
" <td>POLYGON ((776838.7493229189 2406659.02974798, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>597</th>\n",
" <td>POLYGON ((777169.620152035 2401473.8052869, 77...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>598</th>\n",
" <td>POLYGON ((773908.9288017571 2406108.16666238, ...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>599</th>\n",
" <td>POLYGON ((784638.892594842 2418667.61374284, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>600</th>\n",
" <td>POLYGON ((760532.837266862 2408989.61805006, 7...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>601</th>\n",
" <td>POLYGON ((748127.730556618 2407651.86338583, 7...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>602 rows × 1 columns</p>\n",
"</div>"
],
"text/plain": [
" geometry\n",
"0 POLYGON ((799361.072405081 2462060.9636707, 79...\n",
"1 POLYGON ((800248.9540907959 2463191.42204376, ...\n",
"2 POLYGON ((799361.072405081 2462060.9636707, 79...\n",
"3 POLYGON ((804546.242234609 2466916.94549329, 8...\n",
"4 POLYGON ((804630.775848488 2464700.60661786, 8...\n",
"5 POLYGON ((784766.364876425 2421973.38071101, 7...\n",
"6 POLYGON ((808846.7117029669 2462662.53532147, ...\n",
"7 POLYGON ((798135.860881574 2461112.71012965, 7...\n",
"8 POLYGON ((801901.879596756 2444981.00775046, 8...\n",
"9 POLYGON ((788682.531459833 2453189.66676799, 7...\n",
"10 POLYGON ((802683.3626023 2449132.28054665, 802...\n",
"11 POLYGON ((735459.10579946 2416778.53008543, 73...\n",
"12 POLYGON ((777926.4952224781 2419210.05244003, ...\n",
"13 POLYGON ((802683.3626023 2449132.28054665, 802...\n",
"14 POLYGON ((803419.934294644 2445934.1065301, 80...\n",
"15 POLYGON ((801901.879596756 2444981.00775046, 8...\n",
"16 POLYGON ((735584.540295705 2417137.06466453, 7...\n",
"17 POLYGON ((780607.932759896 2423480.2793414, 78...\n",
"18 POLYGON ((807466.1586349891 2441844.53140147, ...\n",
"19 POLYGON ((807466.1586349891 2441844.53140147, ...\n",
"20 POLYGON ((815044.829561662 2446868.76245295, 8...\n",
"21 POLYGON ((821448.020654768 2442522.66101494, 8...\n",
"22 POLYGON ((780337.958227387 2423142.133025, 780...\n",
"23 POLYGON ((735189.679039796 2418670.73423446, 7...\n",
"24 POLYGON ((735557.6887605221 2417746.44041075, ...\n",
"25 POLYGON ((737596.397796402 2418111.19073145, 7...\n",
"26 POLYGON ((734523.869543945 2417625.44243383, 7...\n",
"27 POLYGON ((780634.5840191439 2422997.47828425, ...\n",
"28 POLYGON ((736272.440782276 2416913.06537492, 7...\n",
"29 POLYGON ((737596.397796402 2418111.19073145, 7...\n",
".. ...\n",
"572 POLYGON ((774867.813967876 2425645.2770351, 77...\n",
"573 POLYGON ((783977.388846423 2418185.90339724, 7...\n",
"574 POLYGON ((786321.1091935179 2410571.63841837, ...\n",
"575 POLYGON ((776838.7493229189 2406659.02974798, ...\n",
"576 POLYGON ((783977.388846423 2418185.90339724, 7...\n",
"577 POLYGON ((799328.278312554 2413842.51714164, 7...\n",
"578 POLYGON ((780614.447228907 2414881.94788182, 7...\n",
"579 POLYGON ((784768.759177563 2419016.88058347, 7...\n",
"580 POLYGON ((786321.1091935179 2410571.63841837, ...\n",
"581 POLYGON ((784757.2562260641 2418826.43506247, ...\n",
"582 POLYGON ((784087.978466349 2418745.72547334, 7...\n",
"583 POLYGON ((783817.384513665 2418800.94615499, 7...\n",
"584 POLYGON ((783450.799347284 2418773.16209999, 7...\n",
"585 POLYGON ((776230.00566402 2418670.89308126, 77...\n",
"586 POLYGON ((783624.059227273 2418634.78790394, 7...\n",
"587 POLYGON ((784225.155525418 2418490.42527966, 7...\n",
"588 POLYGON ((784013.492198292 2418368.08046214, 7...\n",
"589 POLYGON ((784216.135409737 2418441.29077942, 7...\n",
"590 POLYGON ((784336.063186279 2418511.8809222, 78...\n",
"591 POLYGON ((774475.345904024 2419502.32548347, 7...\n",
"592 POLYGON ((783270.053349384 2409599.85140215, 7...\n",
"593 POLYGON ((769709.121249803 2423414.98075418, 7...\n",
"594 POLYGON ((763726.845089145 2416280.19818495, 7...\n",
"595 POLYGON ((783578.6256757959 2418146.17698977, ...\n",
"596 POLYGON ((776838.7493229189 2406659.02974798, ...\n",
"597 POLYGON ((777169.620152035 2401473.8052869, 77...\n",
"598 POLYGON ((773908.9288017571 2406108.16666238, ...\n",
"599 POLYGON ((784638.892594842 2418667.61374284, 7...\n",
"600 POLYGON ((760532.837266862 2408989.61805006, 7...\n",
"601 POLYGON ((748127.730556618 2407651.86338583, 7...\n",
"\n",
"[602 rows x 1 columns]"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"secciones"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"r = requests.get('http://cartografia.ife.org.mx//descargas/distritacion2017/local/01/01.zip')"
]
},
{
"cell_type": "code",
"execution_count": 147,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"zf = zipfile.ZipFile(io.BytesIO(r.content))"
]
},
{
"cell_type": "code",
"execution_count": 148,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<ZipInfo filename='DISTRITO_LOCAL.dbf' compress_type=deflate external_attr=0x20 file_size=702 compress_size=156>,\n",
" <ZipInfo filename='DISTRITO_LOCAL.prj' compress_type=deflate external_attr=0x20 file_size=403 compress_size=259>,\n",
" <ZipInfo filename='DISTRITO_LOCAL.shp' compress_type=deflate external_attr=0x20 file_size=235780 compress_size=158545>,\n",
" <ZipInfo filename='DISTRITO_LOCAL.shx' compress_type=deflate external_attr=0x20 file_size=244 compress_size=193>]"
]
},
"execution_count": 148,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"zf.filelist"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"shapefile =zf.extract('DISTRITO_LOCAL.shx')\n",
"shapefile =zf.extract('DISTRITO_LOCAL.shp')"
]
},
{
"cell_type": "code",
"execution_count": 150,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"distritos = gpd.read_file(shapefile)"
]
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 155,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"distritos[\"geometry\"][0].intersects(secciones[\"geometry\"][0])"
]
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from shapely import geometry,wkt"
]
},
{
"cell_type": "code",
"execution_count": 229,
"metadata": {},
"outputs": [],
"source": [
"intersects_data = 0\n",
"intersected_polygons = None\n",
"for distrito in distritos[\"geometry\"]:\n",
" intersects = secciones[\"geometry\"].apply(lambda x: x.overlaps(distrito))\n",
" intersects = pd.DataFrame(intersects[intersects == True])\n",
" if intersected_polygons is not None:\n",
" intersected_polygons = pd.concat([intersected_polygons,intersects])\n",
" else:\n",
" intersected_polygons = intersects"
]
},
{
"cell_type": "code",
"execution_count": 230,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"721\n"
]
},
{
"data": {
"text/plain": [
"602"
]
},
"execution_count": 230,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(len(intersected_polygons))\n",
"len(secciones)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment