def test_cmr(self, grandmesa):
     icesat2.init(SERVER)
     granules = icesat2.cmr(polygon=grandmesa,
                            time_start='2018-10-01',
                            time_end='2018-12-01')
     assert isinstance(granules, list)
     assert 'ATL03_20181017222812_02950102_004_01.h5' in granules
Пример #2
0
 def test_definition(self):
     icesat2.init(SERVER)
     rqst = {
         "rectype": "atl06rec.elevation",
     }
     d = sliderule.source("definition", rqst)
     assert d["delta_time"]["offset"] == 192
Пример #3
0
 def test_geospatial4(self):
     icesat2.init(SERVER)
     test = {
         "asset": ASSET,
         "pole": "north",
         "lat": 30.0,
         "lon": 100.0,
         "x": 0.20051164424058,
         "y": -1.1371580426033,
     }
     d = sliderule.source("geo", test)
     assert abs(d["lat"] - 30.0) < 0.0001 and d["lon"] == -80.0
Пример #4
0
 def test_time(self):
     icesat2.init(SERVER)
     rqst = {"time": "NOW", "input": "NOW", "output": "GPS"}
     d = sliderule.source("time", rqst)
     now = d["time"] - (
         d["time"] % 1000
     )  # gmt is in resolution of seconds, not milliseconds
     rqst["time"] = d["time"]
     rqst["input"] = "GPS"
     rqst["output"] = "GMT"
     d = sliderule.source("time", rqst)
     rqst["time"] = d["time"]
     rqst["input"] = "GMT"
     rqst["output"] = "GPS"
     d = sliderule.source("time", rqst)
     again = d["time"]
     assert now == again
Пример #5
0
 def test_version(self):
     icesat2.init(SERVER)
     rsps = sliderule.source("version", {})
     assert 'server' in rsps
     assert 'version' in rsps['server']
     assert 'commit' in rsps['server']
     assert 'launch' in rsps['server']
     assert 'duration' in rsps['server']
     assert 'packages' in rsps['server']
     assert '.' in rsps['server']['version']
     assert '-g' in rsps['server']['commit']
     assert ':' in rsps['server']['launch']
     assert rsps['server']['duration'] > 0
     assert 'icesat2' in rsps['server']['packages']
     assert 'version' in rsps['icesat2']
     assert 'commit' in rsps['icesat2']
     assert '.' in rsps['icesat2']['version']
     assert '-g' in rsps['icesat2']['commit']
Пример #6
0
 def test_geospatial1(self):
     icesat2.init(SERVER)
     test = {
         "asset": ASSET,
         "pole": "north",
         "lat": 40.0,
         "lon": 60.0,
         "x": 0.466307658155,
         "y": 0.80766855588292,
         "span": {
             "lat0": 20.0,
             "lon0": 100.0,
             "lat1": 15.0,
             "lon1": 105.0
         },
         "span1": {
             "lat0": 30.0,
             "lon0": 100.0,
             "lat1": 35.0,
             "lon1": 105.0
         },
         "span2": {
             "lat0": 32.0,
             "lon0": 101.0,
             "lat1": 45.0,
             "lon1": 106.0
         }
     }
     d = sliderule.source("geo", test)
     assert d["intersect"] == True
     assert abs(d["combine"]["lat0"] - 44.4015) < 0.001
     assert abs(d["combine"]["lon0"] - 108.6949) < 0.001
     assert d["combine"]["lat1"] == 30.0
     assert d["combine"]["lon1"] == 100.0
     assert abs(d["split"]["lspan"]["lat0"] - 18.6736) < 0.001
     assert abs(d["split"]["lspan"]["lon0"] - 106.0666) < 0.001
     assert abs(d["split"]["lspan"]["lat1"] - 15.6558) < 0.001
     assert abs(d["split"]["lspan"]["lon1"] - 102.1886) < 0.001
     assert abs(d["split"]["rspan"]["lat0"] - 19.4099) < 0.001
     assert abs(d["split"]["rspan"]["lon0"] - 103.0705) < 0.001
     assert abs(d["split"]["rspan"]["lat1"] - 16.1804) < 0.001
     assert abs(d["split"]["rspan"]["lon1"] - 99.3163) < 0.001
     assert d["lat"] == 40.0 and d["lon"] == 60.0
     assert d["x"] == 0.466307658155 and d["y"] == 0.80766855588292
Пример #7
0
 def test_h5p(self):
     icesat2.init(SERVER)
     datasets = [{
         "dataset": "/gt1l/land_ice_segments/h_li",
         "numrows": 5
     }, {
         "dataset": "/gt1r/land_ice_segments/h_li",
         "numrows": 5
     }, {
         "dataset": "/gt2l/land_ice_segments/h_li",
         "numrows": 5
     }, {
         "dataset": "/gt2r/land_ice_segments/h_li",
         "numrows": 5
     }, {
         "dataset": "/gt3l/land_ice_segments/h_li",
         "numrows": 5
     }, {
         "dataset": "/gt3r/land_ice_segments/h_li",
         "numrows": 5
     }]
     rsps = icesat2.h5p(datasets, ATL06_FILE1, ASSET)
     expected = {
         '/gt1l/land_ice_segments/h_li':
         [45.95665, 45.999374, 46.017857, 46.015575, 46.067562],
         '/gt1r/land_ice_segments/h_li':
         [45.980865, 46.02602, 46.02262, 46.03137, 46.073578],
         '/gt2l/land_ice_segments/h_li':
         [45.611526, 45.588196, 45.53242, 45.48105, 45.443752],
         '/gt2r/land_ice_segments/h_li':
         [45.547, 45.515495, 45.470577, 45.468964, 45.406998],
         '/gt3l/land_ice_segments/h_li':
         [45.560867, 45.611183, 45.58064, 45.579746, 45.563858],
         '/gt3r/land_ice_segments/h_li':
         [45.39587, 45.43603, 45.412586, 45.40014, 45.41833]
     }
     for dataset in expected.keys():
         for index in range(len(expected[dataset])):
             assert round(rsps[dataset][index]) == round(
                 expected[dataset][index])
