Kopiowanie wysokości obiektów rzędnych do punktów w tabeli współrzędnych

Z C-Geo Wiki
Skocz do: nawigacja, szukaj
Kopiowanie wysokości obiektów rzędnych do punktów w tabeli współrzędnych
Kategorie Baza danych
GML
Powiązania Modyfikacja danych przez zapytanie SQL

Poniżej opisano dwa sposoby przyspieszenia przygotowania danych do wykazu współrzędnych z wysokościami obiektów rzędnych. Jest to szczególnie przydatne przy dużych opracowaniach, gdy projekt zawiera kilkaset punktów, z czego znaczna część to rzędne terenu, urządzeń lub przewodów.

Sposób 1 - Wykorzystanie kilku funkcji programu

W pierwszej kolejności należy zmodyfikować używany szablon, na przykład MapaZasadnicza_2021.ZMP, dodając do tabeli współrzędnych pola: 'Rzedna', 'RzednaGory', 'RzednaDolu'. Po zapisaniu zmian można korzystać z tego szablonu przy kolejnych projektach.

Następnie w tabeli bazy danych rzędnych pogrupować i zaznaczyć pikiety/rzędne według typów (naturalna/sztuczna, rzędna urządzenia/przewodu):

Wykazrzedych1.png

Podświetlić kolumnę z wysokością do przekopiowania i użyć tej funkcji:

Wykazrzedych2.png

która działa tak, że wybiera się konkretną kolumnę docelową w tabeli współrzędnych, którą może być wcześniej założone pole w tabeli współrzędnych i nie trzeba przechodzić przez jakieś pośrednie kolumny:

Wykazrzedych3.png

Można samodzielnie dodać szablon np. na szablonie MapaZasadnicza_2021, zapisać pod tą samą nazwą i korzystać z niego, zmodyfikowanego o dodatkowe atrybuty ('Rzedna', 'RzednaGory', 'RzednaDolu').

Sposób 2 – Automatycznie za pomocą SQL

Można trochę pracy sobie oszczędzić:

  1. Zmodyfikować i zapisać pod tą samą nazwą szablon (MapaZasadnicza_2021.ZMP) dodając do tabeli współrzędnych potrzebne pola: 'Rzedna', 'RzednaGory', 'RzednaDolu',
  2. Wykonać w oknie bazy danych zapytanie SQL modyfikujące dane w tabeli, według poniższych skryptów, które należy wkleić w oknie wywołanym ikonką Modyfikacja danych przez zapytanie SQL (zrzut poniżej),
  3. W tych zapytaniach pojawia się ciąg znaków - "..\GML.db - który jest zależny od nazwy tabeli współrzędnych (w przykładzie jest to tabela współrzędnych o nazwie "GML"). Czyli w rzeczywistości należy zamiast GML wpisać nazwę swojej tabeli współrzędnej (np. abc). Zmienną zaznaczono na zielono na zrzucie poniżej,
  4. Podane w skryptach zmienne 168.db i 150.db to nazwy tabel: 168.db - OT_Rzedna i 150.db - GES_Rzedna. Jeśli struktura tabel w szablonie będzie niezmienna (nie zostaną dodane nowe bazy danych), to te tabele tak właśnie się nazywają. Numer ten jest widoczny w górnej części okna edytora SQL - zaznaczono na żółto na zrzucie poniżej.

Skrypt nr 1 (dla rzędnych BDOT):

update "..\GML.db" t set t.Rzedna = (select d.Rzedna from "168.db" d where d.Id_o=t.Id_p)
where exists (select * from "168.db" b where b.Id_o=t.Id_p)

Skrypt nr 2 (dla rzędnych GESUT):

update "..\GML.db" t set
t.RzednaGory = (select d.RzednaGory from "150.db" d where d.Id_o=t.Id_p),
t.RzednaDolu = (select d.RzednaDolu from "150.db" d where d.Id_o=t.Id_p)
t.Rzedna = (select d.Rzedna from "150.db" d where d.Id_o=t.Id_p),
where exists (select * from "150.db" b where b.Id_o=t.Id_p)

WykaWSPrzednaSkrypt.png

==