a- add all gschliefgraben-Glasfaser sensors

This commit is contained in:
Arno Kaimbacher 2022-03-21 15:09:08 +01:00
parent 8621510230
commit fb010174b7
5 changed files with 337 additions and 46 deletions

View File

@ -0,0 +1,99 @@
INSERT INTO gba.category(
category_id, identifier, name, description)
VALUES (1, 'SOS', 'SOS', 'Default SOS category');
INSERT INTO gba.codespace(
codespace_id, name)
VALUES (1, 'http://www.opengis.net/def/nil/OGC/0/unknown');
INSERT INTO gba.format(
format_id, definition) VALUES
(1, 'http://www.opengis.net/sensorml/2.0'),
(2, 'http://inspire.ec.europa.eu/featureconcept/PointObservation'),
(3, 'http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement'),
(4, 'http://inspire.ec.europa.eu/featureconcept/PointTimeSeriesObservation'),
(5, 'http://www.opengis.net/def/samplingFeatureType/OGC-OM/2.0/SF_SamplingPoint'),
(6, 'http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_TextObservation'),
(7, 'application/vnd.geo+json'),
(8, 'http://www.opengis.net/def/nil/OGC/0/unknown'),
(9, 'http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_CategoryObservation');
INSERT INTO gba.phenomenon(
phenomenon_id, identifier, sta_identifier, name) VALUES
(1, 'RainfallAccumulated', 'RainfallAccumulated', 'RainfallAccumulated'),
(2, 'WindDirection', 'WindDirection', 'WindDirection'),
(3, 'Humidity', 'Humidity', 'Humidity'),
(4, 'Windchill', 'Windchill', 'Windchill'),
(5, 'AirTemperature', 'AirTemperature', 'AirTemperature'),
(6, 'Dewpoint', 'Dewpoint', 'Dewpoint'),
(7, 'Luminance', 'Luminance', 'Luminance'),
(8, 'AthmosphericPressure', 'AthmosphericPressure', 'AthmosphericPressure'),
(9, 'WindSpeed', 'WindSpeed', 'WindSpeed'),
(10, 'Sunshine', 'Sunshine', 'Sunshine'),
(11, 'HailAccumulated', 'HailAccumulated', 'HailAccumulated'),
(12, 'WindSpeedMinimum', 'WindSpeedMinimum', 'WindSpeedMinimum'),
(13, 'WindSpeedAverage', 'WindSpeedAverage', 'WindSpeedAverage'),
(14, 'HailIntensity', 'HailIntensity', 'HailIntensity'),
(15, 'RainfallPeakIntensity', 'RainfallPeakIntensity', 'RainfallPeakIntensity'),
(16, 'WindSpeedMaximum', 'WindSpeedMaximum', 'WindSpeedMaximum'),
(17, 'WindDirectionMaximum', 'WindDirectionMaximum', 'WindDirectionMaximum'),
(18, 'RainfallIntensity', 'RainfallIntensity', 'RainfallIntensity'),
(19, 'WindDirectionMinimum', 'WindDirectionMinimum', 'WindDirectionMinimum'),
(20, 'HailDuration', 'HailDuration', 'HailDuration'),
(21, 'RainfallDuration', 'RainfallDuration', 'RainfallDuration'),
(22, 'InSystemTemperature', 'InSystemTemperature', 'InSystemTemperature'),
(23, 'HailPeakIntensity', 'HailPeakIntensity', 'HailPeakIntensity'),
(24, 'WindDirectionAverage', 'WindDirectionAverage', 'WindDirectionAverage'),
(25, 'WindMaxGust', 'WindMaxGust', 'WindMaxGust'),
(26, 'Visibility', 'Visibility', 'Visibility'),
(27, 'WindSpeedKmh', 'WindSpeedKmh', 'WindSpeedKmh'),
(28, 'WindSpeedBft', 'WindSpeedBft', 'WindSpeedBft'),
(29, 'WindSpeedMperSec', 'WindSpeedMperSec', 'WindSpeedMperSec'),
(30, 'ShortwaveRadiation', 'ShortwaveRadiation', 'ShortwaveRadiation'),
(31, 'WeatherCode', 'WeatherCode', 'WeatherCode'),
(32, 'WeatherCodeText', 'WeatherCodeText', 'WeatherCodeText'),
(33, 'WindDirectionText', 'WindDirectionText', 'WindDirectionText'),
(34, 'Roll', 'Roll', 'Roll'),
(35, 'Slope', 'Slope', 'Slope'),
(36, 'HumanVisualPerception', 'HumanVisualPerception', 'HumanVisualPerception'),
(37, 'Elevation', 'Elevation', 'Elevation');
INSERT INTO gba.unit(
unit_id, symbol) VALUES
(1, 'klux'),
(2, 'hPa'),
(3, 'degC'),
(4, '%'),
(5, 'km_h'),
(6, 'min'),
(7, 'l_m^2'),
(8, 'deg'),
(9, 'm_s'),
(10, 'mm_h'),
(11, 's'),
(12, 'hits_cm-2_h'),
(13, 'hits_cm-2'),
(14, 'mm'),
(15, 'W_m^2'),
(16, 'bft'),
(17, 'm');
offering observation_type 9 10, 11
PointObservation, OM_Measurement, PointTimeSeriesObservation

