From a90a45a0b902a88f1e1d1d30a4c96fda25952727 Mon Sep 17 00:00:00 2001
From: Tom LAVEILLE
Date: Wed, 5 Feb 2025 14:33:42 +0100
Subject: [PATCH] fonction de filtre par empris du canva QGIS
---
CenRa_FLUX/flux_editor.py | 79 +++++++++++++++++++++++++++--------
CenRa_FLUX/metadata.txt | 4 +-
CenRa_FLUX/tools/ui/find.png | Bin 0 -> 2070 bytes
plugins.xml | 6 +--
4 files changed, 66 insertions(+), 23 deletions(-)
create mode 100644 CenRa_FLUX/tools/ui/find.png
diff --git a/CenRa_FLUX/flux_editor.py b/CenRa_FLUX/flux_editor.py
index af7149d..872506e 100644
--- a/CenRa_FLUX/flux_editor.py
+++ b/CenRa_FLUX/flux_editor.py
@@ -160,6 +160,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
def initialisation_flux(self):
if dbtype == sigdb:
+ # self.toolButton.setEnabled(1)
if self.comboBox.currentText() == 'toutes les catégories':
custom_list=schemaname_list
elif self.comboBox.currentText() == 'travaux':
@@ -184,7 +185,11 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
if dbtype == sigdb:
type_val = str(value[0])[1:3]
schema_name=str(value[0])[4:]
- table_name=str(value[1])
+ table_name=str(value[1][len(value[0])+1:])
+ if value[0] == value[1][:len(value[0])]:
+ table_name=str(value[1][len(value[0])+1:])
+ else:
+ table_name=str(value[1])
else:
type_val = ''
schema_name=str(value[0])
@@ -192,7 +197,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
if type_val == 'fo':
type_val=str(value[0])[1:5]
schema_name=str(value[0])[6:]
- table_name=str(value[1])
+ if value[0] == value[1][:len(value[0])]:
+ table_name=str(value[1][len(value[0])+1:])
+ else:
+ table_name=str(value[1])
elif type_val == 'ra':
type_val='travaux'
schema_name=str(value[0])
@@ -285,7 +293,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
schema = '_'+code+'_'+self.tableWidget_2.item(row,1).text()
if code == 'travaux' or code == 'agregation':
schema = self.tableWidget_2.item(row,1).text()
- table = self.tableWidget_2.item(row,2).text()#.split("?", 1)[0]
+ table = self.tableWidget_2.item(row,2).text()
+ else:
+ table = self.tableWidget_2.item(row,2).text()
+ table = schema+'_'+table
if dbtype == refdb:
# code = self.tableWidget_2.item(row,0).text()
schema = self.tableWidget_2.item(row,1).text()
@@ -302,7 +313,6 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a'
cur.execute(geom_type)
list_typegeom = cur.fetchall()
- print(len(list_typegeom))
if len(list_typegeom) > 1:
for typegeom in list_typegeom:
if typegeom[0] == 'MultiPolygon':
@@ -329,6 +339,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
def combobox_custom(self):
if dbtype == sigdb:
+ self.toolButton.setEnabled(1)
self.comboBox.clear()
self.comboBox.addItem("toutes les catégories")
self.comboBox.addItem('00')
@@ -341,6 +352,7 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.comboBox.addItem('travaux')
self.comboBox.addItem('form')
if dbtype == refdb:
+ self.toolButton.setEnabled(0)
custom_list=schemaname_distinct
cur.execute(custom_list)
list_schema = cur.fetchall()
@@ -348,8 +360,10 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
self.comboBox.addItem("toutes les catégories")
for baxval in list_schema:
self.comboBox.addItem(baxval[0])
- def filtre_dynamique(self, filter_text):
+ def filtre_dynamique(self, filter_text):
+ if filter_text.find(' ') >= 0:
+ filter_text=filter_text.replace(" ","_")
for i in range(self.tableWidget.rowCount()):
for j in range(self.tableWidget.columnCount()):
item = self.tableWidget.item(i, j)
@@ -359,19 +373,48 @@ class Flux_Editor(QDialog, EDITOR_CLASS):
break
def getCanevas(self):
- print(iface.mapCanvas().extent())
- # SQL_EXTENT = ''
- # SQL_GEOM = "SELECT f_table_schema,f_table_name FROM geometry_columns WHERE f_geometry_column = 'geom'"
- # cur.execute(SQL_GEOM)
- # TableHaveGeom = cur.fetchall()
- # for e in TableHaveGeom:
- # SchemaName = e[0]
- # TableName = e[1]
- # if SchemaName[0:5] != '_form':
- # if SchemaName[0:4] == '_01_' or SchemaName[0:4] == '_42_' or SchemaName[0:4] == '_69_':
- # SQL_EXTENT=SQL_EXTENT+"SELECT st_envelope(st_union(geom)),'"+TableName+"' AS table_name FROM "+'"'+SchemaName+'"."'+TableName+'"'+' UNION ALL '
- # SQL_EXTENT = SQL_EXTENT[:-11]
- # print(SQL_EXTENT)
+ poly = iface.mapCanvas().extent()
+ geom = (str(poly.xMinimum())+','+str(poly.yMinimum())+','+str(poly.xMaximum())+','+str(poly.yMaximum()))
+
+ SQL_GEOM_CONTOUR = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_contour" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
+ SQL_GEOM_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
+ SQL_GEOM_EU_HABITAT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_eu_habitat" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
+ SQL_GEOM_TRAVAUX_PREVUS_LIGNE = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_ligne" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
+ SQL_GEOM_TRAVAUX_PREVUS_POINT = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_point" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
+ SQL_GEOM_TRAVAUX_PREVUS_POLY = """SELECT DISTINCT tschema,tname FROM "_agregation_ra"."_agreg_travaux_prevus_poly" WHERE st_intersects(geom,ST_MakeEnvelope("""+geom+",2154)) ORDER BY tname"
+
+ cur.execute(SQL_GEOM_CONTOUR)
+ TableContour = cur.fetchall()
+ cur.execute(SQL_GEOM_HABITAT)
+ TableHabitat = cur.fetchall()
+ cur.execute(SQL_GEOM_EU_HABITAT)
+ TableEuHabitat = cur.fetchall()
+ cur.execute(SQL_GEOM_TRAVAUX_PREVUS_LIGNE)
+ TableTravauxLigne = cur.fetchall()
+ cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POINT)
+ TableTravauxPoint = cur.fetchall()
+ cur.execute(SQL_GEOM_TRAVAUX_PREVUS_POLY)
+ TableTravauxPoly = cur.fetchall()
+
+ TableHaveGeom = sorted(TableContour+TableHabitat+TableEuHabitat+TableTravauxLigne+TableTravauxPoint+TableTravauxPoly)
+ row_count = 0
+ self.tableWidget.setRowCount(0)
+ for e in TableHaveGeom:
+ if e[0][1:3] != 'fo':
+ DepName = QTableWidgetItem(e[0][1:3])
+ SchemaName = QTableWidgetItem(e[0][4:])
+ else:
+ DepName = QTableWidgetItem('form')
+ SchemaName = QTableWidgetItem(e[0][6:])
+ TableName = QTableWidgetItem(e[1][len(e[0])+1:])
+ self.tableWidget.insertRow(row_count)
+ self.tableWidget.setItem(row_count,0,DepName)
+ self.tableWidget.setItem(row_count,1,SchemaName)
+ self.tableWidget.setItem(row_count,2,TableName)
+ row_count = row_count+1
+ if self.lineEdit.text() != 'Recherche par mots-clés':
+ self.filtre_dynamique(self.lineEdit.text())
+
def popup(self):
self.dialog = Popup() # +++ - self
diff --git a/CenRa_FLUX/metadata.txt b/CenRa_FLUX/metadata.txt
index 0f65152..d42c4ca 100644
--- a/CenRa_FLUX/metadata.txt
+++ b/CenRa_FLUX/metadata.txt
@@ -6,7 +6,7 @@
name=CenRa_FLUX
qgisMinimumVersion=3.0
description=Permet d'ouvrire une table dans la base PostGis
-version=2.2
+version=2.3
author=Conservatoire d'Espaces Naturels de Rhône-Alpes
email=si_besoin@cen-rhonealpes.fr
@@ -32,7 +32,7 @@ icon=icon.png
# experimental flag
experimental=False
-changelog=CenRA_FLUX:
07/01/2025 - Version 2.2:
- ByPass du certif ssl ci erreur.
22/10/2024 - Version 2.1:
- Correctif de bug. - Evolution de la limit de 3 à 5. 22/10/2024 - Version 2.0:
- Reformatage du code.03/10/2024 - Version 1.14:
- Remonte la fênetre dans la pille.13/09/2024 - Version 1.13:
- MAJ sur le lien du changelog- Bug-fix: Ouvre MultiPolygone et Polygon séparément.10/09/2024 - Version 1.11:
- Ouverture de table contenant plusieurs géométries.26/08/2024 - Version 1.10:
- Ajoute d'un changelog et vérification de mise à jour.
+changelog=CenRA_FLUX:
05/02/2025 - Version 2.3:
- Bouton de visualisation des couches se trouvent uniquement dans le canva de la carte.07/01/2025 - Version 2.2:
- ByPass du certif ssl ci erreur.22/10/2024 - Version 2.1:
- Correctif de bug. - Evolution de la limit de 3 à 5. 22/10/2024 - Version 2.0:
- Reformatage du code.03/10/2024 - Version 1.14:
- Remonte la fênetre dans la pille.13/09/2024 - Version 1.13:
- MAJ sur le lien du changelog- Bug-fix: Ouvre MultiPolygone et Polygon séparément.10/09/2024 - Version 1.11:
- Ouverture de table contenant plusieurs géométries.26/08/2024 - Version 1.10:
- Ajoute d'un changelog et vérification de mise à jour.
# deprecated flag (applies to the whole plugin, not just a single version)
deprecated=False
diff --git a/CenRa_FLUX/tools/ui/find.png b/CenRa_FLUX/tools/ui/find.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b74248e6a98cf48347ab074af414ccfce760d34
GIT binary patch
literal 2070
zcmV+x2T!?EV2{@
za#=*Q-0~6mqiMH>CCB+&j7YnPD5On+gjiqGvl3u}7eq7tlZdE@5go#a^kYOmK9WOU
z(L07E$Mu#dkQD~7(oCRxpA)9{+hO^DjptOM1G@8_{594G3-m5iis_jEEs)z9tMy0}
zXwZsWe_{Q##LEDP`5UK5gnc-oW9hrnyM;Damc@(mxQzD}KE6lE!lgGsZ?UKPK
z1NP+-s6Z5I@?0=lV2`ycNa#!+ul~LIUs}!N?^vKM7?J-e<`CQwXc5s{YM|%FM`82+
z3~a7S3IAQ=`Tfc=Tnb$RS82Uc6%R3@HI^LrJ8XRRSC+ln%2($}l9zKJ-zh1f$POpA
z${{wEq@+(VBJ*V&1y;tT)mF>x2@uFI>(F9r+XnO)TnPR<1@!TQbx=e5q2uB_
zTpnJ4`l@cQD&+1g3BZ7gDk}DRvL~R(F4g%Sw!J0nv4UtJhcH
zc%f9sm1fH8n_mnS*?6+YtWB1EMS&l}mlieW@Z1p)T?d$)`wpthJ5g;G}=<6jYCK%gqZZ;Y}Vr20zWkuKn8NAE$c
zZxD_Z)k=4eimS6H;6#CsKi3O7oke
z^f`Ky`Vx5Oy_kUr;h=w&KHWXQ0kf2UfFW^bisK0Sm6b
zWlq5T87_TR0$QMt3ZA#syui#Biv?1!Ws^-%g_?CvOBFFv%x(^ffny+(fpe3TtC5ov
ze;;|s7Q-r#KWKtaAz%lfHJzu3{23z>5C!ruri#*fO+%$@vt_1BQdR@q-cv9?)R_XB
z$)3rdm4R}eOzv19dE#EjOM2#L!ia9NH>!c=#^?+|YlY=Q@2@eUg&5IkJ%&n_Yd3pR
zfKQ!o=Nlf|_!M(p7ZI^#WuwPQKU8><~+5TaB(X^Yxy2tk_
z7HBaR=sA`mB8R>-+kf*@&&voSj4;9o(=Lkt16L{nvMh9o$N&HU07*qoM6N<$f;2hR
A1ONa4
literal 0
HcmV?d00001
diff --git a/plugins.xml b/plugins.xml
index 9db29af..06f08ad 100644
--- a/plugins.xml
+++ b/plugins.xml
@@ -51,9 +51,9 @@
cenra,sicen
-
+
- 2.2
+ 2.3
3.16
https://plateformesig.cenra-outils.org/
CenRa_FLUX.zip
@@ -62,7 +62,7 @@
https://gitea.cenra-outils.org/CEN-RA/Plugin_QGIS/releases/download/latest/CenRa_FLUX.zip
CEN-Rhone-Alpes
2024-02-06
- 2025-01-07
+ 2025-02-05
False
False
cenra,flux