Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Zapytanie SQL w QGIS
28-10-2011, 13:03,
#1
Zapytanie SQL w QGIS
Mam następującą tabelę atrybutów wektorowej warstwy shp:
   
Chcę policzyć liczbę gatunków występujących w danym kwadracie ATPOL
Jak powinno wyglądać zapytanie SQL?
28-10-2011, 20:43, (Ten post był ostatnio modyfikowany: 28-10-2011, 20:44 {2} przez p0cisk.)
#2
RE: Zapytanie SQL w QGIS
Możesz załadować warstwę do bazy PostGIS albo SpatiaLite i wpisać (ja korzystam z wtyczki QSpatiaLite):
Kod:
select count(distinct Gatunek) from nazwa_tabeli where ATPOL=65
Dane jakich potrzebujesz można również uzyskać bez korzystania z SQL. Kreatorem zapytań w tabeli atrybutów wybierz wszystkie pola np. 65. Teraz wejdź w menu Wektor->Narzędzia analizy->Podstawowe statystyki. Zaznacz pole przy 'Użyj tylko wybranych obiektów', wybierz pole 'Gatunek' i kliknij OK. Parametr 'Liczba unikalnych obiektów' to liczba której szukasz.
Pozdrawiam
29-10-2011, 18:06, (Ten post był ostatnio modyfikowany: 29-10-2011, 23:15 {2} przez koberek.)
#3
RE: Zapytanie SQL w QGIS
Dzięki.
Zadałem takie zapytanie:
select count(distinct Gatunek) as liczba_gatunków from stanowiska_1 as ATPOL group BY ATPOL
Chciałbym żeby zamiast tych liczb w pierwszej kolumnie wyświetlał mi np. konkretne wartości z kolumny ATPOL np. 65. (zdjęcie poniżej)


Załączone pliki Miniatury
   
30-10-2011, 20:12,
#4
RE: Zapytanie SQL w QGIS
Musisz dopisać po select nazwę kolumny:
Kod:
select ATPOL, count(distinct Gatunek) as liczba_gatunków from stanowiska_1 as ATPOL group BY ATPOL
30-10-2011, 21:22,
#5
RE: Zapytanie SQL w QGIS
Wielkie dziękiSmile
Chciałbym z tego stworzyć nową warstwę *shp ale jak klikam z prawego przycisku myszy "Load in QGIS" to wyświetla mi komunikat "No Geometry column found" Jak to ugryźć ?
30-10-2011, 23:10,
#6
RE: Zapytanie SQL w QGIS
Po select dodaj jeszcze nazwę kolumny z geometrią, z tym że po dodaniu warstwy geometria będzie pobrana z ostatniego punktu z danego kwadratu ATPOL.
31-10-2011, 12:58,
#7
RE: Zapytanie SQL w QGIS
Wpisałem takie zapytanie:
select AddGeometryColumn('stanowiska_1', 'geometry', 2180, 'POINT', 'XY'), ATPOL, count(distinct Gatunek) as liczba_gatunków from stanowiska_1 as ATPOL group BY ATPOL
Otrzymałem tabelę jak na zał. obrazku ale dalej nie nie mogę otworzyć w QGIS komunikat " No Geometry column found"


Załączone pliki Miniatury
   
31-10-2011, 15:15,
#8
RE: Zapytanie SQL w QGIS
Nie możesz użyć polecenia AddGeometryColumn w rekordach ponieważ ta funkcja odnosi się do tabeli. Zera w tabeli mówią, że nastąpił błąd w wykonywaniu funkcji.
Mógłbyś udostępnić fragment danych z tabeli stanowiska_1, wtedy byłoby mi łatwiej odnieść się do twojego pytania odnośnie geometrii.
31-10-2011, 18:32,
#9
RE: Zapytanie SQL w QGIS
Podaj maila to podeślę warstwę.
31-10-2011, 18:47, (Ten post był ostatnio modyfikowany: 01-11-2011, 20:05 {2} przez p0cisk.)
#10
RE: Zapytanie SQL w QGIS
Ok, udało mi się osiągnąć pożądany efekt chociaż rozwiązanie nie jest zbyt optymalne.
W warstwie punktów centralnych musisz dodać kolumnę ATPOL z poligonów - można to łatwo zrobić korzystając z wtyczki Point Sampling Tool. W moim przykładzie warstwa nazywa się centra.
W QSpatiaLite wybierz tworzenie nowej tabeli (nieprzestrzennej, w przykładzie nazywa się temp) i wpisz:
Kod:
select "stanowiska_1".'ATPOL' as 'ATPOL', count(distinct stanowiska_1".'GATUNEK') as 'liczba' from stanowiska_1 group BY "stanowiska_1".'ATPOL'
Teraz wybierz tworzenie kolejnej tabeli (też nieprzestrzennej) i wpisz:
Kod:
SELECT DISTINCT "temp".'ATPOL' as ATPOL, "temp".'liczba' as 'liczba', "centra".'Geometry' as 'Geometry' FROM "temp" NATURAL JOIN "centra"
Po wykonaniu polecenia rozwiń listę kolumn nowo utworzonej tabeli, kliknij prawym klawiszem na kolumnę Geometry i wybierz Recover Geometry Column. Tabela powinna zmienić się na przestrzenną

Pozdrawiam

[Edit]
Inna metoda wykorzystująca inner join. Po stworzeniu tabeli temp ustaw tworzenie nowej tabeli przestrzennej (Create Spatial Table-ważne żeby nazwa kolumny geometrii była taka sam jak w tabeli temp) i wpisz:
Kod:
select  "centra".'Geometry',  "centra".'ATPOL',  "temp".'liczba' from centra inner join temp on  "centra".'ATPOL'= "temp".'ATPOL'


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  zapytanie - struktura wiekowa Roland_z_Gilead 3 8 643 07-09-2018, 13:29
Ostatni post: xmaziax
  Zapytanie sql Roland_z_Gilead 1 10 227 12-11-2015, 20:07
Ostatni post: Roland_z_Gilead
  SQL w akcji QGIS sebaq 0 6 331 26-06-2014, 10:38
Ostatni post: sebaq
Question QGIS-Server WFS zapytanie POST g00ntar 1 22 982 15-07-2013, 15:11
Ostatni post: borys
  Zapytania SQL. kamilwydra 1 12 363 21-08-2012, 12:48
Ostatni post: indeo
  Zapytanie o pola z danymi (nie NULL-owymi) koberek 2 15 935 04-10-2011, 19:37
Ostatni post: koberek
  Szaleństwo okna kreatora zapytań SQL tomalos 5 26 653 05-11-2010, 20:15
Ostatni post: milena

Skocz do: