mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-23 14:57:56 -05:00
557 lines
1.1 MiB
Text
557 lines
1.1 MiB
Text
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"The python-awips package provides access to the entire AWIPS Maps Database for use in Python GIS applications. Map objects are returned as <a href=\"http://toblerity.org/shapely/manual.html\">Shapely</a> geometries (*Polygon*, *Point*, *MultiLineString*, etc.) and can be easily plotted by Matplotlib, Cartopy, MetPy, and other packages. \n",
|
||
|
"\n",
|
||
|
"Each map database table has a geometry field called `the_geom`, which can be used to spatially select map resources for any column of type geometry,\n",
|
||
|
"\n",
|
||
|
"## Notes\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"* This notebook requires: **python-awips, numpy, matplotplib, cartopy, shapely**\n",
|
||
|
"* Use datatype **maps** and **addIdentifier('table', <postgres maps schema>)** to define the map table:\n",
|
||
|
" DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
|
||
|
" request = DataAccessLayer.newDataRequest('maps')\n",
|
||
|
" request.addIdentifier('table', 'mapdata.county')\n",
|
||
|
"* Use **request.setLocationNames()** and **request.addIdentifier()** to spatially filter a map resource. In the example below, WFO ID **BOU** (Boulder, Colorado) is used to query counties within the BOU county watch area (CWA) \n",
|
||
|
" \n",
|
||
|
" request.addIdentifier('geomField', 'the_geom')\n",
|
||
|
" request.addIdentifier('inLocation', 'true')\n",
|
||
|
" request.addIdentifier('locationField', 'cwa')\n",
|
||
|
" request.setLocationNames('BOU')\n",
|
||
|
" request.addIdentifier('cwa', 'BOU')\n",
|
||
|
" \n",
|
||
|
"See the <a href=\"http://unidata.github.io/awips2/python/maps-database/#mapdatacwa\">Maps Database Reference Page</a> for available database tables, column names, and types. \n",
|
||
|
" \n",
|
||
|
" > Note the geometry definition of `the_geom` for each data type, which can be **Point**, **MultiPolygon**, or **MultiLineString**.\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Setup"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 11,
|
||
|
"metadata": {
|
||
|
"collapsed": true
|
||
|
},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"from __future__ import print_function\n",
|
||
|
"from awips.dataaccess import DataAccessLayer\n",
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"import cartopy.crs as ccrs\n",
|
||
|
"import numpy as np\n",
|
||
|
"from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER\n",
|
||
|
"from cartopy.feature import ShapelyFeature,NaturalEarthFeature\n",
|
||
|
"from shapely.geometry import Polygon\n",
|
||
|
"from shapely.ops import cascaded_union\n",
|
||
|
"\n",
|
||
|
"# Standard map plot\n",
|
||
|
"def make_map(bbox, projection=ccrs.PlateCarree()):\n",
|
||
|
" fig, ax = plt.subplots(figsize=(12,12),\n",
|
||
|
" subplot_kw=dict(projection=projection))\n",
|
||
|
" ax.set_extent(bbox)\n",
|
||
|
" ax.coastlines(resolution='50m')\n",
|
||
|
" gl = ax.gridlines(draw_labels=True)\n",
|
||
|
" gl.xlabels_top = gl.ylabels_right = False\n",
|
||
|
" gl.xformatter = LONGITUDE_FORMATTER\n",
|
||
|
" gl.yformatter = LATITUDE_FORMATTER\n",
|
||
|
" return fig, ax\n",
|
||
|
"\n",
|
||
|
"# Server, Data Request Type, and Database Table\n",
|
||
|
"DataAccessLayer.changeEDEXHost(\"edex-cloud.unidata.ucar.edu\")\n",
|
||
|
"request = DataAccessLayer.newDataRequest('maps')\n",
|
||
|
"request.addIdentifier('table', 'mapdata.county')"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Request County Boundaries for a WFO\n",
|
||
|
"\n",
|
||
|
"* Use **request.setParameters()** to define fields to be returned by the request."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 12,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 25 county MultiPolygons\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\nWct7IB50Yq+P6Ou49dL
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42090>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# Define a WFO ID for location\n",
|
||
|
"# tie this ID to the mapdata.county column \"cwa\" for filtering\n",
|
||
|
"request.setLocationNames('BOU')\n",
|
||
|
"request.addIdentifier('cwa', 'BOU')\n",
|
||
|
"\n",
|
||
|
"# enable location filtering (inLocation)\n",
|
||
|
"# locationField is tied to the above cwa definition (BOU)\n",
|
||
|
"request.addIdentifier('geomField', 'the_geom')\n",
|
||
|
"request.addIdentifier('inLocation', 'true')\n",
|
||
|
"request.addIdentifier('locationField', 'cwa')\n",
|
||
|
"\n",
|
||
|
"# This is essentially the same as \"'\"select count(*) from mapdata.cwa where cwa='BOU';\" (=1)\n",
|
||
|
"\n",
|
||
|
"# Get response and create dict of county geometries\n",
|
||
|
"response = DataAccessLayer.getGeometryData(request, [])\n",
|
||
|
"counties = np.array([])\n",
|
||
|
"for ob in response:\n",
|
||
|
" counties = np.append(counties,ob.getGeometry())\n",
|
||
|
"print(\"Using \" + str(len(counties)) + \" county MultiPolygons\")\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"%matplotlib inline\n",
|
||
|
"# All WFO counties merged to a single Polygon\n",
|
||
|
"merged_counties = cascaded_union(counties)\n",
|
||
|
"envelope = merged_counties.buffer(2)\n",
|
||
|
"boundaries=[merged_counties]\n",
|
||
|
"\n",
|
||
|
"# Get bounds of this merged Polygon to use as buffered map extent\n",
|
||
|
"bounds = merged_counties.bounds\n",
|
||
|
"bbox=[bounds[0]-1,bounds[2]+1,bounds[1]-1.5,bounds[3]+1.5]\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"fig, ax = make_map(bbox=bbox)\n",
|
||
|
"# Plot political/state boundaries handled by Cartopy\n",
|
||
|
"political_boundaries = NaturalEarthFeature(category='cultural',\n",
|
||
|
" name='admin_0_boundary_lines_land',\n",
|
||
|
" scale='50m', facecolor='none')\n",
|
||
|
"states = NaturalEarthFeature(category='cultural',\n",
|
||
|
" name='admin_1_states_provinces_lines',\n",
|
||
|
" scale='50m', facecolor='none')\n",
|
||
|
"ax.add_feature(political_boundaries, linestyle='-', edgecolor='black')\n",
|
||
|
"ax.add_feature(states, linestyle='-', edgecolor='black',linewidth=2)\n",
|
||
|
"\n",
|
||
|
"# Plot CWA counties\n",
|
||
|
"for i, geom in enumerate(counties):\n",
|
||
|
" cbounds = Polygon(geom)\n",
|
||
|
" intersection = cbounds.intersection\n",
|
||
|
" geoms = (intersection(geom)\n",
|
||
|
" for geom in counties\n",
|
||
|
" if cbounds.intersects(geom))\n",
|
||
|
" shape_feature = ShapelyFeature(geoms,ccrs.PlateCarree(), \n",
|
||
|
" facecolor='none', linestyle=\"-\",edgecolor='#86989B')\n",
|
||
|
" ax.add_feature(shape_feature)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Create a merged CWA with cascaded_union"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 13,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\n6a1939bfVqKGxD1r8Ay
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42090>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 13,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# Plot CWA envelope\n",
|
||
|
"for i, geom in enumerate(boundaries):\n",
|
||
|
" gbounds = Polygon(geom)\n",
|
||
|
" intersection = gbounds.intersection\n",
|
||
|
" geoms = (intersection(geom)\n",
|
||
|
" for geom in boundaries\n",
|
||
|
" if gbounds.intersects(geom))\n",
|
||
|
" shape_feature = ShapelyFeature(geoms,ccrs.PlateCarree(), \n",
|
||
|
" facecolor='none', linestyle=\"-\",linewidth=3.,edgecolor='#cc5000')\n",
|
||
|
" ax.add_feature(shape_feature)\n",
|
||
|
"\n",
|
||
|
"fig"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## WFO boundary spatial filter for interstates\n",
|
||
|
"\n",
|
||
|
"Using the previously-defined **envelope=merged_counties.buffer(2)** in **newDataRequest()** to request geometries which fall inside the buffered boundary. "
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 223 interstate MultiLineStrings\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsEAAAI7CAYAAAANuEYLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XecVPW9//HXOTOzvQLL0qt0FRQBxQKoqEGxmxhjYmJy\n9aaYmHiv0dyYaG4So9HElJ83JiaWaDQ27F1BUVAsgEhVel0WttfZmXN+f3xnG3X7mTPzfj4ew+7O\nTvkMMzvznu98v5+v5bouIiIiIiLJxPa6ABERERGRnqYQLCIiIiJJRyFYRERERJKOQrCIiIiIJB2F\nYBERERFJOgrBIiIiIpJ0FIJFREREJOkoBIuIiIhI0lEIFhEREZGkE+yJKxk2bJi7efPmnrgqERER\nEUlem13XHdaWE1o9sW2yZVmutmfuWgsWLGDmzJlelyHovvDMYzkw9zNILwR0P3jloosu4qmnnuLx\nxx/n4osv1v0QJ3Q/xAfdDz3Psixc17XaclpNhxARf+o7A7bN87qKpGdZ5rVGAx0i4jcKwSLiTwUn\nQPUmr6tIegrBIuJXCsEi4j+uA9uegewxXleS9BSCRcSvFIJFxH/qS6B8FYy4wutKkp5CsIj4lUKw\niPhPKAucejMiLJ5SCBYRv1IIFhH/2fU69J4Kdo90eZRDUAgWEb9SCBYR/9n8GAy51OsqBIVgEfEv\nhWAR8Z+yT6DPNK+rEJpDsIiI3ygEi4i/OBGoXAu5472uRFrQSLCI+I1CsIj4S9V6SB8AwUyvKxE0\nHUJE/EshWET8pWYbZAzxugqJUQgWEb9SCBYRf7FsQIErXigEi4hfKQSLiL/YqRCt97oKiVEIFhG/\nUggWEX+xU8AJe12FxCgEi4hfKQSLiL9YFpoOET8UgkXErxSCRcRfomEzGixxQSFYRPxKIVhE/CVa\nC4F0r6uQGIVgEfErhWAR8Rc3AnbQ6yokRiFYRPxKIVhE/MVpACvkdRUSoxAsIn6lECwi/lL5GWQO\n9roKiVEIFhG/UggWEX/JOwqK5oMT8boSQSFYRPxLIVhE/KXwVEjtA1ue8LoSQSFYRPxLIVhE/MWy\n4Mifwae/ANfxupqkpxAsIn6lECwi/tP/TAhmwZbHva4k6TWGYBERv1EIFhH/sSwYdhm8f5XZPEM8\np5FgEfEbhWAR8aeR3wQ3DCtu9rqSpKbpECLiVwrBIuJPoWw4eR5sfsT0DhZPKASLiF8pBIuIfw04\nCzKHwaZHvK4kaSkEi4hfKQSLiL9NuBHW3uV1FUlLIVhE/EohWET8re8MKF/pdRVJSyFYRPxKIVhE\n/C2QCmn9wKn3upKkpBAsIn6lECwi/pc9EqIKwV5QCBYRv1IIFhH/yxwKjvoFe0EhWET8SiFYRPwv\nXApWwOsqkpJ2jBMRv1IIFhH/a6jwuoKkp5FgEfEbhWAR8b8JP4WabZoX7AFNhxARv1IIFhH/63cq\n2CHY/ZbXlSQdhWAR8SuFYBFJDMEsKF7kdRVJRyFYRPxKIVhEEkNqH/jsbihf5XUlSUUhWET8SiFY\nRBJDIA2O/R28cSqUfuJ1NUlDIVhE/EohWEQSx/DLYfyPYdWtXleSNBSCRcSvFIJFJLFkj4ZwuddV\nJA2FYBHxK4VgEUksVhDciNdVJA1tliEiftXmEGxZVsCyrKWWZT0f+/lhy7LWWpb1qWVZ/7AsK9R9\nZYqItJFlg+t4XUXS0UiwiPhNe0aCfwCsbvHzw8BY4CggHfhWF9YlItIxVgDcqNdVJA1NhxARv2pT\nCLYsaxBwNnBv43Gu677oxgBLgEHdU6KISDukFUDNFlAo6xEKwSLiV20dCb4LuB7Y7zPG2DSIrwIv\nd2FdIiIdk3skYEPxu15XkhQUgkXErw4bgi3LOgfY7bruRwc5yd3A267rLuzSykREOsKyYMBZUPqx\n15UkBYVgEfEr63BPXJZl3YoZ6Y0AaUAO8JTrupdblvVz4BjgQtc9+EoUy7Lc+fPnd13VQlVVFVlZ\nWV6XIei+iBet7ofanYAD6QM9rSkZ7Ny5kx07dtC/f38GDBigv4c4ofshPuh+6HmzZs3Cdd02ta05\nbAhudWLLmgn8l+u651iW9S3gSuA013VrD3M+V6MEXWvBggXMnDnT6zIE3RfxotX9sOc9eP8/4OwV\nntaUDG655RZuvvlmbrrpJn7xi1/o7yFO6H6ID7ofep5lWW0OwZ3pE/wXoBBYbFnWMsuyftaJyxIR\n6Tp5E6FynRbH9QBNhxARvwq258Su6y4AFsS+b9d5RUR6TDAdQtlQVwTp/byuJqEpBIuIX2nHOBFJ\nTFmjoGKN11UkPIVgEfErhWARSUwDzoItT3hdRcJTCBYRv1IIFpHENPwK2PIoNFR4XUlCUwgWEb9S\nCBaRxJQ1DIZeBm+cDnXFXleTsBpDsIiI3ygEi0jimvwH6Hc6vDodtjwJTtTrihKWRoJFxG8UgkUk\ncVkWTPo1HPs7WH0HvDBe2yl3MU2HEBG/UggWkcQ3aC6csQiOuR0WXgif3eN1RQlDIVhE/Eq9fkUk\nOVgWDDoPcifAG6dC1gjoP9vrqnxPIVhE/EojwSKSXLKPgKP/Fz65CSLVXlfjewrBIuJXCsEiknyG\nXW5GhF+ZCuWrvK7G1xSCRcSvFIJFJPnYAZh2L4y9Dl6fARse8Loi31IIFhG/UggWkeRkWTDySjht\nPqy6Dd77hqZHdIBCsIj4lUKwiCS3vCPhzCXgOvDycVC+xuuKfEUhWET8SiFYRCSUBSc8AOP+C96Y\nBSUfe12RbygEi4hfqUWaiEijkd+ElHyYfxacvgByx3tdUdxTCBYRv9JI8KHUFcPud6Fyfecvq7YI\nKj8HvVCIxLfBF5oR4VW3eV2JLygEi4hfaSS4UaQWSj6EPYvNoWoTlC0DLMCF7NHQ/0wYMAf6zoBg\nujmfE4H6vVC/G4rmw9Z5MOrb0Od4CKRDfTGsuQu2PgHBTLPwJv9YSO8HKb0htZf5OnCOad4vIt7r\nMx22PeN1Fb6gECwifpWcIdh1oXoT7HmvOfSWrzIfffaZDkO+BHlHxYJqL7NgpnwF7HgJVv7SbLua\nkg+RGohUme/TCiD/GOg9DTb8A5ZeB9FaCGbD0C/D3M8gtTfU7oTST0xort9rDmWfwKe3mHAdyIDM\nIeCEIVwC2aMg90jT0zRzCFgavBfpVuFSWHOHeQ6Qw1IIFhG/So4QHKmF0o+bQ2/xu+b4PieYEdtj\nfw+9JjeP7u7LCkD+JHOYcCNE68xUiWCGCcDtCabp/c1hX0f+j6kvWgvVm80octZIqFwHRX+Csk+h\nodwE9dwjoe4M2PmaWdme1s+0exKRjnFdWP932P6ceY4Y+iWYdLvXVfmCQrCI+FVihWDXgYYKqN0F\npUubQ2/5SsgdZ0ZpB10Ax/wWMod1PDgG0iBzcJeWTuZQcziUcCmUrTS3pyQMK39tRqhdF/InQt+Z\nUHgq9JkGdqhr6+usxtH30qVmyohTD+NvgF7Hel2ZCFSshuU/gSl3w+S7IGu41xX5hqU34CLiU/4J\nwQ2VsHeJmbdbsw3qS8x823CZmTYQLjEBOJgJqQWQd7QZ6T32Duh1nBm19buUfOh7kjlsXwAz55tw\nWVdkWjrtng8ffd8swMseZW5zIMOMcAcaD2lgp5nj7BQzqh2pAafOjJg7dWZkud9sKJxlWke1Rc02\nKF1upnzkTzJzn8s+hfJPzZuR3QvM/Olek6H/GYAFb50D42+EMdd043+aSBukDzCfwgy+UFOOOkgj\nwSLiN/EZghtHDYsXwZ7YofIzE656TYWsI6B3bxPy0geaebupvSCUC3Z83qRuY1lm7vLAOeYA5g1C\n1Qbzoh6pMV+jjV/rY9/XmXnHoWxIKzThuDEkV2+GtXfBu5eay84cDlnDIGOoCc9O2ARap8EE8N0L\nzCh1r8lQtxvKVpj7pnEuc9+T4cibTDBvOWo0cC68egLs/cC0pup7iqZ1iDdS8kz4DZeZ5xJpM02H\nEBG/io/EGA1DyUdQ/E4
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42790>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 4,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request = DataAccessLayer.newDataRequest('maps', envelope=envelope)\n",
|
||
|
"request.addIdentifier('table', 'mapdata.interstate')\n",
|
||
|
"request.addIdentifier('geomField', 'the_geom')\n",
|
||
|
"request.addIdentifier('locationField', 'hwy_type')\n",
|
||
|
"request.addIdentifier('hwy_type', 'I') # I (interstate), U (US highway), or S (state highway)\n",
|
||
|
"request.setParameters('name')\n",
|
||
|
"interstates = DataAccessLayer.getGeometryData(request, [])\n",
|
||
|
"print(\"Using \" + str(len(interstates)) + \" interstate MultiLineStrings\")\n",
|
||
|
"\n",
|
||
|
"# Plot interstates\n",
|
||
|
"for ob in interstates:\n",
|
||
|
" shape_feature = ShapelyFeature(ob.getGeometry(),ccrs.PlateCarree(), \n",
|
||
|
" facecolor='none', linestyle=\"-\",edgecolor='orange')\n",
|
||
|
" ax.add_feature(shape_feature)\n",
|
||
|
"fig"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"> Road type from `select distinct(hwy_type) from mapdata.interstate;`\n",
|
||
|
">\n",
|
||
|
"> I - Interstates\n",
|
||
|
"> U - US Highways\n",
|
||
|
"> S - State Highways\n",
|
||
|
" \n",
|
||
|
" \n",
|
||
|
"## Nearby cities\n",
|
||
|
"\n",
|
||
|
"Request the city table and filter by population and progressive disclosure level:\n",
|
||
|
"\n",
|
||
|
"**Warning**: the `prog_disc` field is not entirely understood and values appear to change significantly depending on WFO site. "
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 5,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Found 1201 city Points\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request = DataAccessLayer.newDataRequest('maps', envelope=envelope)\n",
|
||
|
"request.addIdentifier('table', 'mapdata.city')\n",
|
||
|
"request.addIdentifier('geomField', 'the_geom')\n",
|
||
|
"request.setParameters('name','population','prog_disc')\n",
|
||
|
"cities = DataAccessLayer.getGeometryData(request, [])\n",
|
||
|
"print(\"Found \" + str(len(cities)) + \" city Points\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 6,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 57 city Points\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\nHaJs3Kqb15YtW275mBt
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42790>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 6,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"citylist = []\n",
|
||
|
"cityname = []\n",
|
||
|
"# For BOU, progressive disclosure values above 50 and pop above 5000 looks good\n",
|
||
|
"for ob in cities:\n",
|
||
|
" if ((ob.getNumber(\"prog_disc\")>50) and int(ob.getString(\"population\")) > 5000):\n",
|
||
|
" citylist.append(ob.getGeometry())\n",
|
||
|
" cityname.append(ob.getString(\"name\"))\n",
|
||
|
"print(\"Using \" + str(len(cityname)) + \" city Points\")\n",
|
||
|
"\n",
|
||
|
"# Plot city markers\n",
|
||
|
"ax.scatter([point.x for point in citylist],\n",
|
||
|
" [point.y for point in citylist],\n",
|
||
|
" transform=ccrs.Geodetic(),marker=\"+\",facecolor='black')\n",
|
||
|
"# Plot city names\n",
|
||
|
"for i, txt in enumerate(cityname):\n",
|
||
|
" ax.annotate(txt, (citylist[i].x,citylist[i].y),\n",
|
||
|
" xytext=(3,3), textcoords=\"offset points\")\n",
|
||
|
"\n",
|
||
|
"fig"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Lakes"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 7,
|
||
|
"metadata": {
|
||
|
"scrolled": true
|
||
|
},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 208 lake MultiPolygons\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\ntSrff5lVxYpKgOrGl11
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42790>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 7,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request = DataAccessLayer.newDataRequest('maps', envelope=envelope)\n",
|
||
|
"request.addIdentifier('table', 'mapdata.lake')\n",
|
||
|
"request.addIdentifier('geomField', 'the_geom')\n",
|
||
|
"request.setParameters('name')\n",
|
||
|
"\n",
|
||
|
"# Get lake geometries\n",
|
||
|
"response = DataAccessLayer.getGeometryData(request, [])\n",
|
||
|
"lakes = np.array([])\n",
|
||
|
"for ob in response:\n",
|
||
|
" lakes = np.append(lakes,ob.getGeometry())\n",
|
||
|
"print(\"Using \" + str(len(lakes)) + \" lake MultiPolygons\")\n",
|
||
|
"\n",
|
||
|
"# Plot lakes\n",
|
||
|
"for i, geom in enumerate(lakes):\n",
|
||
|
" cbounds = Polygon(geom)\n",
|
||
|
" intersection = cbounds.intersection\n",
|
||
|
" geoms = (intersection(geom)\n",
|
||
|
" for geom in lakes\n",
|
||
|
" if cbounds.intersects(geom))\n",
|
||
|
" shape_feature = ShapelyFeature(geoms,ccrs.PlateCarree(), \n",
|
||
|
" facecolor='blue', linestyle=\"-\",edgecolor='#20B2AA')\n",
|
||
|
" ax.add_feature(shape_feature)\n",
|
||
|
"fig\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Major Rivers"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 8,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 758 river MultiLineStrings\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\nikLLaY2xY4P9/Pk8ZQS
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42790>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 8,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"request = DataAccessLayer.newDataRequest('maps', envelope=envelope)\n",
|
||
|
"request.addIdentifier('table', 'mapdata.majorrivers')\n",
|
||
|
"request.addIdentifier('geomField', 'the_geom')\n",
|
||
|
"request.setParameters('pname')\n",
|
||
|
"rivers = DataAccessLayer.getGeometryData(request, [])\n",
|
||
|
"print(\"Using \" + str(len(rivers)) + \" river MultiLineStrings\")\n",
|
||
|
"\n",
|
||
|
"# Plot rivers\n",
|
||
|
"for ob in rivers:\n",
|
||
|
" shape_feature = ShapelyFeature(ob.getGeometry(),ccrs.PlateCarree(), \n",
|
||
|
" facecolor='none', linestyle=\":\",edgecolor='#20B2AA')\n",
|
||
|
" ax.add_feature(shape_feature)\n",
|
||
|
"fig"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## Topography\n",
|
||
|
"\n",
|
||
|
"Spatial envelopes are required for topo requests, which can become slow to download and render for large (CONUS) maps."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 9,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"[<awips.dataaccess.PyGridData.PyGridData object at 0x1174adf50>]\n",
|
||
|
"Number of grid records: 1\n",
|
||
|
"Sample grid data shape:\n",
|
||
|
"(778, 1058)\n",
|
||
|
"\n",
|
||
|
"Sample grid data:\n",
|
||
|
"[[ 1694. 1693. 1688. ..., 757. 761. 762.]\n",
|
||
|
" [ 1701. 1701. 1701. ..., 758. 760. 762.]\n",
|
||
|
" [ 1703. 1703. 1703. ..., 760. 761. 762.]\n",
|
||
|
" ..., \n",
|
||
|
" [ 1767. 1741. 1706. ..., 769. 762. 768.]\n",
|
||
|
" [ 1767. 1746. 1716. ..., 775. 765. 761.]\n",
|
||
|
" [ 1781. 1753. 1730. ..., 766. 762. 759.]]\n",
|
||
|
"\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import numpy.ma as ma\n",
|
||
|
"request = DataAccessLayer.newDataRequest()\n",
|
||
|
"request.setDatatype(\"topo\")\n",
|
||
|
"request.addIdentifier(\"group\", \"/\")\n",
|
||
|
"request.addIdentifier(\"dataset\", \"full\")\n",
|
||
|
"request.setEnvelope(envelope)\n",
|
||
|
"gridData = DataAccessLayer.getGridData(request)\n",
|
||
|
"print(gridData)\n",
|
||
|
"print(\"Number of grid records: \" + str(len(gridData)))\n",
|
||
|
"print(\"Sample grid data shape:\\n\" + str(gridData[0].getRawData().shape) + \"\\n\")\n",
|
||
|
"print(\"Sample grid data:\\n\" + str(gridData[0].getRawData()) + \"\\n\")"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 10,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"623.0\n",
|
||
|
"4328.0\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwEAAAMJCAYAAABbTDp4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXm0JNlV3vs7JyIzI3K4c957q6uqqyf1PEk9qSU0gAAJ\ntMCWaD0hvLBsQBgDCxAgYGHsZT8knmUMlsAC/ACDwMyjeUIYMGCNRkJDq1sttbrVc1fVnafMjIzI\niDjn/RFxIiMjI2/dqmpQycrvn7oZ0zkRmZX5fWd/e2+htWaKKaaYYooppphiiimm+NKB/EJPYIop\npphiiimmmGKKKab4h8VUBEwxxRRTTDHFFFNMMcWXGKYiYIoppphiiimmmGKKKb7EMBUBU0wxxRRT\nTDHFFFNM8SWGqQiYYooppphiiimmmGKKLzFMRcAUU0wxxRRTTDHFFFN8iWEqAqaYYooppphiiimm\nmOJLDFMRMMUUU0wxxRRTTDHFFF9imIqAKaaYYooppphiiimm+BKD/YWewBRTGFx+xSn9zFNPf6Gn\nMcUUU0wxxRRTTPFc4imt9RVf6EkUIbTWX+g5TDEFAEIIvRvuj23vxF0AWlbzSNfZjzv89fpZnuiE\nvPm6mziIOwDMWi06cZedaIuB9tEMkFQR1Ji3F/EGNsfrdZTWfKazyc9+7vP8+xfczJO9Pa5ozDFv\nzYyMY67bi3tAQKQPsMSA/UhRk0t0lcfJ2klmrRYAO1GHBTv5+2PbOzy4v8U97Xl+7bFneeutt/HA\nwQZKHjBbtbG1wy89vMG87bJUr3LL3CzH63XWPv5p9q87xts/+Tivu+oE7370KboMsjm97uQq//jq\nBserK8xaLfYL9/6h7TWeCja4a2GZk7Xl3DPuAWALmLWaeLGHRhOhaVoNunEPT3nUZR2AptUAoJue\nl4zRRCKy96yRHpMf3xKwF21TkQJXuNhCYAtoWsv4qjvyfC2RXKsmkuv8p4ce5G/PBnzVqVm+4YoV\n5ivJ+xFpj0o6rzLE2gOgkl5HaQ/o86H3P8JLX3Ybse6D6qPCKkqlY9t1ZBonVQqiwTaaALsqUZYg\nopZd3xZO9neg9rHFLFK4xGgqokGoe8S6T00IYr1PV8VEuootXCKts7nvRV1inTxzVzZ4JtjgeHWZ\nGI0i+Z5esmfYig7YjZJntWi3sBBIMXwP5+wGcfq1rtJ/F+wWm9FBNs/89fJYCw9YTp/r+iA5fqUy\nw9ogufaq2dff5vb3Xs39r34SLauc/egD/H9zLn9+5mx2re+44Uq+avUYW/EebbvFSmV0LID1MB2j\nOr4PYCPdb+a0ER6wE3VZrjSzZxCm9ziffj+Yccyc81itzLAWHpRvH3ilc1it1tPrje83+y4WX/Oi\nl/HAJz7Jr/3Nn7Gqq9z0onsmHvvx3W3ee/pZ/vnVz8NOP6SrNWfkmLXB6P+l1WrybNYCf2TO+Xsa\nu0bJsavV+thzKD4DcxzAmj/IrrsW+KPn1RzW/JBVp8ZhWOvHh+5fda2xY1adSvb3Q3/7AW564UuS\na3nJh2W1LkbHMNtd69CxAPYGAf04ol1zeaIzoFWpcbrfoWlXmK046XVGrx/EMf/yE3/DD1/3YmYr\nztj4xXlk9zHhOEieS9l8zbOYdC+H7f+Zzz7Aet/nLTffxlx1/H156CPv46Z7Xnb4nN3yOa/3ki/X\nlYbM/t7sl/PPduEaK4c8B4ONXnJfyw1r5HURKw05Mp/8tvPFeicav36z/LlfNltBa33uG/kHxjQS\nMMUlhTLCfxj5N8fnj521Wryi7fBYfZv799a4fW6Vg7iTEeIFe4ntcJO/29nhprl5/uzpHvcsNPnZ\nRz7Nb734Xr7ufe/n1+99If/25uczJx1+8sEH+fHn13k0OMtc1abt1Ji3ZpixWjzuP0GgfCLdRQqo\nyxqR9pmTLhWZ/CAMx23xzoc/xw2zs1zbavHipWOs1OFbr59lPdqgWt2hgmTeauLIOj90a2vk3mYt\nh9NacfvCDL/1itsBeM0Viwgh+NFPPMRHtg74vSc2aDgzvPKEYD/ush8nP9hKr9MNFX0VEgwc5uwG\nPdVjJiXqc3ZC9G0EMiWVIOjHfXwENiIjWbHW+LFHX/UBWK60R+Y5Yzez9yYvBDzVwxaChlWnJobf\nhTWZEGVHNgn1KHEzAuBDW6f5pUfWOfszL+Dj932Oj9y+zy+86I5MKBwGS9SJtUeoe1REAynqKA0a\niNQuxH2knMeyaxB5iJygiCMvEQFRn0rNRtguoLHiAypyBhX7CFsgxHxyQvpbEuld4pxQkAgi7WNm\nq3RA8vPhEKpExLSshLx/zn+SitghRrMfd9mNe9Slm11rN+pm970Xd1m0WuxGXRwpmLWa7MddmlaD\nvahHy2qgdCJA2ynhz4uBMhjyD4wQ9xGiLB36szfT2vog9RNfz+Ox4s/PnKX34cugomjctcZN8zMI\nEYO20NrKCH/+2iuVGdbDg5ExR46pDsk/wFbUYcluZeJlI+yyYDcxa1lFobFaIjzy2/KCIE9wV6vN\nESKd357H2qD7nAgB8zHWWhNqdeixd8wvcrze4D3PPMMbTl1FR4VjxxTnmUeepK9W6zzY3aZddcdI\nOpDtW63Wh/epEtqw6lSH1/QHubPshPyn+9cCn9WaMyIy1vyQNX983lBO+g2pN+fkX+eP3wwi2jU7\nFReVsetkY3jj5HPFkWitEbnvlDBdFVBa88GtM7xgfpk/Ov0Ys1aT2+dWeOvnPsC/u+HlfHTnDCfc\nFi9pL/GHpx/jW668kSd7ByxUHf739llqssGPXPdlzFRqhxL71boYEyprnp4sGgpC4FyCCcpFk8Fn\n9/d4wNvgB7n1nNcxWHHh4f0+81U3nUO5KCgj30WyPwnrhferTBQY8l98vdGLR8Ze7ylWGvKCif8k\nFMn/ejeeuO9SwlQETHFJYcZuchB16cTdMfJfJPz5cwAOouH+mUqFpcoM//Hhh/h3t9V564OP8o9P\nXE7Njvj4zhb3Lrv85bNw32U3UD3eZcVx+JUX3k1HdXnnXTdh2wNsQAjBu++9FwHcv/Mka16NpZUq\nu/EoabFFkzk7IYKW8Am1Ty/u0432kLJK217iWc/jjVddSUVKIpEQ6G7cQ6kBIZLVyhK2EFRFHYUe\niTzsxgeZmMjjPc+c4fcf3mVL9cGrUHUV969HPLq5x6c7T/GaK1ZZdmo8f2GOn/zMI/zIrZdz23zy\nhSQBC5FGMqAmki/FgfbSFXpBrCUQUJMuTatBrHW2yjxnlxONXtzN3hOz4mzmHqg+UgrskpV7IwAM\n8TcIdI/3PLtJVA1Zff0j6GMd3r8X86zncarRGLtOGYwQGIXCEg5aOgjholPypVVyXKxIBIHyEMIB\nIrQOkFoj9AxCz4HaRWiNFH1U+jxjNLZwsEiiAbHuYxGkY84CO8noOqAqk2iArzwirdmLesS6y2WV\nY2xGXRR9IuWzXF3hycE6ViywhGDRaiFFIgj20/8XnvKYtZrMWk1idBYRWKy02A6T558XAGVRgK2w\nw2K6ar826I2spo+sAAvBwD3BYtzjicDHtSyudmd57EVnqMU2jl2hM4jYtDyW7KGYNaR+fXBQKgqA\nse0Gq5UZVitJJGQrOmDJniHSlAqAsihAEcn92OP3ZsZLhcBhAuC5giGe5xOY91XMVujzB08/yTdc\nfgU1a0g0Rgh3SsLLSP6aP8hI/ti+CZGR/LlF5Ff9i/uLpL8YAcgT01WnMkbI//DZx7i+NY9Cs+os\n8vnOPitOnU/ubXLG6/F/nbx6IvFf8zRaa9YDj1WnwQe3nyCII/7Jqet5rLvPCbfJzz32IMu1Oi9e\nOsbbH/4473z+S/npRz7J7XNLzFVqvOfME9w6t8S3XHljdt133/1VAPzL1vWseRpFwIl68jn5o9OP\nc+f8SfZDeMFci2tmaiP3OWmlvozw54XApPPX+jGbvuKW+cniJxujLHriWvz8C196znPz+JYP/i8+\nN9gC4A9f9LWsOPVSgZX
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x112b42790>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 10,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"grid=gridData[0]\n",
|
||
|
"topo=ma.masked_invalid(grid.getRawData()) \n",
|
||
|
"lons, lats = grid.getLatLonCoords()\n",
|
||
|
"print(topo.min())\n",
|
||
|
"print(topo.max())\n",
|
||
|
"\n",
|
||
|
"# Plot topography\n",
|
||
|
"cs = ax.contourf(lons, lats, topo, 80, cmap=plt.get_cmap('terrain'),alpha=0.1)\n",
|
||
|
"cbar = fig.colorbar(cs, extend='both', shrink=0.5, orientation='horizontal')\n",
|
||
|
"cbar.set_label(\"topography height in meters\")\n",
|
||
|
"\n",
|
||
|
"fig"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "Python 2",
|
||
|
"language": "python",
|
||
|
"name": "python2"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 2
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython2",
|
||
|
"version": "2.7.13"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 1
|
||
|
}
|