Zapytanie SQL w QGIS - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html) +--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html) +--- Wątek: Zapytanie SQL w QGIS (/thread-580.html)
1
2
|
Zapytanie SQL w QGIS - koberek - 28-10-2011 Mam następującą tabelę atrybutów wektorowej warstwy shp: [attachment=98] Chcę policzyć liczbę gatunków występujących w danym kwadracie ATPOL Jak powinno wyglądać zapytanie SQL? RE: Zapytanie SQL w QGIS - p0cisk - 28-10-2011 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 Pozdrawiam RE: Zapytanie SQL w QGIS - koberek - 29-10-2011 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) RE: Zapytanie SQL w QGIS - p0cisk - 30-10-2011 Musisz dopisać po select nazwę kolumny: Kod: select ATPOL, count(distinct Gatunek) as liczba_gatunków from stanowiska_1 as ATPOL group BY ATPOL RE: Zapytanie SQL w QGIS - koberek - 30-10-2011 Wielkie dzięki 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źć ? RE: Zapytanie SQL w QGIS - p0cisk - 30-10-2011 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. RE: Zapytanie SQL w QGIS - koberek - 31-10-2011 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" RE: Zapytanie SQL w QGIS - p0cisk - 31-10-2011 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. RE: Zapytanie SQL w QGIS - koberek - 31-10-2011 Podaj maila to podeślę warstwę. RE: Zapytanie SQL w QGIS - p0cisk - 31-10-2011 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' Kod: SELECT DISTINCT "temp".'ATPOL' as ATPOL, "temp".'liczba' as 'liczba', "centra".'Geometry' as 'Geometry' FROM "temp" NATURAL JOIN "centra" 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' |