Giter Club home page Giter Club logo

soto's Introduction

State of the Ocean (SOTO)

PlantUML model

This open source product line from JPL's PO.DAAC and NASA's EOSDIS is an interactive, web-based tool to generate informative maps and animations that communicate and promote the discovery of the state of the ocean.

SOTO is a suite of tools presented through an interactive, web-based visualization front-end. It provides access to a broad range of satelite-derived products and key parameters of interest to the oceanographic community. SOTO facilitates visual exploration and the ability to download data to analyze with your own tools enabling your research. Many of the imagery layers are updated daily and are available within three hours of observation - essentially showing the entire Earth as it looks "right now". Arctic and Antarctic views of many products are also available for a "full globe" perspective. Geostationary imagery layers are also now available. These are provided in ten minute increments for the last 90 days. These full disk hemispheric views allow for almost real-time viewing of changes occurring around most of the world. Browsing on tablet and smartphone devices is generally supported for mobile access to the imagery.

Related Repositories

In addition to the web tool, SOTO consists of a number of supporting backend components as well. Development on the individual components of the system is handled within each respective repository. Planning and documentation for the system as a whole is concentrated in this repository.

Component repositories:

soto's People

Contributors

frankinspace avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

soto's Issues

Determine which SOTO layers are active/inactive

Hi all,

As we prepare for the transition of all PODAAC products from GIBS to GITC, I have reconciled what we currently have on disk and what is in the based-line ICD.

I have updated the draft ICD with my findings. All the “Inactive” sections are products GIBS is expecting to get on a regular basis but haven’t. All the “active” products are the ones we are currently receiving updates on a regular basis. The strikethrough products are products, I believe, have been discontinued.

As we transition, it would be good if you update the ICD with the status of the “Inactive” products and figure out if those should be discontinued or if there were issues on either end that would explain why those have not been updated recently. I indicated in red the last date we currently have on disk for those products. If those products are discontinued but still need to be served in GIBS/GITC, then the temporal coverage in the “Product Metadata” tab should be updated.

Let me know if you have any questions.
Thank you,
Jerome

Add link to SWORD Explorer in the Info section of EDS-Advanced pop-up

We want to add an info box to the Advanced Filter modal in EDSC when "River Reach" is selected. Similar to the info box provided for the HUC options.

  1. Open Advanced Filter
    image

  2. Select one of the HUC options and you see this info box:
    image

When River Reach option is selected, there is no extra information provided.
image

@cassienickles Can you please provide the text that we want to show here?
@viviant100 Can you file the appropriate tickets with EDSC to get it on their schedule? I would assume this would be covered in their general maintenance capacity.

Setup download for measures ssh

Need to enable data subscriber download of data for collection:

SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205

Data will be located in /cloud/SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205

Related to #4

GITC updated PAN format

GITC updated the format of the PAN files which caused GIG PAN component to fail in parsing the content of the PAN files.

Need to update GIG PAN processing to support new format from GITC.

Create outline for the new story

The outline would just be a list of steps that walk through the story where each step in the story has at a minimum:

SOTO URL to display
Markdown formatted text to display during that step

Handle MODIS NRT differently

From Jerome:

Different PDR/TGZ patterns for the MODIS products:
 
/PDR/MOP_L9DD_SSTT/TERRA_MODIS.20231001.L3m.DAY.SST.sst.9km_sst.PDR
/PDR/MOP_L9DD_SSTT/TERRA_MODIS.20231115.L3m.DAY.SST.sst.9km.NRT_sst.PDR
 
Not sure why there are NRT patterns within the STD product.

PO.DAAC has always delivered the products this way but GITC has improved handling for NRT products and would like the NRT products to be delivered as a distinct layer instead of combined.

PO.DAAC needs to decide if we want to change the way MODIS is handled.

Error while loading SWORD v16 data

Summary

