def get(self): parser = reqparse.RequestParser() parser.add_argument('latitude', type=float, help='Latitude of the object') parser.add_argument('longitude', type=float, help='Longitude of object') args = parser.parse_args(strict=True) if args['latitude'] is not None and args['longitude'] is not None: if abs(args['latitude']) > 90 : abort(404, message="latitude is out of range of -90 <= latitude <= 90") if abs(args['longitude']) > 180: abort(404, message='longitude is out of range of -180 <= longitude <= 180') latitude = args['latitude'] longitude = args['longitude'] lw = Leeway() # Set loglevel to 0 for debug information # Arome #reader_arome = reader_netCDF_CF_generic.Reader('http://thredds.met.no/thredds/dodsC/arome25/arome_metcoop_default2_5km_latest.nc') reader_arome = reader_netCDF_CF_generic.Reader(lw.test_data_folder() + '16Nov2015_NorKyst_z_surface/arome_subset_16Nov2015.nc') reader_norkyst = reader_netCDF_CF_generic.Reader('http://tds.hycom.org/thredds/dodsC/GLBu0.08/expt_91.2/uv3z') # Landmask (Basemap) reader_basemap = reader_basemap_landmask.Reader( llcrnrlon=longitude-2, llcrnrlat=latitude-2, urcrnrlon=longitude+2, urcrnrlat=latitude+2, resolution='h', projection='merc') #lw.add_reader([reader_norkyst, reader_arome, reader_basemap]) # Adding readers succesively, and specifying which variables they # shall provide. This way, order of adding readers does not matter, # except for small rounding differences due to different projection lw.add_reader(reader_norkyst, variables=['x_sea_water_velocity', 'y_sea_water_velocity']) lw.add_reader(reader_arome, variables=['x_wind', 'y_wind']) lw.add_reader(reader_basemap, variables=['land_binary_mask']) # Seed leeway elements at defined position and time objType = 26 # 26 = Life-raft, no ballast lw.seed_elements(longitude, latitude, radius=100, number=30, time=reader_arome.start_time, objectType=objType) lw.set_projection('+proj=merc') lw.run(steps=60*4, time_step=900) lp = lw.plot(show=False) img = StringIO.StringIO() lp[1].savefig(img,format='png') img.seek(0) response=make_response(img.buf) response.headers['Content-Type'] = 'image/png' return response else: abort(404, message="Requires latitude and longitude but none were given.")
# Adding readers succesively, and specifying which variables they # shall provide. This way, order of adding readers does not matter, # except for small rounding differences due to different projection lw.add_reader(reader_norkyst, variables=['x_sea_water_velocity', 'y_sea_water_velocity']) lw.add_reader(reader_arome, variables=['x_wind', 'y_wind']) lw.add_reader(reader_basemap, variables=['land_binary_mask']) lw.fallback_values['x_sea_water_velocity'] = 0 lw.fallback_values['y_sea_water_velocity'] = 0 # Seeding some particles lon = 4.5; lat = 60.0; # Outside Bergen # Seed leeway elements at defined position and time objType = 26 # 26 = Life-raft, no ballast lw.seed_elements(lon, lat, radius=1000, number=3000, time=reader_arome.start_time, objectType=objType) lw.set_projection('+proj=merc') # Running model (until end of driver data) lw.run(steps=60*4, time_step=900) # Print and plot results print(lw) lw.animation() #lw.animation(filename='leeway.gif') lw.plot()
#lw.add_reader([reader_norkyst, reader_arome, reader_basemap]) # Adding readers succesively, and specifying which variables they # shall provide. This way, order of adding readers does not matter, # except for small rounding differences due to different projection lw.add_reader(reader_norkyst, variables=['x_sea_water_velocity', 'y_sea_water_velocity']) lw.add_reader(reader_arome, variables=['x_wind', 'y_wind']) lw.add_reader(reader_basemap, variables=['land_binary_mask']) # Seeding some particles lon = 4.5; lat = 60.0; # Outside Bergen # Seed leeway elements at defined position and time objType = 26 # 26 = Life-raft, no ballast lw.seed_elements(lon, lat, radius=1000, number=3000, time=reader_arome.start_time, objectType=objType) lw.set_projection('+proj=merc') # Running model (until end of driver data) lw.run(steps=60*4, time_step=900) # Print and plot results print lw lw.animation() #lw.animation(filename='leeway.gif') lw.plot()