def ismn_metadata(path): """ Goes through a downloaded ISMN dataset and reads the necessary metadata needed for the viewer. Parameters ---------- path: string Folder in which the ISMN data is stored Returns ------- metadata: dict Metadata dictionary. """ metadata = {"Networks": []} iface = ISMN_Interface(path) for networkname in iface.list_networks(): network_dict = { "networkID": networkname, "network_abstract": "", "network_status": "", "network_country": "", "network_continent": "", "network_op_start": "", "network_op_end": "", "network_type": "project", "network_constraints": "", "network_reference": "", "network_url_data": "", "network_url": "", "network_acknowledge": "", "network_variables": "", "network_depths": "", "network_sensors": "", "Stations": []} metadata['Networks'].append(network_dict) station_list = network_dict['Stations'] stations = iface.list_stations(network=networkname) for stationname in stations: station = iface.get_station(stationname, network=networkname) dmin, dmax = station.get_min_max_obs_timestamp() if dmin is None or dmax is None: # No soil moisture measured at this station continue station_dict = { "station_abbr": stationname, "lat": station.latitude, "lng": station.longitude, "comment": None, "stationID": stationname, "extMetadata": None, "station_name": stationname, "variableText": '<br>'.join(np.unique(station.variables)), "depthText": get_depth_text(station.depth_from, station.depth_to, station.variables), "sensorText": '<br>'.join(np.unique(station.sensors)), "maximum": dmax.isoformat(), "minimum": dmin.isoformat() } station_list.append(station_dict) return metadata