Skip to content

Commit 93eef7d

Browse files
committed
initial work on dynamic fields in atl06 returns
1 parent 99db1b9 commit 93eef7d

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

sliderule/icesat2.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import sliderule
4545
from sliderule import version
4646
import os
47+
import time
4748

4849
###############################################################################
4950
# GLOBALS
@@ -718,38 +719,47 @@ def atl06p(parm, asset=DEFAULT_ASSET, version=DEFAULT_ICESAT2_SDP_VERSION, callb
718719
# Make API Processing Request
719720
rsps = sliderule.source("atl06p", rqst, stream=True, callbacks=callbacks)
720721

722+
start_time = time.perf_counter()
721723
# Flatten Responses
722724
columns = {}
725+
rectype = None
726+
num_rows = 0
727+
sample_rec = None
723728
if len(rsps) <= 0:
724-
logger.debug("no response returned")
725-
elif (rsps[0]['__rectype'] != 'atl06rec' and rsps[0]['__rectype'] != 'atl06rec-compact'):
726-
logger.debug("invalid response returned: %s", rsps[0]['__rectype'])
729+
logger.debug("No response returned")
727730
else:
728-
# Determine Record Type
729-
if rsps[0]['__rectype'] == 'atl06rec':
730-
rectype = 'atl06rec.elevation'
731-
else:
732-
rectype = 'atl06rec-compact.elevation'
733-
# Count Rows
734-
num_rows = 0
735731
for rsp in rsps:
732+
# Determine Record Type
733+
if rectype == None:
734+
if rsp['__rectype'] == 'atl06rec':
735+
rectype = 'atl06rec.elevation'
736+
sample_rec = rsp
737+
elif rsp['__rectype'] == 'atl06rec-compact':
738+
rectype = 'atl06rec-compact.elevation'
739+
sample_rec = rsp
740+
# Count Rows
736741
num_rows += len(rsp["elevation"])
742+
# Check Valid ATL06 Record Returned
743+
if rectype == None:
744+
raise RuntimeError("Invalid record types returned for this api")
737745
# Build Columns
738-
for field in rsps[0]["elevation"][0].keys():
746+
for field in sample_rec["elevation"][0].keys():
739747
fielddef = sliderule.get_definition(rectype, field)
740748
if len(fielddef) > 0:
741749
columns[field] = numpy.empty(num_rows, fielddef["nptype"])
742750
# Populate Columns
743751
elev_cnt = 0
744752
for rsp in rsps:
745753
for elevation in rsp["elevation"]:
746-
for field in elevation.keys():
747-
if field in columns:
748-
columns[field][elev_cnt] = elevation[field]
754+
for field in columns:
755+
columns[field][elev_cnt] = elevation[field]
749756
elev_cnt += 1
750757

751758
# Return Response
752-
return __todataframe(columns, "delta_time", "lon", "lat")
759+
gdf = __todataframe(columns, "delta_time", "lon", "lat")
760+
end_time = time.perf_counter()
761+
print("Execution Time: {} seconds".format(end_time - start_time))
762+
return gdf
753763

754764
# Handle Runtime Errors
755765
except RuntimeError as e:

utils/query_elevations.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@
4545
"cnt": 10,
4646
"len": 40.0,
4747
"res": 20.0,
48-
"maxi": 1
48+
"maxi": 1#,
49+
# "atl03_geolocation_fields": ["solar_elevation"]
4950
}
5051

5152
# Request ATL06 Data

0 commit comments

Comments
 (0)