Spis treści

Przykłady Użycia RDNR

Rozmieszczenie instancji parametrów monitorwania przedstawia poniższy rysunek.

skrzyzowanie_agh.jpg

Umieszczanie informacji na mapie statycznej

Baza danych: osmosis_db, baza zostanie dostarczona później.

Aby stworzyć opis powyższego przykładu w bazie danych, należy:

Określenie elementów way

Określenia należy dokonać na podstawie danych znajdujących się w bazie, zaimportowanych z OSM. Dla powyższego przykładu:

Określenie współrzędnych początków i końców pasów

Współrzędne można określić na podstawie pomiaru w terenie, lub np. w oparciu o zdjęcie lotnicze w Google Maps.

Zastosowano następujące określenia pasów:

oraz kombinacje powyższych.

Dla powyższego przykładu mamy następujące współrzędne początków i końców pasów (oraz ew. punktów pośrednich):

Dodanie elementów smnode

Aby dodać węzły smnode dla pasów należy użyć następującego kodu SQL:

INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904814 50.069937)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904334 50.070009)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.905290 50.069875)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904341 50.070038)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.905308 50.069906)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904351 50.070070)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903589 50.069064)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903919 50.069815)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903628 50.069037)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903966 50.069800)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.902561 50.070180)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903616 50.070031)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.902566 50.070212)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903624 50.070064)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.902915 50.070193)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.903642 50.070089)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904298 50.070792)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904045 50.070293)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904257 50.070800)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904154 50.070636)', 4326));
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.904000 50.070299)', 4326));

W wyniku powyższych zapytań na istniejącej bazie danych uzyskano następujące id elementów smnode:

Dodanie elementów lane

W oparciu o utworzone elementy smnode możemy utworzyć elementy lane. Zakładamy, że numer pasa 1 oznacza pas skrajnie prawy, kolejne pasy (idąc w lewo) mają numery 2, 3, itd.

dla drogi od północy (ul. Piastowska), id 24193276