Пример #8
0
 def test_h5_types(self):
     icesat2.init(SERVER)
     heights_64 = icesat2.h5("/gt1l/land_ice_segments/h_li", ATL06_FILE1,
                             ASSET)
     expected_64 = [
         45.95665, 45.999374, 46.017857, 46.015575, 46.067562, 46.099796,
         46.14037, 46.105526, 46.096024, 46.12297
     ]
     heights_32 = icesat2.h5("/gt1l/land_ice_segments/h_li", ATL06_FILE2,
                             ASSET)
     expected_32 = [
         350.46988, 352.08688, 352.43243, 353.19345, 353.69543, 352.25998,
         350.15366, 346.37888, 342.47903, 341.51
     ]
     bckgrd_32nf = icesat2.h5("/gt1l/bckgrd_atlas/bckgrd_rate", ATL03_FILE2,
                              ASSET)
     expected_32nf = [
         29311.684, 6385.937, 6380.8413, 28678.951, 55349.168, 38201.082,
         19083.434, 38045.67, 34942.434, 38096.266
     ]
     for c in zip(heights_64, expected_64, heights_32, expected_32,
                  bckgrd_32nf, expected_32nf):
         assert (round(c[0]) == round(c[1])) and (round(c[2]) == round(
             c[3])) and (round(c[4]) == round(c[5]))
Пример #9
0
import json
import logging
import sliderule
from sliderule import icesat2
from sliderule import datatypes

###############################################################################
# MAIN
###############################################################################

if __name__ == '__main__':

    url = ["127.0.0.1"]

    # Override server URL from command line
    if len(sys.argv) > 1:
        url = sys.argv[1]

    # Bypass service discovery
    if len(sys.argv) > 2:
        if sys.argv[2] == "bypass":
            url = [url]

    # Initialize ICESat2/SlideRule Package
    icesat2.init(url, False)

    # Query Version
    rsps = sliderule.source("version", {})

    # Display Version Information
    print(json.dumps(rsps, indent=4))
    # Bypass service discovery if url supplied
    if len(sys.argv) > 5:
        if sys.argv[5] == "bypass":
            url = [url]

    # Set Subset #
    col = 0
    startrow = 0
    numrows = -1
    if len(sys.argv) > 7:
        col = int(sys.argv[6])  # 0
        startrow = int(sys.argv[7])  # 13665185
        numrows = int(sys.argv[8])  # 89624

    # Configure SlideRule #
    icesat2.init(url, True)

    # Read Dataset #
    datasets = [{
        "dataset": dataset,
        "col": col,
        "startrow": startrow,
        "numrows": numrows
    }]
    rawdata = icesat2.h5p(datasets, resource, asset)

    # Write Dataset to File #
    filename = dataset[dataset.rfind("/") + 1:]
    f = open(filename + ".bin", 'w+b')
    f.write(bytearray(rawdata[dataset]))
    f.close()
    parse_command_line(sys.argv, scfg)
    parse_command_line(sys.argv, parms)

    # bypass service discovery if url is localhost
    if scfg["url"] == '127.0.0.1':
        scfg["url"] = ['127.0.0.1']

    # create icepx region
    iregion = icepyx.Query(icfg["short_name"], icfg["spatial_extent"], icfg["date_range"], cycles=icfg["cycles"], tracks=icfg["tracks"])

    # visualize icepx region
    # iregion.visualize_spatial_extent()

    # display summary information
    iregion.product_summary_info()
    # print("Available Granules:", iregion.avail_granules())
    # print("Available Granule IDs:", iregion.avail_granules(ids=True))

    # initialize sliderule api
    icesat2.init(scfg["url"], verbose=True)

    # generate sliderule atl06 elevations
    # parms["poly"] = icesat2.toregion(icfg["spatial_extent"])[0]
    atl06_sr = ipxapi.atl06p(iregion, parms, scfg["asset"])

    # Create Plot
    f, ax = plt.subplots()
    vmin, vmax = atl06_sr['h_mean'].quantile((0.02, 0.98))
    atl06_sr.plot(ax=ax, column='h_mean', cmap='inferno', s=0.1, vmin=vmin, vmax=vmax)
    plt.show()
Пример #12
0
 def test_variable_length(self):
     icesat2.init(SERVER)
     v = icesat2.h5("/gt1r/geolocation/segment_ph_cnt", ATL03_FILE1, ASSET)
     assert v[0] == 258 and v[1] == 256 and v[2] == 273
Пример #13
0
 def test_h5(self):
     icesat2.init(SERVER)
     epoch_offset = icesat2.h5("ancillary_data/atlas_sdp_gps_epoch",
                               ATL03_FILE1, ASSET)[0]
     assert epoch_offset == 1198800018.0
 def test_get_version(self):
     icesat2.init(SERVER)
     version = icesat2.get_version()
     assert isinstance(version, dict)
     assert {'icesat2', 'server', 'client'} <= version.keys()
 def test_init_badurl(self):
     with pytest.raises((ConnectTimeout, ConnectionError)):
         icesat2.init('incorrect.org')
 def test_init_empty_raises(self):
     with pytest.raises(TypeError, match=('url')):
         icesat2.init()