mirror of
https://github.com/Unidata/python-awips.git
synced 2025-02-23 22:57:56 -05:00
574 lines
1.1 MiB
Text
574 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 **[Shapely](http://toblerity.org/shapely/manual.html)** 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 [Maps Database Reference Page](http://unidata.github.io/awips2/python/maps-database/#mapdatacwa) 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": 1,
|
||
|
"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": 2,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 25 county MultiPolygons\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"name": "stderr",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"/Users/mjames/miniconda2/envs/python-awips/lib/python2.7/site-packages/cartopy/io/__init__.py:264: DownloadWarning: Downloading: http://naciscdn.org/naturalearth/50m/physical/ne_50m_coastline.zip\n",
|
||
|
" warnings.warn('Downloading: {}'.format(url), DownloadWarning)\n",
|
||
|
"/Users/mjames/miniconda2/envs/python-awips/lib/python2.7/site-packages/cartopy/io/__init__.py:264: DownloadWarning: Downloading: http://naciscdn.org/naturalearth/50m/cultural/ne_50m_admin_0_boundary_lines_land.zip\n",
|
||
|
" warnings.warn('Downloading: {}'.format(url), DownloadWarning)\n",
|
||
|
"/Users/mjames/miniconda2/envs/python-awips/lib/python2.7/site-packages/cartopy/io/__init__.py:264: DownloadWarning: Downloading: http://naciscdn.org/naturalearth/50m/cultural/ne_50m_admin_1_states_provinces_lines.zip\n",
|
||
|
" warnings.warn('Downloading: {}'.format(url), DownloadWarning)\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\nWct7IB50Yq+P6Ou49dL
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"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": 3,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\n6a1939bfVqKGxD1r8Ay
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 3,
|
||
|
"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, cities, topo\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": "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\n9Rv3Oxj6HeJGKKMl7sC
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"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"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"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": "markdown",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"### Filter cities 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": 6,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Using 57 city Points\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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\nllodonzcqJvXpk2bbvi
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"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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\n9BNvvPGG1fdfblYxoxK
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"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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\nE0Wh7bTH2LGhfv58mjI
|
||
|
"text/plain": [
|
||
|
"<matplotlib.figure.Figure at 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"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 0x110c12050>]\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 0x10668a210>"
|
||
|
]
|
||
|
},
|
||
|
"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
|
||
|
}
|