python-awips
python-awips copied to clipboard
Segmentation Fault: 11 when attempting to "Plot Global Water Vapor Composite"
Code
from awips.dataaccess import DataAccessLayer
import cartopy.crs as ccrs
import cartopy.feature as cfeat
import matplotlib.pyplot as plt
from cartopy.mpl.gridliner import LONGITUDE_FORMATTER, LATITUDE_FORMATTER
import numpy as np
import datetime
DataAccessLayer.changeEDEXHost("edex-cloud.unidata.ucar.edu")
request = DataAccessLayer.newDataRequest()
request.setDatatype("satellite")
request.setLocationNames("Global")
availableProducts = DataAccessLayer.getAvailableParameters(request)
availableProducts.sort()
request.setParameters(availableProducts[0])
utc = datetime.datetime.utcnow()
times = DataAccessLayer.getAvailableTimes(request)
hourdiff = utc - datetime.datetime.strptime(str(times[-1]),'%Y-%m-%d %H:%M:%S')
hours,days = hourdiff.seconds/3600,hourdiff.days
minute = str((hourdiff.seconds - (3600 * hours)) / 60)
offsetStr = ''
if hours > 0:
offsetStr += str(hours) + "hr "
offsetStr += str(minute) + "m ago"
if days > 1:
offsetStr = str(days) + " days ago"
print("Found "+ str(len(times)) +" available times")
print(" "+str(times[0]) + "\n to\n " + str(times[-1]))
print("Using "+str(times[-1]) + " ("+offsetStr+")")
response = DataAccessLayer.getGridData(request, [times[-1]])
grid = response[0]
data = grid.getRawData()
lons,lats = grid.getLatLonCoords()
bbox = [lons.min(), lons.max(), lats.min(), lats.max()]
print("grid size " + str(data.shape))
print("grid extent " + str(list(bbox)))
def make_map(bbox, projection=ccrs.PlateCarree()):
fig, ax = plt.subplots(figsize=(18,14),
subplot_kw=dict(projection=projection))
ax.set_extent(bbox)
ax.coastlines(resolution='50m')
gl = ax.gridlines(draw_labels=True)
gl.xlabels_top = gl.ylabels_right = False
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
return fig, ax
fig, ax = make_map(bbox=bbox)
# State boundaries
states = cfeat.NaturalEarthFeature(category='cultural',
name='admin_1_states_provinces_lines',
scale='50m', facecolor='none')
ax.add_feature(states, linestyle=':')
cs = ax.pcolormesh(lons, lats, data, cmap='Greys_r')
cbar = fig.colorbar(cs, shrink=0.9, orientation='horizontal')
cbar.set_label(str(grid.getLocationName())+" " \
+str(grid.getParameter())+" " \
+str(grid.getDataTime().getRefTime()))
plt.tight_layout()
Output
Found 204 available times
2017-07-16 03:00:00
to
2017-08-10 15:00:00
Using 2017-08-10 15:00:00 (3hr 18m ago)
grid size (1024, 2048)
grid extent [-179.91191, 179.99982, -89.977936, 89.890022]
Segmentation fault: 11
I can not reproduce the segfault 11 error, meaning the python code is working as expected and the error likely exists in the required packages.
What operation system? What python version, 2 or 3?
Are you able to run the jupyter notebook on your local machine? If so it may provide more info about what's going wrong.