View File

@ -1,34 +1,35 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""This module does blah blah.""" """This module does blah blah."""
from ast import List
import requests import requests
# from insert_sensor.transactional import insert_sensor # from insert_sensor.transactional import insert_sensor
from insert_sensor.wrapper import (Offering, FoI, Procedure, SensorType) from insert_sensor.wrapper import (Offering, FoI, Procedure, SensorType)
# import json # import json
class Sos(): class Sensor:
""" """
A class to represent a sos service. A class to represent an input sensor.
... ...
Attributes Attributes
---------- ----------
sosurl : str name : str
first name of the person first name of the person
token : str x : float
token to access soso service
y : float
token to access soso service token to access soso service
""" """
def __init__(self, url, token=''): def __init__(self, name: str, x_coord: float, y_coord: float,
self.sosurl = str(url) # url to access the SOS feature_id: str, feature_name: str):
self.token = str(token) # security token, optional self.name = name
# Test if URL exists self.x_coord = x_coord
try: self.y_coord = y_coord
test = requests.get(self.sosurl) self.feature_id = feature_id
test.raise_for_status() self.feature_name = feature_name
except requests.HTTPError:
print("The URL is not valid")
def main(): def main():
@ -42,7 +43,7 @@ def main():
# offering = Offering( # offering = Offering(
# "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/", # "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/",
# "inclino1_02", # "inclino1_02",
# "Inklinometer inclino1_02, Gschliefgraben Glasfaser" # "Inklinometer, Gschliefgraben Glasfaser"
# ) # )
# procedure = Procedure( "inclino1_02","inclino1_02") # procedure = Procedure( "inclino1_02","inclino1_02")
# foi = FoI("degree", "m", (13.774966, 47.910849, 0.0), # foi = FoI("degree", "m", (13.774966, 47.910849, 0.0),
@ -52,7 +53,7 @@ def main():
# offering = Offering( # offering = Offering(
# "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/", # "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/",
# "inclino1_05", # "inclino1_05",
# "Inklinometer inclino1_05, Gschliefgraben Glasfaser" # "Inklinometer, Gschliefgraben Glasfaser"
# ) # )
# procedure = Procedure("inclino1_05", "inclino1_05") # procedure = Procedure("inclino1_05", "inclino1_05")
# foi = FoI("degree", "m", (13.774966, 47.910849, 0.0), # foi = FoI("degree", "m", (13.774966, 47.910849, 0.0),
@ -62,23 +63,191 @@ def main():
# offering = Offering( # offering = Offering(
# "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/", # "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/",
# "inclino1_14", # "inclino1_14",
# "Inklinometer inclino1_14, Gschliefgraben Glasfaser" # "Inklinometer, Gschliefgraben Glasfaser"
# ) # )
# procedure = Procedure("inclino1_14", "inclino1_14") # procedure = Procedure("inclino1_14", "inclino1_14")
# foi = FoI("degree", "m", (13.774966, 47.910849, 0.0), # foi = FoI("degree", "m", (13.774966, 47.910849, 0.0),
# "inclino1-glasfaser-gschliefgraben", # "inclino1-glasfaser-gschliefgraben",
# "inclino1-glasfaser-gschliefgraben")
# offering = Offering(
# "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/",
# "inclino1_06",
# "Inklinometer, Gschliefgraben Glasfaser"
# )
# procedure = Procedure("inclino1_06", "inclino1_06")
# foi = FoI("degree", "m", (13.774966, 47.910849, 0.0),
# "inclino1-glasfaser-gschliefgraben",
# "Glasfaser Untersuchungen am Gschliefgraben (Gmunden)") # "Glasfaser Untersuchungen am Gschliefgraben (Gmunden)")
sensor_list: List[Sensor] = []
# appending instances to list
## inclino1_01 bis inclino1_20
sensor_list.append(
Sensor('inclino1_01', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_02', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_03',13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_04', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_05', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_06', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_07', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_08', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_09', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_10', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_11', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_12', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_13', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_14', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_15', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_16', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_17', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_18', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_19', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino1_20', 13.816940062459931, 47.883893347112163,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
## inclino2_04 bis inclino2_22
sensor_list.append(
Sensor('inclino2_04', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_05', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_06', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_07', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_08', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_09', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_10', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_11', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_12', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_13', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_14', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_15', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_16',13.817740197926463, 47.883901327648893,
"bohrloch1-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_17', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_18',13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_19', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor_list.append(
Sensor('inclino2_20', 13.817740197926463, 47.883901327648893,
"bohrloch2-glasfaser-gschliefgraben",
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)"))
sensor: Sensor
for sensor in sensor_list:
# platform wolfsegg
offering = Offering( offering = Offering(
"https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/", "https://geomon.geologie.ac.at/52n-sos-webapp/api/offerings/",
"inclino1_06", sensor.name,
"Inklinometer inclino1_06, Gschliefgraben Glasfaser" "Inklinometer, Gschliefgraben Glasfaser"
) )
procedure = Procedure("inclino1_06", "inclino1_06") procedure = Procedure(sensor.name, sensor.name)
foi = FoI("degree", "m", (13.774966, 47.910849, 0.0), foi = FoI("degree", "m", (sensor.x_coord, sensor.y_coord, 0.0),
"inclino1-glasfaser-gschliefgraben", sensor.feature_id, sensor.feature_name)
"Glasfaser Untersuchungen am Gschliefgraben (Gmunden)")
# now insert sensor via rest service:
sensor_type = SensorType("inclinometer") sensor_type = SensorType("inclinometer")
post_data = insert_sensor(offering, procedure, foi, sensor_type) post_data = insert_sensor(offering, procedure, foi, sensor_type)
print(post_data) print(post_data)

View File

@ -22,7 +22,7 @@ from sqlalchemy import func, asc, desc
# from db.pg_models import Platform # from db.pg_models import Platform
from db.models import ( from db.models import (
ObservationSchema, Person, PersonSchema, Observation, ObservationSchema, Person, PersonSchema, Observation,
create_pg_session, Dataset, Procedure, Phenomenon, Platform) create_pg_session, Dataset, Procedure, Phenomenon, Platform, Format)
from gschliefgraben_glasfaser.my_api import MyApi from gschliefgraben_glasfaser.my_api import MyApi
@ -56,13 +56,36 @@ def main():
platform_exists: bool = pg_session.query(Platform.id).filter_by( platform_exists: bool = pg_session.query(Platform.id).filter_by(
sta_identifier=platform_sta_identifier).scalar() is not None sta_identifier=platform_sta_identifier).scalar() is not None
if platform_exists: # if platform_exists:
# sensor_platform = pg_session.query(Platform.id) \
# .filter(Platform.sta_identifier == platform_sta_identifier) \
# .first()
# slope_dataset.fk_platform_id = sensor_platform.id
# else:
# exit()
if not platform_exists:
sensor_platform = Platform()
# max_id = pg_session.query(func.max(Platform.id)).scalar()
# sensor_platform.id = max_id + 1
sensor_platform.sta_identifier = platform_sta_identifier.lower()
sensor_platform.identifier = platform_sta_identifier.lower()
sensor_platform.name = platform_sta_identifier.lower()
slope_dataset.platform = sensor_platform
else:
sensor_platform = pg_session.query(Platform.id) \ sensor_platform = pg_session.query(Platform.id) \
.filter(Platform.sta_identifier == platform_sta_identifier) \ .filter(Platform.sta_identifier == platform_sta_identifier) \
.first() .first()
slope_dataset.fk_platform_id = sensor_platform.id slope_dataset.fk_platform_id = sensor_platform.id
else:
exit() format_exists: bool = pg_session.query(Format.id).filter_by(
definition="http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement"
).scalar() is not None
if format_exists:
sensor_format = pg_session.query(Format.id) \
.filter(Format.definition ==
"http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement") \
.first()
slope_dataset.fk_format_id = sensor_format.id
# create all the observation for the given sensor names # create all the observation for the given sensor names
create_observations(sensor, slope_dataset) create_observations(sensor, slope_dataset)
@ -98,7 +121,7 @@ def create_observations(sensor: str, slope_dataset: Dataset):
# consider the start date as 2021-february 1 st # consider the start date as 2021-february 1 st
start_date = date(2022, 1, 1) start_date = date(2022, 1, 1)
# consider the end date as 2021-march 1 st # consider the end date as 2021-march 1 st
end_date = date(2022, 3, 6) end_date = date(2022, 3, 20)
# delta time # delta time
delta = timedelta(days=7) delta = timedelta(days=7)
@ -269,6 +292,6 @@ def create(person_json: PersonSchema):
if __name__ == "__main__": if __name__ == "__main__":
load_dotenv(find_dotenv()) load_dotenv(find_dotenv())
sensor_list1 = os.environ.get('GLASFASER_GSCHLIEFGRABEN_SENSORS', []) sensor_list1 = os.environ.get('GLASFASER_GSCHLIEFGRABEN_SENSORS', []).replace(r'\n', '\n')
print(f'sensors: {sensor_list1} .') print(f'sensors: {sensor_list1} .')
main() main()

View File

@ -98,7 +98,7 @@ def create_observations(sensor: str, slope_dataset: Dataset):
def create_db_observations(sensor: str, query_date, test_api, pg_session, dataset: Dataset): def create_db_observations(sensor: str, query_date, test_api, pg_session, dataset: Dataset):
''' to do ''' ''' parse each observation '''
query_date_obj = datetime.strptime(query_date, "%Y-%m-%d") query_date_obj = datetime.strptime(query_date, "%Y-%m-%d")
data = test_api.getSensorData(sensor, query_date, query_date) data = test_api.getSensorData(sensor, query_date, query_date)
observation_array = (data['FeatureCollection'] observation_array = (data['FeatureCollection']

View File

@ -105,7 +105,7 @@ def main():
# appending instances to list # appending instances to list
sensor_list.append( sensor_list.append(
Sensor('gschliefgraben_bohrloch_1', 13.774966, 47.910849, Sensor('gschliefgraben_bohrloch_1', 13.808378638676, 47.882871028831,
"bohrloch1-glasfaser-gschliefgraben", "Piezometer1 am Gschliefgraben")) "bohrloch1-glasfaser-gschliefgraben", "Piezometer1 am Gschliefgraben"))
sensor_list.append( sensor_list.append(
Sensor('gschliefgraben_bohrloch_2', 13.80957276439, 47.882524348741, Sensor('gschliefgraben_bohrloch_2', 13.80957276439, 47.882524348741,