def download_array(shakemap_id, shakemap_url=SHAKEMAP_URL): """ :param shakemap_id: USGS Shakemap ID :returns: an array with the shakemap """ url = shakemap_url.format(shakemap_id) logging.info('Downloading %s', url) grid = re.search(GRID_RX, _download(url)) uncertainty = re.search(UNCERTAINTY_RX, _download(url)) if grid is None: raise MissingLink('Could not find grid.xml.zip link in %s' % url) if uncertainty is None: with urlopen(US_GOV + grid.group()) as f: return get_shakemap_array(f) else: with urlextract(US_GOV + grid.group(), 'grid.xml') as f1, \ urlextract(US_GOV + uncertainty.group(), 'uncertainty.xml') as f2: return get_shakemap_array(f1, f2)
def download_array(shakemap_id, shakemap_url=SHAKEMAP_URL): """ :param shakemap_id: USGS Shakemap ID :returns: an array with the shakemap """ url = shakemap_url.format(shakemap_id) logging.info('Downloading %s', url) contents = json.loads(urlopen( url).read())['properties']['products']['shakemap'][-1]['contents'] grid = contents.get('download/grid.xml') if grid is None: raise MissingLink('Could not find grid.xml link in %s' % url) uncertainty = contents.get('download/uncertainty.xml.zip') if uncertainty is None: with urlopen(grid['url']) as f: return get_shakemap_array(f) else: with urlopen(grid['url']) as f1, urlextract(uncertainty['url'], 'uncertainty.xml') as f2: return get_shakemap_array(f1, f2)
def download_array(shakemap_id, shakemap_url=SHAKEMAP_URL): """ :param shakemap_id: USGS Shakemap ID :returns: an array with the shakemap """ url = shakemap_url.format(shakemap_id) logging.info('Downloading %s', url) contents = json.loads(urlopen(url).read())[ 'properties']['products']['shakemap'][-1]['contents'] grid = contents.get('download/grid.xml') if grid is None: raise MissingLink('Could not find grid.xml link in %s' % url) uncertainty = contents.get('download/uncertainty.xml.zip') if uncertainty is None: with urlopen(grid['url']) as f: return get_shakemap_array(f) else: with urlopen(grid['url']) as f1, urlextract( uncertainty['url'], 'uncertainty.xml') as f2: return get_shakemap_array(f1, f2)
def test_pga(self): imt_dt = numpy.dtype([('PGA', F32)]) array = get_shakemap_array(writetmp(example_pga)) n = 3 # number of sites self.assertEqual(len(array), n) self.assertEqual(array.dtype.names, ('lon', 'lat', 'vs30', 'val', 'std')) dec = 4 # four digits aae(array['lon'], [13.580, 13.5883, 13.5967], dec) aae(array['lat'], [39.3103, 39.3103, 39.3103], dec) aae(array['vs30'], [603, 603, 603], dec) val = numpy.zeros(n, imt_dt) std = numpy.array([(0.51,), (0.51,), (0.51,)], imt_dt) for imt in imt_dt.names: aae(array['val'][imt], val[imt]) aae(array['std'][imt], std[imt])
def test_pga(self): imt_dt = numpy.dtype([('PGA', F32)]) array = get_shakemap_array(gettemp(example_pga)) n = 3 # number of sites self.assertEqual(len(array), n) self.assertEqual(array.dtype.names, ('lon', 'lat', 'vs30', 'val', 'std')) dec = 4 # four digits aae(array['lon'], [13.580, 13.5883, 13.5967], dec) aae(array['lat'], [39.3103, 39.3103, 39.3103], dec) aae(array['vs30'], [603, 603, 603], dec) val = numpy.zeros(n, imt_dt) std = numpy.array([(0.51,), (0.51,), (0.51,)], imt_dt) for imt in imt_dt.names: aae(array['val'][imt], val[imt]) aae(array['std'][imt], std[imt])
def test_sa(self): imt_dt = numpy.dtype([('PGA', F32), ('SA(0.3)', F32), ('SA(1.0)', F32), ('SA(3.0)', F32)]) array = get_shakemap_array(gettemp(example_sa)) n = 4 # number of sites self.assertEqual(len(array), n) self.assertEqual(array.dtype.names, ('lon', 'lat', 'vs30', 'val', 'std')) dec = 4 # four digits aae(array['lon'], [81.7314, 81.7481, 81.7647, 81.7814], dec) aae(array['lat'], [30.8735, 30.8735, 30.8735, 30.8735], dec) aae(array['vs30'], [400.758, 352.659, 363.687, 301.17], dec) val = numpy.array([(0.44, 1.82, 2.80, 1.26), (0.47, 1.99, 3.09, 1.41), (0.47, 1.97, 3.04, 1.38), (0.52, 2.23, 3.51, 1.64)], imt_dt) std = numpy.array([(0.53, 0.00, 0.00, 0.00), (0.52, 0.00, 0.00, 0.00), (0.52, 0.00, 0.00, 0.00), (0.50, 0.00, 0.00, 0.0)], imt_dt) for imt in imt_dt.names: aae(array['val'][imt], val[imt]) aae(array['std'][imt], std[imt])
def test_ghorka(self): # this is a test considering also the uncertainty grid_file = os.path.join(CDIR, 'ghorka_grid.xml') uncertainty_file = os.path.join(CDIR, 'ghorka_uncertainty.xml') array = get_shakemap_array(grid_file, uncertainty_file) aae(array['std']['SA(0.3)'], [0.57, 0.55, 0.56, 0.52])