An error occurred when trying to load the SWORD v16 data. The error log is appended to the end of this file. The error indicated a problem trying to persist ‘inf’ values into the MySQL database because ‘inf’ values are not a supported data type. Upon inspection, there was only one attribute (sinuosity) in about 20 of the node files that contained ‘inf’ values. After checking with applied science team, it was determined that replacing these ‘inf’ values with ’NaN’ would not be a misrepresentation of the meaning behind the data. Since MySQL supports ‘NaN’ values, a script was written to convert the ‘inf’ values in SWORD v16 to ’NaN’ values. The resulting data was then loaded into the FTS database.

Bucket Contents

Description of the objects present in the s3://sword-v16-shp bucket (services UAT)

SWORD_v16_shp.zip

The original SWORD file downloaded from gaia.geosci.unc.edu/SWORD/SWORD_v16_shp.zip.

shp/

This is the unzipped SWORD_v16_shp.zip with the ‘inf’ -> ’NaN’ conversion already applied.

sword_convert_inf.py

This is the script used to convert ‘inf’ values to ‘NaN’ values.

Error Log

Error log from original load attempt has been copied from cloud watch below:

INFO:podaac.sworddb.setup_sword:Sword S3 data pulled successfully
INFO:podaac.sworddb.setup_sword:Loading nodes
INFO:podaac.sworddb.setup_sword:Dropping node table
INFO:podaac.sworddb.setup_sword:Node table dropped
/home/dockeruser/.local/lib/python3.8/site-packages/geopandas/geodataframe.py:1321: UserWarning: Geometry column does not contain geometry.
warnings.warn("Geometry column does not contain geometry.")
INFO:podaac.sworddb.setup_sword:Current node file: internal/SWORD/Reaches_Nodes/shp/EU/eu_sword_nodes_hb21_v16.shp
INFO:podaac.sworddb.setup_sword:0%| | 0/75141 [00:00<?, ?it/s]
INFO:podaac.sworddb.setup_sword:10%|9 | 7514/75141 [00:01<00:11, 6035.22it/s]
INFO:podaac.sworddb.setup_sword:20%|#9 | 15028/75141 [00:02<00:07, 7682.55it/s]
INFO:podaac.sworddb.setup_sword:30%|##9 | 22542/75141 [00:02<00:06, 8373.63it/s]
INFO:podaac.sworddb.setup_sword:40%|###9 | 30056/75141 [00:03<00:05, 8839.30it/s]
INFO:podaac.sworddb.setup_sword:50%|####9 | 37570/75141 [00:04<00:04, 8960.80it/s]
INFO:podaac.sworddb.setup_sword:60%|#####9 | 45084/75141 [00:05<00:03, 8923.45it/s]
INFO:podaac.sworddb.setup_sword:70%|######9 | 52598/75141 [00:06<00:02, 9046.01it/s]
INFO:podaac.sworddb.setup_sword:80%|#######9 | 60112/75141 [00:06<00:01, 9174.87it/s]
INFO:podaac.sworddb.setup_sword:90%|########9 | 67626/75141 [00:07<00:00, 9129.89it/s]
INFO:podaac.sworddb.setup_sword:100%|#########9| 75140/75141 [00:08<00:00, 9125.74it/s]
INFO:podaac.sworddb.setup_sword:82654it [00:08, 9662.71it/s]
/home/dockeruser/.local/lib/python3.8/site-packages/geopandas/geodataframe.py:1321: UserWarning: Geometry column does not contain geometry.
warnings.warn("Geometry column does not contain geometry.")
INFO:podaac.sworddb.setup_sword:Current node file: internal/SWORD/Reaches_Nodes/shp/EU/eu_sword_nodes_hb22_v16.shp
INFO:podaac.sworddb.setup_sword:0%| | 0/234411 [00:00<?, ?it/s]
INFO:podaac.sworddb.setup_sword:10%|9 | 23441/234411 [00:02<00:22, 9240.93it/s]
INFO:podaac.sworddb.setup_sword:20%|#9 | 46882/234411 [00:04<00:19, 9416.96it/s]
INFO:podaac.sworddb.setup_sword:30%|##9 | 70323/234411 [00:07<00:17, 9410.85it/s]
INFO:podaac.sworddb.setup_sword:40%|###9 | 93764/234411 [00:09<00:14, 9377.79it/s]
INFO:podaac.sworddb.setup_sword:40%|###9 | 93764/234411 [00:11<00:17, 8019.29it/s]
Traceback (most recent call last):
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1782, in _execute_context
self.dialect.do_executemany(
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 193, in do_executemany
rowcount = cursor.executemany(statement, parameters)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 173, in executemany
return self._do_execute_many(
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 202, in _do_execute_many
v = values % escape(arg, conn)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 109, in _escape_args
return {key: conn.literal(val) for (key, val) in args.items()}
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 109, in <dictcomp>
return {key: conn.literal(val) for (key, val) in args.items()}
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/connections.py", line 517, in literal
return self.escape(obj, self.encoders)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/connections.py", line 510, in escape
return converters.escape_item(obj, self.charset, mapping=mapping)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/converters.py", line 25, in escape_item
val = encoder(val, mapping)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/converters.py", line 60, in escape_float
raise ProgrammingError("%s can not be used with MySQL" % s)
pymysql.err.ProgrammingError: inf can not be used with MySQL
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/dockeruser/.local/bin/run_sword", line 8, in <module>
sys.exit(main())
File "/home/dockeruser/.local/lib/python3.8/site-packages/podaac/sworddb/setup_sword.py", line 660, in main
load_nodes(engine, local_sword_path)
File "/home/dockeruser/.local/lib/python3.8/site-packages/podaac/sworddb/setup_sword.py", line 474, in load_nodes
insert_into_db(
File "/home/dockeruser/.local/lib/python3.8/site-packages/podaac/sworddb/setup_sword.py", line 119, in insert_into_db
insert_with_progress(data_frame, tbl_name, engine, datatype)
File "/home/dockeruser/.local/lib/python3.8/site-packages/podaac/sworddb/setup_sword.py", line 110, in insert_with_progress
cdf.to_sql(
File "/home/dockeruser/.local/lib/python3.8/site-packages/pandas/core/generic.py", line 2605, in to_sql
sql.to_sql(
File "/home/dockeruser/.local/lib/python3.8/site-packages/pandas/io/sql.py", line 589, in to_sql
pandas_sql.to_sql(
File "/home/dockeruser/.local/lib/python3.8/site-packages/pandas/io/sql.py", line 1406, in to_sql
raise err
File "/home/dockeruser/.local/lib/python3.8/site-packages/pandas/io/sql.py", line 1398, in to_sql
table.insert(chunksize, method=method)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pandas/io/sql.py", line 830, in insert
exec_insert(conn, keys, chunk_iter)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pandas/io/sql.py", line 747, in _execute_insert
conn.execute(self.table.insert(), data)
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1289, in execute
return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 325, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1481, in _execute_clauseelement
ret = self._execute_context(
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1845, in _execute_context
self._handle_dbapi_exception(
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2026, in _handle_dbapi_exception
util.raise_(
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 207, in raise_
raise exception
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1782, in _execute_context
self.dialect.do_executemany(
File "/home/dockeruser/.local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 193, in do_executemany
rowcount = cursor.executemany(statement, parameters)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 173, in executemany
return self._do_execute_many(
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 202, in _do_execute_many
v = values % escape(arg, conn)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 109, in _escape_args
return {key: conn.literal(val) for (key, val) in args.items()}
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 109, in <dictcomp>
return {key: conn.literal(val) for (key, val) in args.items()}
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/connections.py", line 517, in literal
return self.escape(obj, self.encoders)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/connections.py", line 510, in escape
return converters.escape_item(obj, self.charset, mapping=mapping)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/converters.py", line 25, in escape_item
val = encoder(val, mapping)
File "/home/dockeruser/.local/lib/python3.8/site-packages/pymysql/converters.py", line 60, in escape_float
raise ProgrammingError("%s can not be used with MySQL" % s)
sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) inf can not be used with MySQL
[SQL: INSERT INTO nodes (x, y, node_id, node_len, reach_id, wse, wse_var, width, width_var, facc, n_chan_max, n_chan_mod, obstr_type, grod_id, hfalls_id, dist_out, lakeflag, max_width, manual_add, meand_len, sinuosity, type, river_name, edit_flag, trib_flag, geometry, geojson, shp_origin, netcdf_origin) VALUES (%(x)s, %(y)s, %(node_id)s, %(node_len)s, %(reach_id)s, %(wse)s, %(wse_var)s, %(width)s, %(width_var)s, %(facc)s, %(n_chan_max)s, %(n_chan_mod)s, %(obstr_type)s, %(grod_id)s, %(hfalls_id)s, %(dist_out)s, %(lakeflag)s, %(max_width)s, %(manual_add)s, %(meand_len)s, %(sinuosity)s, %(type)s, %(river_name)s, %(edit_flag)s, %(trib_flag)s, %(geometry)s, %(geojson)s, %(shp_origin)s, %(netcdf_origin)s)]
[parameters: ({'x': 35.54928024096754, 'y': 48.973816972402396, 'node_id': 22513000310571, 'node_len': 182.37663400711062, 'reach_id': 22513000311, 'wse': 86.70000457763672, 'wse_var': 0.0, 'width': 48.0, 'width_var': 63.88888888888889, 'facc': 31062.407001929063, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 767350.0, 'lakeflag': 0, 'max_width': 48.0, 'manual_add': 0, 'meand_len': 926.6898868376883, 'sinuosity': 1.00460961813753, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.54928024096754 48.9738169724024)', 'geojson': '{"type": "Point", "coordinates": [35.54928024096754, 48.9738169724024]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.5519247860988, 'y': 48.973416584529545, 'node_id': 22513000310581, 'node_len': 221.02649269694666, 'reach_id': 22513000311, 'wse': 86.70000457763672, 'wse_var': 0.0, 'width': 48.0, 'width_var': 130.53061224489795, 'facc': 30911.348018808712, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 767571.0, 'lakeflag': 0, 'max_width': 48.0, 'manual_add': 0, 'meand_len': 821.4079780260256, 'sinuosity': 1.002259282897906, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.5519247860988 48.97341658452955)', 'geojson': '{"type": "Point", "coordinates": [35.5519247860988, 48.97341658452955]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.554561939095144, 'y': 48.9728723507765, 'node_id': 22513000310591, 'node_len': 182.97075114771178, 'reach_id': 22513000311, 'wse': 86.70000457763672, 'wse_var': 0.0, 'width': 60.0, 'width_var': 21.555555555555557, 'facc': 30735.11253850163, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 767754.0, 'lakeflag': 0, 'max_width': 60.0, 'manual_add': 0, 'meand_len': 803.8609932240819, 'sinuosity': 1.001867560357969, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.55456193909514 48.9728723507765)', 'geojson': '{"type": "Point", "coordinates": [35.55456193909514, 48.9728723507765]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.5572033652898, 'y': 48.97241278782153, 'node_id': 22513000310601, 'node_len': 219.30962324593565, 'reach_id': 22513000311, 'wse': 86.70000457763672, 'wse_var': 0.0, 'width': 48.0, 'width_var': 103.9591836734694, 'facc': 30584.05355538128, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 767973.0, 'lakeflag': 0, 'max_width': 48.0, 'manual_add': 0, 'meand_len': 1850.1714527568824, 'sinuosity': 1.002052191530238, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.5572033652898 48.97241278782153)', 'geojson': '{"type": "Point", "coordinates": [35.5572033652898, 48.97241278782153]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.559843889151956, 'y': 48.971936477036564, 'node_id': 22513000310611, 'node_len': 184.6876220486938, 'reach_id': 22513000311, 'wse': 86.70000457763672, 'wse_var': 0.0, 'width': 65.0, 'width_var': 131.13888888888889, 'facc': 30407.818075074203, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 768158.0, 'lakeflag': 0, 'max_width': 65.0, 'manual_add': 0, 'meand_len': 2024.5565293456827, 'sinuosity': 1.002082963392283, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.55984388915196 48.97193647703656)', 'geojson': '{"type": "Point", "coordinates": [35.55984388915196, 48.97193647703656]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.562483699477916, 'y': 48.9714472670169, 'node_id': 22513000310621, 'node_len': 217.59275381207772, 'reach_id': 22513000311, 'wse': 86.70000457763672, 'wse_var': 0.0, 'width': 48.0, 'width_var': 141.26530612244898, 'facc': 30256.75909195385, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 768376.0, 'lakeflag': 0, 'max_width': 48.0, 'manual_add': 0, 'meand_len': 2024.5565293456825, 'sinuosity': 1.002082963392283, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.56248369947792 48.9714472670169)', 'geojson': '{"type": "Point", "coordinates": [35.56248369947792, 48.9714472670169]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.5651302471697, 'y': 48.97109023078187, 'node_id': 22513000310631, 'node_len': 182.90527341880443, 'reach_id': 22513000311, 'wse': 86.55000305175781, 'wse_var': 0.022500457766, 'width': 54.0, 'width_var': 80.22222222222221, 'facc': 30080.52361164677, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 768559.0, 'lakeflag': 0, 'max_width': 54.0, 'manual_add': 0, 'meand_len': 2024.5565293456827, 'sinuosity': 1.002082963392283, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.5651302471697 48.97109023078187)', 'geojson': '{"type": "Point", "coordinates": [35.5651302471697, 48.97109023078187]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 35.567776091067664, 'y': 48.970720294945444, 'node_id': 22513000310641, 'node_len': 215.87588439057072, 'reach_id': 22513000311, 'wse': 86.0999984741211, 'wse_var': 0.0, 'width': 48.0, 'width_var': 176.20408163265307, 'facc': 29929.464628526417, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 768774.0, 'lakeflag': 0, 'max_width': 48.0, 'manual_add': 0, 'meand_len': 2024.5565293456825, 'sinuosity': 1.002082963392283, 'type': 1, 'river_name': 'Oril', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (35.56777609106766 48.97072029494544)', 'geojson': '{"type": "Point", "coordinates": [35.56777609106766, 48.97072029494544]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'} ... displaying 10 of 23441 total bound parameter sets ... {'x': 26.897974680058578, 'y': 51.90992157070326, 'node_id': 22547000040551, 'node_len': 230.39504611191114, 'reach_id': 22547000041, 'wse': 130.0, 'wse_var': 0.0, 'width': 42.0, 'width_var': 57.67346938775511, 'facc': 26814.25636950096, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 1634021.0, 'lakeflag': 0, 'max_width': 42.0, 'manual_add': 0, 'meand_len': 1254.8351291761303, 'sinuosity': 1.311497870025763, 'type': 1, 'river_name': 'Horyn', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (26.89797468005858 51.90992157070326)', 'geojson': '{"type": "Point", "coordinates": [26.89797468005858, 51.90992157070326]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'}, {'x': 26.89728513331836, 'y': 51.908487534480784, 'node_id': 22547000040561, 'node_len': 208.55913026018607, 'reach_id': 22547000041, 'wse': 130.0, 'wse_var': 0.0, 'width': 48.0, 'width_var': 41.04, 'facc': 26812.037506324563, 'n_chan_max': 1, 'n_chan_mod': 1, 'obstr_type': 0, 'grod_id': 0, 'hfalls_id': 0, 'dist_out': 1634230.0, 'lakeflag': 0, 'max_width': 48.0, 'manual_add': 0, 'meand_len': 1254.8351291761305, 'sinuosity': 1.311497870025764, 'type': 1, 'river_name': 'Horyn', 'edit_flag': 'NaN', 'trib_flag': 0, 'geometry': 'POINT (26.89728513331836 51.90848753448078)', 'geojson': '{"type": "Point", "coordinates": [26.89728513331836, 51.90848753448078]}', 'shp_origin': 'eu_sword_nodes_hb22_v16.shp', 'netcdf_origin': 'eu_apriori_rivers_v16.nc'})]
(Background on this error at: https://sqlalche.me/e/14/f405)

Fill in missing OPERA images

Depends on GITC releases.

A large number of OPERA images are missing from Worldview due to GITC processing timeout errors. Once GITC is ready, need to reprocess the days where there were timeouts to fill in the missing images in Worldview

Version update for Measures SSH

Old layer: SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL1812
New layer: SEA_SURFACE_HEIGHT_ALT_GRIDS_L4_2SATS_5DAY_6THDEG_V_JPL2205

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.