Jak mam powiedzieć "\"ogc_fid\"=482 AND name=\"hello world\""? Tutaj napisano, że nie jest to dostępne w Pythonie: qgis.org/api/… . Może znasz sposób na obejście tego ograniczenia?
Jenia Iwanow
2
Należy pamiętać, że nazwy pól muszą być cudzysłowami, wartości ciągów pojedynczych, a liczby nie wymagają cudzysłowów. W przykładzie: "\"ogc_fid\"=482 AND \"name\"='hello world'". BTW, link podany w komentarzu faktycznie oznacza, że atrybut statyczny BinaryOperatorTextnie jest dostępny w powiązaniach Pythona, ale operatory działają QgsExpression, nawet jeśli są używane przez powiązania Pythona.
Germán Carrillo
@ GermánCarrillo Używam powyższej metody, ale nie mogę jej zwrócić wartości, mimo że skopiowałem i wkleiłem znaną wartość do wyszukania. Kolumna zawiera ciągi, więc użyłem expr = QgsExpression("\"police_ref\" = 'P0580996'"). Próbowałem dodać znak przerwania do wyszukiwanego terminu (dla pojedynczych cudzysłowów), ale to nie robi różnicy. Co ciekawe, jeśli otworzę tabelę atrybutów, o którą pytam, i użyję konstruktora wyrażeń, dokona wyboru, jeśli policja_ref, której użyję jako przykład, znajduje się w pierwszym rzędzie, ale nie inaczej
Alex
@ GermánCarrillo przepraszam, nieważne, nie jestem pewien, co zrobiłem inaczej, ale mogę teraz wybrać funkcje! Dla innych czytających nie potrzebujesz przerywnika dla pojedynczych cytatów
Witamy w GIS SE. Jako nowy użytkownik, zapoznaj się z przewodnikiem . Istniejąca (i zaakceptowana) odpowiedź jest znacznie bardziej kompletna. Jak to się poprawia? Ogólnie rzecz biorąc, sposobem na zdobycie punktów reputacji jest udzielenie odpowiedzi na pytania bez odpowiedzi, ale nowa kompletna odpowiedź na trzyletnie pytanie byłaby mile widziana, gdyby konkretnie rozwiązała problem z poprzednim rozwiązaniem (w którym to przypadku należy z pewnością wspomnieć o tym problemie) .
Vince
2
Musisz go tylko przetestować w interfejsie GUI: „Wybierz według wyrażenia”. Jeśli to działa, możesz wkleić go w kodzie Pythona otoczonym podwójnymi cudzysłowami „”.
exp =QgsExpression("ogc_fid=482")
Jeśli porównasz do ciągu, możesz dodać pojedynczy cudzysłów „”.
exp =QgsExpression("ogc_fid='482'")
Jest to ta sama zasada w pythonie, może różnicować podwójny cytat i pojedynczy cytat.
"\"ogc_fid\"=482 AND name=\"hello world\""
? Tutaj napisano, że nie jest to dostępne w Pythonie: qgis.org/api/… . Może znasz sposób na obejście tego ograniczenia?"\"ogc_fid\"=482 AND \"name\"='hello world'"
. BTW, link podany w komentarzu faktycznie oznacza, że atrybut statycznyBinaryOperatorText
nie jest dostępny w powiązaniach Pythona, ale operatory działająQgsExpression
, nawet jeśli są używane przez powiązania Pythona.expr = QgsExpression("\"police_ref\" = 'P0580996'")
. Próbowałem dodać znak przerwania do wyszukiwanego terminu (dla pojedynczych cudzysłowów), ale to nie robi różnicy. Co ciekawe, jeśli otworzę tabelę atrybutów, o którą pytam, i użyję konstruktora wyrażeń, dokona wyboru, jeśli policja_ref, której użyję jako przykład, znajduje się w pierwszym rzędzie, ale nie inaczejTo działało dla mnie w QGIS Python Console
źródło
Musisz go tylko przetestować w interfejsie GUI: „Wybierz według wyrażenia”. Jeśli to działa, możesz wkleić go w kodzie Pythona otoczonym podwójnymi cudzysłowami „”.
Jeśli porównasz do ciągu, możesz dodać pojedynczy cudzysłów „”.
Jest to ta sama zasada w pythonie, może różnicować podwójny cytat i pojedynczy cytat.
źródło