Czy istnieje sposób użycia funkcji „Wybierz według atrybutu” w QGIS za pomocą polecenia python? W mojej wtyczce użytkownik powinien wprowadzić wartość za pomocą GUI, a ta wartość powinna zostać użyta w funkcji, która wybiera wszystkie funkcje posiadające ten atrybut. Nazwa kolumny jest ustalona w kodzie, funkcja powinna wyszukiwać tylko poprawną wartość.
W moim obecnym rozwiązaniu funkcja łączy QGIS z bazą danych PostgreSQL i uruchamia instrukcję SQL. Spowoduje to utworzenie tabeli z wyników, a tabela jest wizualizowana jako Shapefile w QGIS.
Zasadniczo wystarczy podświetlić funkcje i nie tworzyć nowego pliku kształtów zaznaczenia. Użycie funkcji „Wybierz według atrybutu” spowoduje także pominięcie niepotrzebnego połączenia z bazą danych.
Czy istnieje sposób użycia funkcji „Wybierz według atrybutu” w pythonie, aby wyróżnić funkcje? Używając funkcji w QGIS, wszystkie funkcje, które nie pasują do zapytania, są tymczasowo wygaszane, co również byłoby w porządku.
Odpowiedzi:
Tak. Możesz pobrać wszystkie atrybuty poprzez powiązania Pythona i zaimplementować dodatkowe filtrowanie we własnej wtyczce. Zobacz ten fragment PyQGIS Coobook dla podsumowania i kilka przykładów. Następnie po prostu wykluczyłbyś wszelkie niepasujące wyniki ze zwróconego słownika.
Jeśli chodzi o wizualizację, prawdopodobnie nadal będziesz musiał utworzyć kolejną warstwę, ponieważ
select()
nie ma odpowiednich argumentów. Możesz użyć warstwy pamięci, aby uniknąć konieczności tworzenia fizycznych plików (więcej na ten temat w książce kucharskiej).edytować:
W rzeczywistości można użyć za
selectedFeaturesIds()
pomocą przycisku,setSelectedFeatures(ids)
aby zmienić wybór na utworzony podzbiór. Cytując implementację bezpośrednio:źródło
Począwszy od QGIS 2.2 jest to obsługiwane w bardzo naturalny sposób. Można to zrobić za pomocą silnika wyrażeń QGIS przy użyciu tej
QgsFeatureRequest.setFilterExpression( unicode )
metody.Najlepsza rzecz: jeśli masz najnowszą wersję QGIS (2.10 i późniejszą), zostanie ona odfiltrowana bezpośrednio w bazie danych o wiele bardziej wydajna niż inne rozwiązania, a jednocześnie bardzo czytelna.
źródło
sextante.runalg („qgis: selectbylocation”, „bufferarea”, „hospitals”, 1)
http://qgissextante.blogspot.in/2013/01/using-selection-alameterms.html
źródło