Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Uzupełnianie geometrii oraz praca sieciowa.
27-06-2016, 00:39,
#1
Uzupełnianie geometrii oraz praca sieciowa.
Witam,

1. Uzupełnianie geometrii.
Mam tabelę w PostGis, w której geometria obiektów nie jest kompletna, tzn są obiekty z geometria NULL. Pod QGIS chcę uzupełnić geometrię tym obiektom. Okazuje się, że QGIS nie daje takiej możliwości, gdyż w tabeli atrybutów nie pojawiają się rekordy z pustą geometrią. Jeżeli jest na to rozwiązanie, to bardzo proszę o przepis. W Internecie temat wygląda na nierozwiązany.

2. Praca w sieci.
Sprawa również dotyczy PostGis-a. W momencie rozpoczęcia edycji rekordu, nie jest zakładana blokada w bazie danych na ten rekord (Select for update). W rezultacie użytkownik QGIS-a nie wie, że dany rekord jest już modyfikowany przez innego użytkownika (w tym z poziomu innej aplikacji). To samo jest w drugą stronę. Inna aplikacja też nie wie, że rekord jest modyfikowany przez QGIS. W rezultacie prowadzi to do nieprawidłowości w danych.

Proszę osoby mające bliższy kontakt z twórcami QGIS o zasygnalizowanie w/w problemów.

Pozdrawiam
27-06-2016, 08:00, (Ten post był ostatnio modyfikowany: 27-06-2016, 08:34 {2} przez sebaq.)
#2
RE: Uzupełnianie geometrii oraz praca sieciowa.
Ad1. Z poziomu postgresa uzupełnij puste pole geometrii jakąś wartością z innego obiektu, który geometrie posiada. W QGISie zobaczysz ten obiekt dokładnie w tym samym miejscu, z którego skopiowałeś geometrię i będziesz mógł już ją modyfikować.
Ad2. Są/były jakieś wtyczki ułatwiające pracę zbiorową w QGISie (pgVersion?) ale faktycznie przydałaby się taka standardowa funkcjonalność. Być może mechanizmy z bazy danych MVCC będą tu pomocne.
Pozdrawiam!
05-07-2016, 17:14,
#3
RE: Uzupełnianie geometrii oraz praca sieciowa.
Witam.

Dzięki za odpowiedź.

Ad.1.
W międzyczasie problem opisany w tym punkcie rozwiązałem poprzez trigger o następującej składni:

CREATE OR REPLACE FUNCTION kb_trigger()
RETURNS trigger AS
$body$
DECLARE
Dok integer;
BEGIN
IF TG_OP='INSERT' THEN
IF NEW.geom_plg IS NULL
THEN
NEW.geom_plg := ST_GeomFromText('MULTIPOLYGON EMPTY');
END IF;

IF NEW.geom_wln IS NULL
THEN
NEW.geom_wln := ST_GeomFromText('MULTILINESTRING EMPTY');
END IF;

IF NEW.geom_pkt IS NULL
THEN
NEW.geom_pkt := ST_GeomFromText('MULTILIPOINT EMPTY');
END IF;

END IF;
RETURN NEW;
END;
$body$
LANGUAGE plpgsql;
ALTER FUNCTION kb_trigger() OWNER TO postgres;

DROP TRIGGER IF EXISTS kb_trg_01 ON kb CASCADE;
CREATE TRIGGER kb_trg_01 BEFORE INSERT
ON kb FOR EACH ROW
EXECUTE PROCEDURE kb_trigger();

W przypadku dodania rekordu i pustej geometrii, wprowadza geometrię EMPTY. Jest to oczywiście półśrodek, gdyż komplikuje późniejsze analizy obiektów bez geometrii.

Ad.2.
Pozostaje nierozwiązany.

Pozdrawiam
ML


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Mapa linii SN oraz GPZów w Polsce Janek1 2 14 132 27-07-2020, 22:03
Ostatni post: gsienko
  Graficzne utworzenie geometrii typu MULTILINESTRING/MULTIPOINT frankie 2 7 957 03-07-2018, 13:50
Ostatni post: frankie
  Wizualna walidacja na mapie geometrii stworzonej ad-hoc frankie 2 7 020 27-06-2018, 12:41
Ostatni post: frankie
  Kompesja (łączenie) kanałów RGB oraz dzielenie pliku rastrowego. Maxxx 0 4 075 22-05-2018, 09:56
Ostatni post: Maxxx
  Automatyczne uzupełnianie pola ID Arnebius1 5 12 889 19-04-2018, 22:15
Ostatni post: xmaziax
  Pliki geodezyjne .edz oraz .acs Mazur 6 18 669 24-01-2018, 14:31
Ostatni post: Mazur
  Tworzenie geometrii dla tabeli atrybutów bez geometrii tomalos 17 59 379 04-12-2016, 00:38
Ostatni post: borys
  Kalkulator rastrów oraz Tworzenie modułów cogito94 1 9 738 22-02-2016, 17:12
Ostatni post: Binko
  OSM DMS (dane open street map, praca z dms) megakozak 4 18 360 17-02-2016, 13:17
Ostatni post: megakozak
  Terrain profile oraz wiele profili cogito94 2 11 369 15-02-2016, 16:24
Ostatni post: cogito94

Skocz do: