Esempio n. 1
0
 def buildJoin(self, originalLyr, originalLyrFieldName, joinnedLyr,
               joinLyrFieldName):
     """
     Builds a join bewteen lyr and joinnedLyr.
     :param originalLyr: QgsVectorLayer original layer;
     :param originalLyrFieldName: (str) name of the field;
     :param joinnedLyr: QgsVectorLayer lyr to be joinned to originalLayer;
     :param joinLyrFieldName: (str) name of the join field name (usually primary key of joinnedLyr)
     """
     joinObject = QgsVectorLayerJoinInfo()
     joinObject.setJoinFieldName(joinLyrFieldName)
     joinObject.setTargetFieldName(originalLyrFieldName)
     joinObject.setJoinLayer(joinnedLyr)
     joinObject.setJoinFieldNamesSubset()
     joinObject.upsertOnEdit(True)  #set to enable edit on original lyr
     joinObject.setCascadedDelete(True)
     joinObject.setDynamicFormEnabled(True)
     joinObject.setEditable(True)
     joinObject.setUsingMemoryCache(True)
     originalLyr.addJoin(joinObject)
Esempio n. 2
0
 def joinTables(self):
     d, f = self.lyrPair()
     for k, v in d.items():
         target = QgsProject.instance().mapLayer(k)
         layerToJoin = QgsProject.instance().mapLayer(v)
         fieldToJoin = QgsProject.instance()
         symb = QgsVectorLayerJoinInfo()
         symb.setJoinFieldName('id_feature')
         symb.setTargetFieldName('id')
         symb.setJoinLayerId(layerToJoin.id())
         symb.setUsingMemoryCache(True)
         symb.setEditable(True)
         symb.setDynamicFormEnabled(True)
         symb.setUpsertOnEdit(True)
         symb.setPrefix('')
         symb.setJoinFieldNamesSubset([
             'ocultar', 'legenda', 'tamanhotxt', 'justtxt', 'orient_txt',
             'orient_simb', 'offset_txt', 'offset_simb', 'prioridade',
             'offset_txt_x', 'offset_txt_y'
         ])
         symb.setJoinLayer(layerToJoin)
         target.addJoin(symb)
 def joinTables(self):
     d, f = self.lyrPair()
     for k, v in d.items():
         target = QgsProject.instance().mapLayer(k)
         layerToJoin = QgsProject.instance().mapLayer(v)
         """  # tests for previous joined layers - under research
         i = QgsProject.instance().mapLayers().values()
         for layer in i:
             fh_lyr = layer
             joinsInfo = fh_lyr.vectorJoins()
             
             if joinsInfo != 0:
                 QMessageBox.critical(iface.mainWindow(), "Error",
                                     "Previously Joins already exists! Please remove joins and try again.")
                 break  # ask for remove previous joins. use removeJoinTables()
             else:
         """
         # target.removeJoin(layerToJoin.id())
         fieldToJoin = QgsProject.instance()
         symb = QgsVectorLayerJoinInfo()
         symb.setJoinFieldName('id_feature')
         symb.setTargetFieldName('id')
         symb.setJoinLayerId(layerToJoin.id())
         symb.setUsingMemoryCache(True)
         symb.setEditable(True)
         symb.setDynamicFormEnabled(True)
         symb.setUpsertOnEdit(True)
         symb.setPrefix('')
         symb.setJoinFieldNamesSubset([
             'ocultar', 'legenda', 'tamanhotxt', 'justtxt', 'orient_txt',
             'orient_simb', 'offset_txt', 'offset_simb', 'prioridade',
             'offset_txt_x', 'offset_txt_y'
         ])
         symb.setJoinLayer(layerToJoin)
         target.addJoin(symb)
         layerToJoin.startEditing()
         target.triggerRepaint()