Ouverture de Raster en base psql
This commit is contained in:
+77
-35
@@ -22,6 +22,7 @@ except:
|
||||
|
||||
from qgis.core import *
|
||||
from qgis.core import QgsDataSourceUri
|
||||
from qgis.PyQt.QtSvg import QSvgWidget
|
||||
from qgis.PyQt.QtWidgets import (
|
||||
QDialog,
|
||||
QAction,
|
||||
@@ -455,6 +456,13 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
||||
cur.execute(custom_list)
|
||||
list_schema = cur.fetchall()
|
||||
|
||||
SQLraster = """SELECT concat(r_table_schema,'.',r_table_name) from public.raster_columns; """
|
||||
cur.execute(SQLraster)
|
||||
list_raster = cur.fetchall()
|
||||
RasterList = []
|
||||
for rasterFind in list_raster:
|
||||
RasterList.append(rasterFind[0])
|
||||
|
||||
self.tableWidget.setRowCount(len(list_schema))
|
||||
self.tableWidget.setColumnCount(3)
|
||||
i=0
|
||||
@@ -483,12 +491,24 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
||||
schema_name=str(value[0])
|
||||
table_name=str(value[1])
|
||||
elif type_val != '00' and type_val != '01' and type_val != '07' and type_val != '26' and type_val != '42' and type_val != '69' and type_val != 'ra':
|
||||
type_val='agregation'
|
||||
if dbtype == refdb:
|
||||
if (schema_name+'.'+table_name) in RasterList:
|
||||
SVG = 'mIconRaster.svg'
|
||||
else:
|
||||
SVG = 'mIconWfs.svg'
|
||||
svgWidget = QSvgWidget(resources_path('icons',SVG))
|
||||
else:
|
||||
type_val='agregation'
|
||||
schema_name=str(value[0])
|
||||
table_name=str(value[1])
|
||||
|
||||
item = QTableWidgetItem(type_val)
|
||||
self.tableWidget.setItem(i,0,item)
|
||||
if dbtype == refdb:
|
||||
self.tableWidget.setCellWidget(i,0,svgWidget)
|
||||
self.tableWidget.setItem(i,0,QTableWidgetItem(''))
|
||||
else:
|
||||
self.tableWidget.setCellWidget(i,0,None)
|
||||
self.tableWidget.setItem(i,0,item)
|
||||
item = QTableWidgetItem(schema_name)
|
||||
self.tableWidget.setItem(i,1,item)
|
||||
item = QTableWidgetItem(table_name)
|
||||
@@ -504,6 +524,7 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
||||
selected_items = self.tableWidget.selectedItems()
|
||||
|
||||
# Assuming you want to compare items in the first column for uniqueness
|
||||
svgTake = (selected_items[2].tableWidget().cellWidget(0,0))
|
||||
new_item_text = selected_items[2].text()
|
||||
|
||||
if not self.item_already_exists(new_item_text):
|
||||
@@ -547,10 +568,17 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
||||
def openPostGIS(self,schema,table):
|
||||
uri = QgsDataSourceUri()
|
||||
uri.setConnection(host ,port ,sigdb ,user ,mdp)
|
||||
uri.setDataSource(schema, table, "geom")
|
||||
uri.setKeyColumn('gid')
|
||||
uri.setSrid('2154')
|
||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||
|
||||
if (schema+'.'+table) in RasterList:
|
||||
uri.setDataSource(schema, table, "rast")
|
||||
uri.setKeyColumn('rid')
|
||||
uri.setSrid('2154')
|
||||
layer = QgsRasterLayer(uri.uri(), table, "postgresraster")
|
||||
else:
|
||||
uri.setDataSource(schema, table, "geom")
|
||||
uri.setKeyColumn('gid')
|
||||
uri.setSrid('2154')
|
||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||
# Ajout de la couche au canevas QGIS
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
|
||||
@@ -574,6 +602,13 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
||||
def displayOnWindows(type, uri, name):
|
||||
p = []
|
||||
|
||||
SQLraster = """SELECT concat(r_table_schema,'.',r_table_name) from public.raster_columns; """
|
||||
cur.execute(SQLraster)
|
||||
list_raster = cur.fetchall()
|
||||
RasterList = []
|
||||
for rasterFind in list_raster:
|
||||
RasterList.append(rasterFind[0])
|
||||
|
||||
for row in range(0, self.tableWidget_2.rowCount()):
|
||||
color_rgba = 855030089
|
||||
if self.tableWidget_2.item(row, 0).background().color().rgba() != 855030089:
|
||||
@@ -596,36 +631,43 @@ var Travaux = L.geoJSON(TravauxJSON,{
|
||||
|
||||
# nom du schéma à remplacer: "hydrographie" à supprimer et mettre "couches_collaboratives" lorsqu'on aura regroupé les couches à modifier dans un même schéma
|
||||
|
||||
uri.setDataSource(schema, table, "geom")
|
||||
uri.setKeyColumn('gid')
|
||||
|
||||
# Chargement de la couche PostGIS
|
||||
geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a'
|
||||
cur.execute(geom_type)
|
||||
list_typegeom = cur.fetchall()
|
||||
if len(list_typegeom) > 1:
|
||||
for typegeom in list_typegeom:
|
||||
if typegeom[0] == 'MultiPolygon':
|
||||
uri.setWkbType(QgsWkbTypes.MultiPolygon)
|
||||
elif typegeom[0] == 'MultiLineString':
|
||||
uri.setWkbType(QgsWkbTypes.MultiLineString)
|
||||
elif typegeom[0] == 'Point':
|
||||
uri.setWkbType(QgsWkbTypes.Point)
|
||||
if typegeom[0] == 'Polygon':
|
||||
uri.setWkbType(QgsWkbTypes.Polygon)
|
||||
elif typegeom[0] == 'LineString':
|
||||
uri.setWkbType(QgsWkbTypes.LineString)
|
||||
elif typegeom[0] == 'MultiPoint':
|
||||
uri.setWkbType(QgsWkbTypes.MultiPoint)
|
||||
if (typegeom[0] != None and typegeom[0] != 'Polygon'):
|
||||
uri.setSrid('2154')
|
||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||
# Ajout de la couche au canevas QGIS
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
else:
|
||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||
# Ajout de la couche au canevas QGIS
|
||||
if (schema+'.'+table) in RasterList:
|
||||
uri.setDataSource(schema, table, "rast")
|
||||
uri.setKeyColumn('rid')
|
||||
uri.setSrid('2154')
|
||||
layer = QgsRasterLayer(uri.uri(), table, "postgresraster")
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
else:
|
||||
uri.setDataSource(schema, table, "geom")
|
||||
uri.setKeyColumn('gid')
|
||||
|
||||
# Chargement de la couche PostGIS
|
||||
geom_type ='SELECT right(st_geometrytype(geom),-3) as a FROM '+schema+'.'+table+' GROUP BY a'
|
||||
cur.execute(geom_type)
|
||||
list_typegeom = cur.fetchall()
|
||||
if len(list_typegeom) > 1:
|
||||
for typegeom in list_typegeom:
|
||||
if typegeom[0] == 'MultiPolygon':
|
||||
uri.setWkbType(QgsWkbTypes.MultiPolygon)
|
||||
elif typegeom[0] == 'MultiLineString':
|
||||
uri.setWkbType(QgsWkbTypes.MultiLineString)
|
||||
elif typegeom[0] == 'Point':
|
||||
uri.setWkbType(QgsWkbTypes.Point)
|
||||
if typegeom[0] == 'Polygon':
|
||||
uri.setWkbType(QgsWkbTypes.Polygon)
|
||||
elif typegeom[0] == 'LineString':
|
||||
uri.setWkbType(QgsWkbTypes.LineString)
|
||||
elif typegeom[0] == 'MultiPoint':
|
||||
uri.setWkbType(QgsWkbTypes.MultiPoint)
|
||||
if (typegeom[0] != None and typegeom[0] != 'Polygon'):
|
||||
uri.setSrid('2154')
|
||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||
# Ajout de la couche au canevas QGIS
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
else:
|
||||
layer = QgsVectorLayer(uri.uri(), table, "postgres")
|
||||
# Ajout de la couche au canevas QGIS
|
||||
QgsProject.instance().addMapLayer(layer)
|
||||
else:
|
||||
self.QMBquestion = QMessageBox.question(iface.mainWindow(), u"Attention !","La couche «" + str(self.tableWidget_2.item(row,1).text()) +' '+ str(self.tableWidget_2.item(row,2).text()) + "» ne ce trouve pas dans cette BD !",QMessageBox.StandardButton(0x00004000))
|
||||
def combobox_custom(self):
|
||||
|
||||
Reference in New Issue
Block a user