Skip to content

Instantly share code, notes, and snippets.

@ljwolf
Created July 11, 2018 18:59
Show Gist options
  • Save ljwolf/23ed4b05e0fc32173deb8908aa52e928 to your computer and use it in GitHub Desktop.
Save ljwolf/23ed4b05e0fc32173deb8908aa52e928 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pysal as ps\n",
"import numpy as np\n",
"import geopandas as gpd\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"leon = gpd.read_file('./Edges_Leon_FL_2010/Edges_Leon_FL_2010.shp')"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>STATEFP</th>\n",
" <th>COUNTYFP</th>\n",
" <th>TLID</th>\n",
" <th>TFIDL</th>\n",
" <th>TFIDR</th>\n",
" <th>MTFCC</th>\n",
" <th>FULLNAME</th>\n",
" <th>SMID</th>\n",
" <th>LFROMADD</th>\n",
" <th>LTOADD</th>\n",
" <th>...</th>\n",
" <th>TTYP</th>\n",
" <th>DECKEDROAD</th>\n",
" <th>ARTPATH</th>\n",
" <th>PERSIST</th>\n",
" <th>GCSEFLG</th>\n",
" <th>OFFSETL</th>\n",
" <th>OFFSETR</th>\n",
" <th>TNIDF</th>\n",
" <th>TNIDT</th>\n",
" <th>geometry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>12</td>\n",
" <td>073</td>\n",
" <td>82853064</td>\n",
" <td>201692756</td>\n",
" <td>201693597</td>\n",
" <td>S1400</td>\n",
" <td>Shadowlawn Dr</td>\n",
" <td>533</td>\n",
" <td>1000</td>\n",
" <td>1098</td>\n",
" <td>...</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>93183057</td>\n",
" <td>93183131</td>\n",
" <td>LINESTRING (-84.26233599999999 30.489451, -84....</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>12</td>\n",
" <td>073</td>\n",
" <td>82893916</td>\n",
" <td>201692952</td>\n",
" <td>201694338</td>\n",
" <td>S1630</td>\n",
" <td></td>\n",
" <td>533</td>\n",
" <td></td>\n",
" <td></td>\n",
" <td>...</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>93195791</td>\n",
" <td>93195788</td>\n",
" <td>LINESTRING (-84.254091 30.501298, -84.25371299...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>12</td>\n",
" <td>073</td>\n",
" <td>82852896</td>\n",
" <td>201693202</td>\n",
" <td>201693174</td>\n",
" <td>S1400</td>\n",
" <td>Lowry Dr</td>\n",
" <td>533</td>\n",
" <td>1224</td>\n",
" <td>1298</td>\n",
" <td>...</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>93183014</td>\n",
" <td>93183013</td>\n",
" <td>LINESTRING (-84.257226 30.494463, -84.257211 3...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>12</td>\n",
" <td>073</td>\n",
" <td>82869686</td>\n",
" <td>201693269</td>\n",
" <td>201693174</td>\n",
" <td>S1400</td>\n",
" <td>Piedmont Dr</td>\n",
" <td>533</td>\n",
" <td>1318</td>\n",
" <td>1348</td>\n",
" <td>...</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>93183007</td>\n",
" <td>93189613</td>\n",
" <td>LINESTRING (-84.25658199999999 30.495401, -84....</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>12</td>\n",
" <td>073</td>\n",
" <td>82877747</td>\n",
" <td>201693176</td>\n",
" <td>201693175</td>\n",
" <td>S1400</td>\n",
" <td>Live Oak Plantation Rd</td>\n",
" <td>533</td>\n",
" <td>1048</td>\n",
" <td>1100</td>\n",
" <td>...</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td></td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>N</td>\n",
" <td>93192421</td>\n",
" <td>93183008</td>\n",
" <td>LINESTRING (-84.26093299999999 30.494634, -84....</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 32 columns</p>\n",
"</div>"
],
"text/plain": [
" STATEFP COUNTYFP TLID TFIDL TFIDR MTFCC \\\n",
"0 12 073 82853064 201692756 201693597 S1400 \n",
"1 12 073 82893916 201692952 201694338 S1630 \n",
"2 12 073 82852896 201693202 201693174 S1400 \n",
"3 12 073 82869686 201693269 201693174 S1400 \n",
"4 12 073 82877747 201693176 201693175 S1400 \n",
"\n",
" FULLNAME SMID LFROMADD LTOADD \\\n",
"0 Shadowlawn Dr 533 1000 1098 \n",
"1 533 \n",
"2 Lowry Dr 533 1224 1298 \n",
"3 Piedmont Dr 533 1318 1348 \n",
"4 Live Oak Plantation Rd 533 1048 1100 \n",
"\n",
" ... TTYP DECKEDROAD ARTPATH \\\n",
"0 ... N N \n",
"1 ... N N \n",
"2 ... N N \n",
"3 ... N N \n",
"4 ... N N \n",
"\n",
" PERSIST GCSEFLG OFFSETL OFFSETR TNIDF TNIDT \\\n",
"0 N N N 93183057 93183131 \n",
"1 N N N 93195791 93195788 \n",
"2 N N N 93183014 93183013 \n",
"3 N N N 93183007 93189613 \n",
"4 N N N 93192421 93183008 \n",
"\n",
" geometry \n",
"0 LINESTRING (-84.26233599999999 30.489451, -84.... \n",
"1 LINESTRING (-84.254091 30.501298, -84.25371299... \n",
"2 LINESTRING (-84.257226 30.494463, -84.257211 3... \n",
"3 LINESTRING (-84.25658199999999 30.495401, -84.... \n",
"4 LINESTRING (-84.26093299999999 30.494634, -84.... \n",
"\n",
"[5 rows x 32 columns]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"leon.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# initial demonstration that this process works"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"weights = dict()\n",
"for i,geometry in enumerate(leon.geometry):\n",
" matches = leon.geometry.touches(geometry).values\n",
" weights.update({i:matches.nonzero()[0].tolist()})"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: [21, 101, 107],\n",
" 1: [34, 81, 86, 102],\n",
" 2: [26, 42, 48, 119],\n",
" 3: [25, 119, 120],\n",
" 4: [71, 138, 139, 140],\n",
" 5: [40, 53, 83, 137, 141],\n",
" 6: [29, 30, 45, 71, 86],\n",
" 7: [56, 88, 91, 110, 143, 145],\n",
" 8: [21, 85, 124],\n",
" 9: [52, 77, 127],\n",
" 10: [53, 54, 97, 134],\n",
" 11: [12, 56, 113, 129],\n",
" 12: [11, 89, 90, 113],\n",
" 13: [32, 33, 34],\n",
" 14: [37, 38, 115, 148],\n",
" 15: [60, 93, 148],\n",
" 16: [29, 37, 46, 142],\n",
" 17: [18, 19, 65, 98, 99],\n",
" 18: [17, 27, 65, 98],\n",
" 19: [17, 99],\n",
" 20: [44, 79, 84, 101],\n",
" 21: [0, 8],\n",
" 22: [23, 69, 83, 84, 94, 137],\n",
" 23: [22, 27, 83, 84, 104, 139],\n",
" 24: [42, 48, 70],\n",
" 25: [3, 66],\n",
" 26: [2, 100, 117, 119],\n",
" 27: [18, 23, 104, 139],\n",
" 28: [113, 122, 123, 129, 143],\n",
" 29: [6, 16, 45, 46, 71, 142],\n",
" 30: [6, 47, 72, 86],\n",
" 31: [106, 108, 121],\n",
" 32: [13, 33, 43, 121],\n",
" 33: [13, 32, 87],\n",
" 34: [1, 13, 102],\n",
" 35: [73, 108],\n",
" 36: [59, 76, 91, 92],\n",
" 37: [14, 16],\n",
" 38: [14, 115, 148],\n",
" 39: [114],\n",
" 40: [5, 63, 83, 94, 133, 137],\n",
" 41: [64, 135, 150],\n",
" 42: [2, 24, 48],\n",
" 43: [32, 120, 121],\n",
" 44: [20, 79, 117],\n",
" 45: [6, 29, 60, 71],\n",
" 46: [16, 29, 125, 142],\n",
" 47: [30, 72, 81, 102],\n",
" 48: [2, 24, 42, 70],\n",
" 49: [126, 130],\n",
" 50: [93, 109],\n",
" 51: [54, 64, 127, 144, 145],\n",
" 52: [9, 75, 77, 144],\n",
" 53: [5, 10, 134, 141],\n",
" 54: [10, 51, 64, 97, 127],\n",
" 55: [57, 75, 110, 128],\n",
" 56: [7, 11, 91, 129, 143],\n",
" 57: [55, 75, 77, 111],\n",
" 58: [74, 96, 111, 128],\n",
" 59: [36, 76, 78, 146],\n",
" 60: [15, 45, 93, 148],\n",
" 61: [67, 109],\n",
" 62: [131, 132, 133, 149],\n",
" 63: [40, 94, 133],\n",
" 64: [41, 51, 54, 127, 135],\n",
" 65: [17, 18, 98],\n",
" 66: [25, 87],\n",
" 67: [61, 149],\n",
" 68: [80],\n",
" 69: [22, 94, 105, 132, 137],\n",
" 70: [24, 48, 100],\n",
" 71: [4, 6, 29, 45, 138],\n",
" 72: [30, 47, 82, 103],\n",
" 73: [35, 108],\n",
" 74: [58, 92, 112, 116, 128],\n",
" 75: [52, 55, 57, 144],\n",
" 76: [36, 59, 90],\n",
" 77: [9, 52, 57, 111],\n",
" 78: [59, 95, 146, 147],\n",
" 79: [20, 44, 117],\n",
" 80: [68],\n",
" 81: [1, 47, 86, 102],\n",
" 82: [72, 103, 136, 142],\n",
" 83: [5, 22, 23, 40, 84, 137],\n",
" 84: [20, 22, 23, 83, 101],\n",
" 85: [8, 107, 124],\n",
" 86: [1, 6, 30, 81],\n",
" 87: [33, 66],\n",
" 88: [7, 110, 122, 141, 145],\n",
" 89: [12, 90, 123, 124],\n",
" 90: [12, 76, 89],\n",
" 91: [7, 36, 56, 92, 143],\n",
" 92: [36, 74, 91, 112, 116],\n",
" 93: [15, 50, 60, 148],\n",
" 94: [22, 40, 63, 69, 133, 137],\n",
" 95: [78, 96, 116, 147],\n",
" 96: [58, 95, 111, 116],\n",
" 97: [10, 54, 135, 150],\n",
" 98: [17, 18, 65],\n",
" 99: [17, 19],\n",
" 100: [26, 70, 117],\n",
" 101: [0, 20, 84, 107],\n",
" 102: [1, 34, 47, 81],\n",
" 103: [72, 82, 130],\n",
" 104: [23, 27, 105, 118, 139],\n",
" 105: [69, 104, 118, 132],\n",
" 106: [31, 121, 138],\n",
" 107: [0, 85, 101],\n",
" 108: [31, 35, 73],\n",
" 109: [50, 61],\n",
" 110: [7, 55, 88, 128, 145],\n",
" 111: [57, 58, 77, 96],\n",
" 112: [74, 92, 116, 146, 147],\n",
" 113: [11, 12, 28, 123, 129],\n",
" 114: [39, 125],\n",
" 115: [14, 38, 148],\n",
" 116: [74, 92, 95, 96, 112],\n",
" 117: [26, 44, 79, 100],\n",
" 118: [104, 105],\n",
" 119: [2, 3, 26, 120],\n",
" 120: [3, 43, 119],\n",
" 121: [31, 32, 43, 106],\n",
" 122: [28, 88, 141, 143],\n",
" 123: [28, 89, 113, 124, 129],\n",
" 124: [8, 85, 89, 123],\n",
" 125: [46, 114],\n",
" 126: [49, 130, 136],\n",
" 127: [9, 51, 54, 64],\n",
" 128: [55, 58, 74, 110],\n",
" 129: [11, 28, 56, 113, 123],\n",
" 130: [49, 103, 126],\n",
" 131: [62, 133],\n",
" 132: [62, 69, 105, 149],\n",
" 133: [40, 62, 63, 94, 131],\n",
" 134: [10, 53],\n",
" 135: [41, 64, 97, 150],\n",
" 136: [82, 126, 142],\n",
" 137: [5, 22, 40, 69, 83, 94],\n",
" 138: [4, 71, 106],\n",
" 139: [4, 23, 27, 104, 140],\n",
" 140: [4, 139],\n",
" 141: [5, 53, 88, 122],\n",
" 142: [16, 29, 46, 82, 136],\n",
" 143: [7, 28, 56, 91, 122],\n",
" 144: [51, 52, 75, 145],\n",
" 145: [7, 51, 88, 110, 144],\n",
" 146: [59, 78, 112, 147],\n",
" 147: [78, 95, 112, 146],\n",
" 148: [14, 15, 38, 60, 93, 115],\n",
" 149: [62, 67, 132],\n",
" 150: [41, 97, 135]}"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"weights"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"W = ps.W(weights)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['STATEFP', 'COUNTYFP', 'TLID', 'TFIDL', 'TFIDR', 'MTFCC', 'FULLNAME',\n",
" 'SMID', 'LFROMADD', 'LTOADD', 'RFROMADD', 'RTOADD', 'ZIPL', 'ZIPR',\n",
" 'FEATCAT', 'HYDROFLG', 'RAILFLG', 'ROADFLG', 'OLFFLG', 'PASSFLG',\n",
" 'DIVROAD', 'EXTTYP', 'TTYP', 'DECKEDROAD', 'ARTPATH', 'PERSIST',\n",
" 'GCSEFLG', 'OFFSETL', 'OFFSETR', 'TNIDF', 'TNIDT', 'geometry'],\n",
" dtype='object')"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"leon.columns"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2.48558975e+08, 3.31571388e+08, 3.31437081e+08, 2.48592268e+08,\n",
" 3.31473558e+08, 4.14294987e+08, 4.14377980e+08, 4.97117705e+08,\n",
" 2.48559203e+08, 2.48558872e+08, 3.31411744e+08, 3.31411871e+08,\n",
" 3.31424205e+08, 2.48613061e+08, 3.31417173e+08, 7.99671602e+08,\n",
" 8.82543339e+08, 4.14373497e+08, 3.31479585e+08, 1.65784357e+08,\n",
" 3.31423871e+08, 1.65706131e+08, 1.04988822e+09, 4.97142278e+08,\n",
" 2.48590528e+08, 1.65748088e+08, 3.31411572e+08, 8.84207044e+08,\n",
" 4.14264798e+08, 1.04829587e+09, 3.31492136e+08, 2.48622935e+08,\n",
" 3.31460571e+08, 2.48584225e+08, 2.48637278e+08, 1.65751843e+08,\n",
" 3.31411914e+08, 1.65734069e+08, 2.48568127e+08, 8.28640320e+07,\n",
" 4.97113895e+08, 2.48589578e+08, 2.48589256e+08, 2.48590878e+08,\n",
" 2.48570905e+08, 3.31457301e+08, 8.82537340e+08, 3.31533835e+08,\n",
" 3.31473996e+08, 1.65784364e+08, 7.16818737e+08, 4.14264750e+08,\n",
" 3.31411835e+08, 3.31411748e+08, 4.14264725e+08, 3.31411849e+08,\n",
" 4.14264819e+08, 3.31411867e+08, 3.31411905e+08, 3.31411932e+08,\n",
" 8.82537388e+08, 1.65736036e+08, 3.31400326e+08, 2.48585385e+08,\n",
" 4.14261022e+08, 2.48596119e+08, 1.65748090e+08, 1.65698109e+08,\n",
" 8.28530830e+07, 4.14264471e+08, 2.48589249e+08, 4.14329747e+08,\n",
" 3.31505846e+08, 1.65756052e+08, 4.14264870e+08, 3.31411840e+08,\n",
" 2.48571145e+08, 3.31411852e+08, 3.31411936e+08, 2.48558626e+08,\n",
" 8.28530710e+07, 3.31537258e+08, 8.82627629e+08, 1.04991863e+09,\n",
" 9.67035193e+08, 2.48559201e+08, 3.31570821e+08, 1.65748098e+08,\n",
" 4.14264755e+08, 3.31424206e+08, 2.48559047e+08, 4.14264803e+08,\n",
" 4.14264859e+08, 8.82530410e+08, 4.97144089e+08, 3.31411929e+08,\n",
" 3.31411911e+08, 3.31442503e+08, 2.48626746e+08, 1.65780889e+08,\n",
" 2.48565024e+08, 3.31411940e+08, 3.31527690e+08, 2.48643369e+08,\n",
" 9.67059876e+08, 3.31411342e+08, 2.48589456e+08, 2.48558976e+08,\n",
" 2.48603429e+08, 7.16818737e+08, 4.14264790e+08, 3.31411882e+08,\n",
" 4.14264883e+08, 4.14264878e+08, 7.16820403e+08, 2.48568126e+08,\n",
" 4.14264892e+08, 3.31423845e+08, 1.65705676e+08, 3.31445161e+08,\n",
" 2.48592268e+08, 3.31459160e+08, 3.31411798e+08, 4.14265043e+08,\n",
" 3.31412175e+08, 7.16831587e+08, 7.99849927e+08, 3.31411798e+08,\n",
" 3.31411863e+08, 4.14264839e+08, 2.48637225e+08, 1.65698276e+08,\n",
" 3.31403779e+08, 4.14287369e+08, 1.65705869e+08, 3.31438816e+08,\n",
" 2.48646854e+08, 4.97147822e+08, 2.48611198e+08, 9.67084795e+08,\n",
" 1.65755493e+08, 3.31411762e+08, 1.51665356e+09, 4.14264778e+08,\n",
" 3.31411829e+08, 4.14264770e+08, 3.31411938e+08, 3.31411928e+08,\n",
" 1.04824949e+09, 2.48588871e+08, 2.48555112e+08])"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ps.lag_spatial(W, leon.TLID.values)"
]
},
{
"cell_type": "code",
"execution_count": 106,
"metadata": {},
"outputs": [],
"source": [
"def pysal_weight_from_linestrings(geodataframe):\n",
" \"\"\"\n",
" constructs a pysal *edge* adjacency matrix from a geodataframe.\n",
" \n",
" Arguments\n",
" ---------\n",
" geodataframe : geopandas.GeoDataFrame\n",
" a geopandas dataframe with linestring geometries\n",
" \n",
" Returns\n",
" -------\n",
" a pysal weights object\n",
" \"\"\"\n",
" import warnings\n",
" try:\n",
" geodataframe.sindex\n",
" except AttributeError:\n",
" warnings.warn(\"Geodataframe has no spatial index, so computation may be slower than expected...\")\n",
" weights = dict()\n",
" for i,geometry in enumerate(geodataframe.geometry):\n",
" matches = geodataframe.geometry.touches(geometry).values\n",
" (nonzeros, ) = matches.nonzero()\n",
" weights.update({i:nonzeros.tolist()})\n",
" try:\n",
" import pysal as ps\n",
" except ImportError:\n",
" warnings.warn('PySAL not installed, returning the raw weights matrix')\n",
" N_observations = geodataframe.shape[0]\n",
" matrix = np.zeros((N_observations, N_observations))\n",
" for k,v in weights.items():\n",
" matrix[k,np.asarray(v)] = 1\n",
" return matrix\n",
" return ps.W(neighbors=weights)"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7fcd4f841e80>"
]
},
"execution_count": 105,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fcd4fad36a0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pysal_W = pysal_weight_from_linestrings(leon)\n",
"pysal_matrix = pysal_W.full()[0]\n",
"plt.imshow(pysal_matrix)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.6 (analysis)",
"language": "python",
"name": "ana"
},
"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