INSERT INTO lanes (NUMBER, way_id) VALUES (2, 24193276);    -- id: 1
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (1, 18, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (1, 19, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (1, 24193276);    -- id: 2
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (2, 20, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (2, 21, 2);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (2, 22, 3);

dla drogi od południa (ul. Piastowska), id 24193282

INSERT INTO lanes (NUMBER, way_id) VALUES (2, 24193282);    -- id: 3
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (3, 8, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (3, 9, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (1, 24193282);    -- id: 4
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (4, 10, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (4, 11, 2);

dla drogi od zachodu (ul. Armii Krajowej), id 114324804

INSERT INTO lanes (NUMBER, way_id) VALUES (1, 114324804);    -- id: 5
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (5, 12, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (5, 13, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (2, 114324804);    -- id: 6
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (6, 14, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (6, 15, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (3, 114324804);    -- id: 7
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (7, 16, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (7, 17, 2);

dla drogi od wschodu (ul. Nawojki), id 21929772

INSERT INTO lanes (NUMBER, way_id) VALUES (1, 21929772);    -- id: 8
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (8, 6, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (8, 7, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (2, 21929772);    -- id: 9
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (9, 4, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (9, 5, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (3, 21929772);    -- id: 10
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (10, 2, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (10, 3, 2);

Punkty pomiarowe

Poniżej podano koordynaty punktów pomiarowych: ZV-S, ZV-N, ZV-W, ZV-E.

ZV-W:
50.070183, 19.903592

ZV-S:
50.069798, 19.903781

ZV-E:
50.069902, 19.904454

ZV-N:
50.070301, 19.904186

Umieszczanie informacji o parametrach monitorowania

Baza danych: rdnr, baza zostanie dostarczona później.

Dodanie informacji o parametrach monitorowania

Typy parametrów monitorowania

Skrypt: sample_data_piastowska.sql

Uwaga: informacje o sensorach zostały w niniejszym przykładzie pominięte. W środowisku produkcyjnym powinny być umieszczone w odpowiednich tabelach.

Instancje parametrów monitorowania

Pozostałe instancje

Analogicznie należy dodać pozostałe instancje dotyczące instancji reprezentujących pomiary: K1-W, K2-W, K3-W, K1-E, K2-E, K3-E, K2-N, V-S, V-W, V-E, V-N, Z-S, Z-N, Z-W, Z-E.

Instancje niezwiązane

Należy zwrócić uwagę, że zogdnie z Ontologią, instancja parametru monitorowania nie musi być związana z obiektem mapy statycznej (turn, area, lane, crossroad). W tym przypadku do lokalizacji instancji wykorzystywane są koordynaty geograficzne umieszczane w tabeli imp_location. Ponieważ porządane jest wyszukiwanie z uwzględnieniem koordynatów geograficznych rdnr musi zostac wzbogacone o rozszerzenie PostGIS:

DBNAME=rdnr
POSTGIS_DIR=/usr/share/postgresql/8.4/contrib/postgis-1.5
createlang -d $DBNAME plpgsql
psql -d $DBNAME -f $POSTGIS_DIR/postgis.sql
psql -d $DBNAME -f $POSTGIS_DIR/spatial_ref_sys.sql

Ponadto do tabeli imp_location należy dodać kolumne przestrzenną geom:

SELECT AddGeometryColumn('imp_location', 'geom', 4326, 'GEOMETRY', 2);

Oraz zapewnić synchronizację wartości latitude i longitude z kolumną przestrzenną :

UPDATE imp_location SET geom=GeomFromText('POINT('||longitude||' '||latitude||')', 4326)

Powyższe wymagania zostały spełnione: zainstalowano rozszerzenie PostGIS dla rdnr oraz zaprogramowano odpowiedni wyzwalacz na tabeli imp_location automatycznie uaktualniający wartości kolumny geom na podstawie latitude i longitude:

-- Adding geom column to imp_location
 
SELECT AddGeometryColumn('imp_location', 'geom', 4326, 'GEOMETRY', 2);
 
-- A trigger for generating appropriate values in imp_location.geom, complying with PostGIS.
 
CREATE OR REPLACE FUNCTION imp_location_geom_update_trg() RETURNS TRIGGER AS $$ 
BEGIN 
  NEW.geom=GeomFromText('POINT(' ||NEW.longitude||' '||NEW.latitude||')', 4326); 
  RETURN NEW; 
END; 
$$ LANGUAGE 'plpgsql';
 
CREATE TRIGGER imp_location_geom BEFORE INSERT OR UPDATE ON imp_location FOR each ROW EXECUTE PROCEDURE imp_location_geom_update_trg();

Dodanie wartości parametrów monitorowania

dla drogi od północy (ul. Piastowska)

W poniższym przykładzie dodano 3 wartości parametrów monitorowania do instancji związanej z pasem FR na północnym odcinku ul. Piastowskiej (oznaczenie K1-N na rysunku skrzyżowania). Są to pierwsze trzy rekordy z przykładowych danych pochodzących z wideodetektora (kolumna K1-N, zamieszczone na początku dokumentu).

-- Wartości parametrów monitorowania.
 
INSERT INTO param_monitoringparametervalue (
       id,
       confidence,
       PRECISION,
       valid_until,
       time_measured,
       VALUE,
       instance
       ) VALUES 
       ( -- K1-N
        1,
        1,
        '1',
        '2012-04-30 14:15:55',
        '2012-04-18 14:15:55',
        '18',
        1
       ),
       ( -- K1-N
        2,
        1,
        '1',
        '2012-04-30 14:17:25',
        '2012-04-18 14:17:25',
        '18',
        1
       ),
       ( -- K1-N
        3,
        1,
        '1',
        '2012-04-30 14:18:55',
        '2012-04-18 14:18:55',
        '19',
        1
       )
;
 
-- metadata
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES 
       (
        1,
        'param_monitoringparametervalue',
        'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
        ),
       (
        2,
        'param_monitoringparametervalue',
        'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
        ),
       (
        3,
        'param_monitoringparametervalue',
        'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
        )
;

dla drogi od południa (ul. Piastowska)

W poniższym przykładzie dodano 3 wartości parametrów monitorowania do instancji związanej z punktem V-S na południowym odcinku ul. Piastowskiej (oznaczenie V-S na rysunku skrzyżowania). Są to pierwsze trzy rekordy z przykładowych danych pochodzących z wideodetektora (kolumna V-S, zamieszczone na początku dokumentu).

INSERT INTO param_monitoringparametervalue (
       id,
       confidence,
       PRECISION,
       valid_until,
       time_measured,
       VALUE,
       instance
       ) VALUES 
       ( -- V-S
	4,
       	1,
       	'1',
	'2012-04-30 14:15:55',
	'2012-04-18 14:15:55',
	'31',
	2
       ),
       ( -- V-S
	5,
       	1,
       	'1',
	'2012-04-30 14:17:25',
	'2012-04-18 14:17:25',
	'34',
	2
       ),
       ( -- V-S
	6,
       	1,
       	'1',
	'2012-04-30 14:18:55',
	'2012-04-18 14:18:55',
	'33',
	2
       )
;
 
-- metadata
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES 
       (
	4,
       	'param_monitoringparametervalue',
       	'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
	),
       (
	5,
       	'param_monitoringparametervalue',
       	'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
	),
       (
	6,
       	'param_monitoringparametervalue',
       	'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
	)
;

Odczyt parametrów monitorowania z danego obszaru

Instancje parametrów monitorowania mogą być przyporządkowane do obiektów Mapy Statycznej: Area, Crossroads, Lane, Turn, albo do lokalizacji geograficznej określonej przez długość, szerokość, wysokość oraz promień (na podstawie Ontologii parametrów monitorowania: http://mapserv.kt.agh.edu.pl/ontologies/param.owl )

Zatem procedura odczytu parametrów monitorowania dla zdefiniowanego obszaru powinna przebiegać następująco:

  1. Określenie obszaru będącego krzywą zamkniętą: A.
  2. Odnalezienie odpowiednio identyfikatorów obiektów Area, Crossroads, Lana lub Turn na mapie statycznej (baza osmosis_db): zbiór identyfikatorów Id
  3. Identyfikacja tabel w RDNR (baza rdnr) przechowujących dane o instancjach i przyporządkowaniu instancji, na podstawie tabeli metadanych oraz ontologii
  4. Identyfikacja instancji skojarzonych z Id: zbiór identyfikatorów instajcji IdI
  5. Poszerzenie zbioru IdI o instancje o zdefiniowanej lokalizacji (niepowiązane) przecinającej się z A
  6. Odczyt wartości parametrów monitorowania dla instancji IdI.

Identyfikaotry Lane, Crossroad, Turn, Area

W niniejszej sekscji opisano znajdywanie identyfikatorów obiektów, do których mogą być przyporządkowane instancje parametrów monitorowania (baza osmosis_db) tj. Lane, Crossroad, Turn, Area.

Proces poszukiwania należy rozpocząć od zdefiniowania obszaru za pomocą współrzędnych geograficznych, przykładowo:

POLYGON((19.9 50.1, 19.9 49.98, 20 49.98, 20 50.1, 19.9 50.1))

Wykorzystując funkcje PostGIS można odnaleźć identyfikatory obiektów:

-- dla Crossroad
SELECT id FROM crossroads 
WHERE ST_Intersects(boundary, ST_GeomFromText('POLYGON((19.9 50.1, 19.9 49.98, 20 49.98, 20 50.1, 19.9 50.1))', 4326));
 
-- dla Area
SELECT ways.id FROM ways, way_tags, way_geometry 
WHERE way_tags.k='area' AND way_tags.v='yes' AND way_tags.way_id=ways.id AND 
      ST_Intersects(way_geometry.geom, ST_GeomFromText('POLYGON((19.9 50.1, 19.9 49.98, 20 49.98, 20 50.1, 19.9 50.1))', 4326)) AND 
      way_geometry.way_id=ways.id;
 
-- dla Lane
SELECT id FROM lanes 
WHERE ST_Intersects(geom, ST_GeomFromText('POLYGON((19.9 50.1, 19.9 49.98, 20 49.98, 20 50.1, 19.9 50.1))', 4326));
 
-- dla Turn
SELECT id FROM turns 
WHERE ST_Intersects(geom, ST_GeomFromText('POLYGON((19.9 50.1, 19.9 49.98, 20 49.98, 20 50.1, 19.9 50.1))', 4326));

Za pomocą w/w otrzymuje się zbiór Id.

Identyfikacja table RDNR na podstawie Ontologii

Należy wybrać klasę oraz własność klasy, dla której chcemy odnaleźć wartości w rdnr. Przykładowo, wartości parametrów monitorowania definiowane są przez własność http://mapserv.kt.agh.edu.pl/ontologies/param.owl#value klasy http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringParameterValue . Zapytanie:

SELECT tbl, att FROM 
meta_param 
WHERE 
cls='http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringParameterValue' 
AND prop='http://mapserv.kt.agh.edu.pl/ontologies/param.owl#value';
 
              tbl               |  att  
--------------------------------+-------
 param_MonitoringParameterValue | VALUE
(1 ROW)

Identyfikuje lokalizację danych w tabeli param_MonitoringParameterValue, kolumna: value.

Podobnie należy odnaleźć informacje na temat powiązania wartości z instancjami oraz instanacji z obiektami z Mapy Statycznej.

Odczyt wartości parametrów monitorowania dla instancji powiązanych z obiektami Mapy Statycznej

Mając zidentyfikowane tabele można wykonać zapytanie pobierające odpowiednie wartości parametrów monitorowania powiązane z obiektami Mapy Statycznej.

Przykładowo dla obiektów Lane o identyfikatorach: 1,2,3,4,5,6,7,8,9,10 (identyfikatory zwrócone jako rezultat zapytania identyfikującego obiekty Lane w podanym obszarze, w poprzedniej sekcji) zapytanie zwracające wszystkie wartości parametrów monitorowania ma postać:

SELECT label, time_measured,VALUE 
FROM param_monitoringparametervalue v 
JOIN param_monitoringparameterinstance i ON (v.instance=i.id) 
JOIN param_instanceassignment a ON (i.assignment=a.id) 
JOIN param_instanceassignment_sm_lane l ON (l.param_instanceassignment=a.id) 
WHERE sm_lane IN (1,2,3,4,5,6,7,8,9,10);
 
 label |    time_measured    | VALUE 
-------+---------------------+-------
 K1-N  | 2012-04-18 14:15:55 | 18
 K1-N  | 2012-04-18 14:17:25 | 18
 K1-N  | 2012-04-18 14:18:55 | 19
(3 ROWS)

Odczyt wartości parametrów monitorowania dla instancji niepowiązanych

Dla wartości parametrów monitorowania instancji niepowiązanych z Mapą Statyczną, należy posłużyć się bezpośrednio koordynatami wybranego obszaru. Poniższe przykładowe zapytanie zwraca informacje o wartościach parametrów monitorowania dla instancji niepowiązanych, których punktowe współrzędne geograficzne znajdują się w zdefinuowanym obszarze.

SELECT label, time_measured,VALUE 
FROM param_monitoringparametervalue v 
JOIN param_monitoringparameterinstance i ON (v.instance=i.id) 
JOIN param_instanceassignment a ON (i.assignment=a.id) 
JOIN imp_location l ON (l.id=a.location) 
WHERE ST_Intersects(geom, ST_GeomFromText('POLYGON((19.9 50.1, 19.9 49.98, 20 49.98, 20 50.1, 19.9 50.1))', 4326));
 
 label |    time_measured    | VALUE 
-------+---------------------+-------
 V-S   | 2012-04-18 14:15:55 | 31
 V-S   | 2012-04-18 14:17:25 | 34
 V-S   | 2012-04-18 14:18:55 | 33
(3 ROWS)

W przypadku zdefiniowania lokalizacji instancji za pomocą współrzędnych geograficznych i promienia (param_instanceassignment.radius) można posłużyć się poniższymi funkcjami PostGIS:

Odległość punktu od obszaru:

SELECT ST_Distance(ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))'), ST_GeomFromText('POINT(12 5)'));
 
Wersja z podzapytaniem i rzutowaniem:
SELECT ST_Distance(ST_GeomFromText((SELECT 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))')::text), ST_GeomFromText('POINT(13 12)'));

Parking D-6

Mapa statyczna

INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9145686 50.0665605)', 4326)); -- 23
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9146225 50.0666678)', 4326)); -- 24
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9146608 50.0666889)', 4326)); -- 25
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9147913 50.0666598)', 4326)); -- 26
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9148792 50.0666689)', 4326)); -- 27
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9152793 50.0665842)', 4326)); -- 28
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9148409 50.0666334)', 4326)); -- 29
INSERT INTO smnodes (geom) VALUES (ST_GeomFromText('POINT(19.9147203 50.0664021)', 4326)); -- 30
INSERT INTO lanes (NUMBER, way_id) VALUES (1, 286755420);    -- 11
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (11, 29, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (11, 30, 2);
INSERT INTO lanes (NUMBER, way_id) VALUES (1, 323800732);    -- 12
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (12, 26, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (12, 25, 2);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (12, 24, 3);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (12, 23, 4);
INSERT INTO lanes (NUMBER, way_id) VALUES (1, 323800732);    -- 13
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (13, 27, 1);
INSERT INTO lane_smnodes (lane_id, smnode_id, sequence_id) VALUES (13, 28, 2);

Mapa dynamiczna

Parametr monitorowania: obecność pojazdu.

BEGIN;
 
-- MonitoringParameterType
 
-- video_presence
-- http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.PresenceVehiclesMonitoringaParameterType -- FIXME might be not present in the ontology, unable to verify the ontology is offline
 
INSERT INTO param_monitoringparametertype (
       id,
       label,
       applies_to_lane,
       applies_to_area,
       applies_to_crossroads,
       applies_to_location,
       applies_to_turn,
       datatype,
       is_deprecated,
       min_value,
       is_directly_measured,
       max_value,
       unit
       ) VALUES (
       4,
       'Wykrywanie ruchu',
       TRUE,
       TRUE,
       TRUE,
       TRUE,
       TRUE,
       'xsd:integer',
       FALSE,
       '0',
       TRUE,
       '1',
       'http://mapserv.kt.agh.edu.pl/ontologies/units.owl#Unit.m'
       );
 
-- video_queue, metadata
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES (
       4,
       'param_monitoringparametertype',
       'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.PresentVehiclesMonitoringaParameterType' -- FIXME might be not present in the ontology, unable to verify the ontology is offline
);
 
 
COMMIT;

Przykładowa instanacja wraz z przykładowymi danymi.

BEGIN;
 
-- Instance: K1-S, http://insigma.kt.agh.edu.pl/K1-S
-- InstanceAssignment
 
INSERT INTO param_instanceassignment (
       id
       ) VALUES (
       17
);
 
-- metadata 
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES (
       17,
       'param_instanceassignment',
       'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.LaneInstanceAssignment'
);
 
 
-- MonitoringParameterInstance
 
INSERT INTO param_monitoringparameterinstance (
       id,
       time_interval,
       TYPE,
       label,
       assignment,
       min_frequency,
       max_frequency,
       lifetime,
       time_created
       ) VALUES (
       17,
       90,
       1, -- http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.LengthQueueVehiclesMonitoringaParameterType
       'http://insigma.kt.agh.edu.pl/K1-S',
       17,
       0.0166, -- co 60 s
       0.0083, -- co 120 s
       360,
       '2012-04-18 13:13:04'
);
 
-- metadata 
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES (
       17,
       'param_monitoringparameterinstance',
       'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.FixedMonitoringParameterInstance'
);
 
 
-- InstanceAssignmentSmLane
 
INSERT INTO param_instanceassignment_sm_lane (
       param_instanceassignment,
       sm_lane
       ) VALUES (
       17,
       11 -- lane id: 11
);
 
 
-- MonitoringParameterState
 
INSERT INTO param_monitoringparameterstate (
       id,
       parameter_instance,
       time_entered,
       TYPE
       ) VALUES (
       17,
       17,
       '2012-04-18 13:13:04',
       'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#MonitoringParameterStateType.Active'
);
 
-- metadata
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES (
       17,
       'param_monitoringparameterstate',
       'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterState'
);
 
-- MonitoringParameterInstance id:15, update: current_state=1
 
UPDATE param_monitoringparameterinstance 
SET current_state=1
WHERE id=17;
 
-- Sensors omitted for now, TODO
 
-- MonitoringParameterValue
 
INSERT INTO param_monitoringparametervalue (
       id,
       confidence,
       PRECISION,
       valid_until,
       time_measured,
       VALUE,
       instance
       ) VALUES 
       ( -- K1-S
	17,
       	1,
       	'1',
	'2012-04-30 14:15:55',
	'2012-04-18 14:15:55',
	'18',
	17
       )
;
 
-- metadata
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES 
       (
	17,
       	'param_monitoringparametervalue',
       	'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
	)
;
 
COMMIT;

Przykładowe umieszczanie danych

Poniższa sekcja dotyczy wartości paramtetrów monitorowania.

Do umieszczenia danych konieczne jest wykonanie dwóch zapytań INSERT:

Muszą one być wykonane w ramach tego samego połączenia z bazą danych w sekwencji: najpierw dane, potem metadane. Najlepiej w ramach transakcji (tak jak w przykładzie poniżej), aby uniknąć ewentualnych niespójności.

BEGIN;
-- MonitoringParameterValue
 
INSERT INTO param_monitoringparametervalue (
       confidence,
       PRECISION,
       valid_until,
       time_measured,
       VALUE,
       instance
       ) VALUES 
       ( -- K1-S
       	1,
       	'1',
	'2012-04-30 14:15:55',
	'2012-04-18 14:15:55',
	'6', -- wartośc mierzona (value)
	(SELECT id FROM param_monitoringparameterinstance WHERE label='http://insigma.kt.agh.edu.pl/K1-S') -- etykieta instancji (label)
       )
;
 
-- metadata
 
INSERT INTO meta_param_pk_table_class (pk, tbl, cls) VALUES 
       (
	(SELECT currval('pmpv_seq')),
       	'param_monitoringparametervalue',
       	'http://mapserv.kt.agh.edu.pl/ontologies/param.owl#param.MonitoringaParameterValue'
	)
;
 
COMMIT;

Uwagi końcowe

Jako dane testowe umieszczono w bazie danych Mapy Statycznej (baza osmosis_db) informacje o:

W repozytorium RDNR (baza rdnr) umieszczono informacje o:

Uwaga: w RDNR nie umieszczono informacji o Sensorach.

FIXME informacje o parkingu