コード例 #1
0
    def testRequestingTooMuchDataThrowsResponseTooLargeException(self):
        req = DAL.newDataRequest(self.datatype)
        req.addIdentifier("group", "/")
        req.addIdentifier("dataset", "full")
        points = ((-180, 90), (180, 90), (180, -90), (-180, -90))
        poly = shapely.geometry.LinearRing(points)
        req.setEnvelope(poly)

        with self.assertRaises(ThriftRequestException) as cm:
            DAL.getGridData(req)
        self.assertIn('ResponseTooLargeException', str(cm.exception))
コード例 #2
0
    def runGridDataTest(self, req, testSameShape=True):
        """
        Test that we are able to successfully retrieve grid data for the given
        request.

        Args:
            testSameShape: whether or not to verify that all the retrieved data
                           have the same shape (most data don't change shape)
        """
        times = DafTestCase.getTimesIfSupported(req)
        gridData = DAL.getGridData(req, times[:self.numTimesToLimit])
        self.assertIsNotNone(gridData)
        if not gridData:
            raise unittest.SkipTest("No data available")
        print("Number of grid records: " + str(len(gridData)))
        if len(gridData) > 0:
            print("Sample grid data shape:\n" +
                  str(gridData[0].getRawData().shape) + "\n")
            print("Sample grid data:\n" + str(gridData[0].getRawData()) + "\n")
            print("Sample lat-lon data:\n" +
                  str(gridData[0].getLatLonCoords()) + "\n")

            if testSameShape:
                correctGridShape = gridData[0].getLatLonCoords()[0].shape
                for record in gridData:
                    rawData = record.getRawData()
                    self.assertIsNotNone(rawData)
                    self.assertEqual(rawData.shape, correctGridShape)
        return gridData
コード例 #3
0
 def testGetVectorGridData(self):
     req = DAL.newDataRequest(self.datatype)
     req.addIdentifier('parmId.dbId.modelName', 'Fcst')
     req.addIdentifier('parmId.dbId.siteId', params.SITE_ID)
     req.setParameters('Wind')
     times = DAL.getAvailableTimes(req)
     if not (times):
         raise unittest.SkipTest('No Wind Data available for testing')
     gridData = DAL.getGridData(req, [times[0]])
     rawWind = None
     rawDir = None
     for grid in gridData:
         if grid.getParameter() == 'Wind':
             self.assertEqual(grid.getUnit(), 'kts')
             rawWind = grid.getRawData()
         elif grid.getParameter() == 'WindDirection':
             self.assertEqual(grid.getUnit(), 'deg')
             rawDir = grid.getRawData()
     self.assertIsNotNone(rawWind, 'Wind Magnitude grid is not present')
     self.assertIsNotNone(rawDir, 'Wind Direction grid is not present')
     # rawWind and rawDir are numpy.ndarrays so comparison will result in boolean ndarrays.
     self.assertTrue((rawWind >= 0).all(),
                     'Wind Speed should not contain negative values')
     self.assertTrue((rawDir >= 0).all(),
                     'Wind Direction should not contain negative values')
     self.assertTrue((rawDir <= 360).all(),
                     'Wind Direction should be less than or equal to 360')
     self.assertFalse((rawDir == rawWind).all(),
                      'Wind Direction should be different from Wind Speed')
コード例 #4
0
    def testGetGridData(self):
        print("defaultTopo")
        req = DAL.newDataRequest(self.datatype)
        req.addIdentifier("group", "/")
        req.addIdentifier("dataset", "full")
        poly = shapely.geometry.LinearRing(
            ((-70, 40), (-71, 40), (-71, 42), (-70, 42)))
        req.setEnvelope(poly)
        gridData = DAL.getGridData(req)
        self.assertIsNotNone(gridData)
        print("Number of grid records: " + str(len(gridData)))
        print("Sample grid data shape:\n" +
              str(gridData[0].getRawData().shape) + "\n")
        print("Sample grid data:\n" + str(gridData[0].getRawData()) + "\n")

        for topoFile in ["gtopo30"]:
            print("\n" + topoFile)
            req.addIdentifier("topoFile", topoFile)
            gridData = DAL.getGridData(req)
            self.assertIsNotNone(gridData)
            print("Number of grid records: " + str(len(gridData)))
            print("Sample grid data shape:\n" +
                  str(gridData[0].getRawData().shape) + "\n")
            print("Sample grid data:\n" + str(gridData[0].getRawData()) + "\n")
コード例 #5
0
ファイル: makeImage.py プロジェクト: mmcauley19/transferRepo
############################################################################
# Turn plotting off
plt.ioff()

# Make images... each frame is two minutes. So 30 for an hour, 60 for two, etc.
for x in range(-240, 0, 1):

    # Filename
    filename = times[x].validPeriod.end.strftime('%Y-%m-%d-%H%M') + '.png'

    # If image does not exist, make it
    if filename not in images:

        try:
            # Get data
            response = DataAccessLayer.getGridData(req, [times[x]])
            data = response[0].getRawData()
            data = np.ma.masked_where(data <= -99, data)
            # Get the lat/lon data
            lon, lat = response[0].getLatLonCoords()
            lon, lat = m(lon, lat)

            # Initialize figure size (48,27) for 4K and (24,15) for 1080p
            plt.figure(num=None, figsize=(24, 15), dpi=80)

            # Add radar data
            m.pcolormesh(lon,
                         lat,
                         data,
                         cmap=radarColors,
                         vmin=-30,
コード例 #6
0
ファイル: simple.py プロジェクト: mjames-upc/edexInventory
request.setLocationNames("BOU")
response = DataAccessLayer.getGeometryData(request, None)

# Now set area
request = DataAccessLayer.newDataRequest()
request.setEnvelope(response[0].getGeometry())

# Now query grid
request.setDatatype("grid")
request.setLocationNames("HRRR")
request.setParameters("T")
request.setLevels("500MB")
t = DataAccessLayer.getAvailableTimes(request)
print t
exit()
response = DataAccessLayer.getGridData(request, [t[gridTimeIndex]])
data = response[0]

fig = plt.figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.8,0.8])

lons,lats = data.getLatLonCoords()


lat_min = min(lats[-1])
lat_max = max(lats[0])
lon_min = min(lons[0])
lon_max = max(lons[-1])
# map = Basemap(projection='tmerc',
#               lat_0=0, lon_0=3,
#               llcrnrlat=lat_min,