本文整理汇总了Python中qgis.core.QgsVectorJoinInfo类的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorJoinInfo类的具体用法?Python QgsVectorJoinInfo怎么用?Python QgsVectorJoinInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsVectorJoinInfo类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: applySymbology
def applySymbology(self):
self.getConnection()
vlayer = qgis.utils.iface.mapCanvas().currentLayer()
if vlayer == None:
return
fields = vlayer.dataProvider().fields()
classField = None
for f in fields:
if f.name() == "classtype":
classField = 'classtype'
elif f.name() == "result":
classField = 'result'
print classField
class_loaded = False
for layer in QgsMapLayerRegistry.instance().mapLayers().values():
if layer.name() == "class":
vlayerClass = layer
class_loaded = True
if not class_loaded:
uriSubClass = QgsDataSourceURI()
uriSubClass.setConnection(self.serverName, "5432", self.database, self.usr , self.pw)
uriSubClass.setDataSource("classification", "class", None, "", "id")
vlayerClass = QgsVectorLayer(uriSubClass.uri(), "class", "postgres")
QgsMapLayerRegistry.instance().addMapLayer(vlayerClass)
for field in fields:
index = vlayer.fieldNameIndex(field.name())
if field.name() == classField:
vlayer.editFormConfig().setWidgetType(index, 'ValueRelation')
vlayer.editFormConfig().setWidgetConfig(index, {'Layer': vlayerClass.id(), 'Key': 'id', 'Value': 'classname'})
useJoin = True
if useJoin:
joinObject = QgsVectorJoinInfo()
joinObject.joinLayerId = vlayerClass.id()
joinObject.joinFieldName = 'id'
joinObject.targetFieldName = classField
joinObject.memoryCache = True
vlayer.addJoin(joinObject)
self.join.append(joinObject)
categories = []
iter = vlayerClass.getFeatures()
for feature in iter:
classname = feature['classname']
color = QColor(feature['red'], feature['green'], feature['blue'])
sym = QgsSymbolV2.defaultSymbol(vlayer.geometryType())
sym.setColor(QColor(color))
category = QgsRendererCategoryV2(classname, sym, classname)
categories.append(category)
field = "class_classname"
renderer = QgsCategorizedSymbolRendererV2(field, categories)
vlayer.setRendererV2(renderer)
qgis.utils.iface.messageBar().pushMessage("Information", "Editor widget set", level = qgis.gui.QgsMessageBar.INFO, duration = 5)
qgis.utils.iface.setActiveLayer(vlayer)
示例2: test_join
def test_join(self):
joinLayer = createJoinLayer()
QgsMapLayerRegistry.instance().addMapLayers([joinLayer])
layer = createLayerWithOnePoint()
join = QgsVectorJoinInfo()
join.targetFieldName = "fldint"
join.joinLayerId = joinLayer.id()
join.joinFieldName = "y"
join.memoryCache = True
layer.addJoin(join)
flds = layer.pendingFields()
assert len(flds) == 4
assert flds[2].name() == "joinlayer_x"
assert flds[3].name() == "joinlayer_z"
assert flds.fieldOrigin(0) == QgsFields.OriginProvider
assert flds.fieldOrigin(2) == QgsFields.OriginJoin
assert flds.fieldOrigin(3) == QgsFields.OriginJoin
assert flds.fieldOriginIndex(0) == 0
assert flds.fieldOriginIndex(2) == 0
assert flds.fieldOriginIndex(3) == 2
f = QgsFeature()
fi = layer.getFeatures()
assert fi.nextFeature(f) == True
attrs = f.attributes()
assert len(attrs) == 4
assert attrs[0].toString() == "test"
assert attrs[1].toInt()[0] == 123
assert attrs[2].toString() == "foo"
assert attrs[3].toInt()[0] == 321
assert fi.nextFeature(f) == False
f2 = QgsFeature()
assert layer.featureAtId(f.id(), f2)
assert len(f2.attributes()) == 4
assert f2[2].toString() == "foo"
assert f2[3].toInt()[0] == 321
示例3: execute_layers_join
def execute_layers_join(layer, layer_field, column_header, fk_layer, fk_field):
"""
Joins two layers with specified field.
:param layer: The destination layer of the merge.
:type layer: QgsVectorLayer
:param layer_field: The source layer of the merge.
:type layer_field: String
:param fk_layer: The foreign key layer object.
:type fk_layer: QgsVectorLayer
:param fk_field: The foreign key layer field name.
:type fk_field: String
:return:
:rtype:
"""
join = QgsVectorJoinInfo()
join.joinLayerId = fk_layer.id()
join.joinFieldName = 'id'
join.setJoinFieldNamesSubset([fk_field])
join.targetFieldName = layer_field
join.memoryCache = True
join.prefix = u'{} '.format(column_header)
layer.addJoin(join)
示例4: test_joined_layers_conversion
def test_joined_layers_conversion(self):
v1 = QgsVectorLayer("Point?field=id:integer&field=b_id:integer&field=c_id:integer&field=name:string", "A", "memory")
self.assertEqual(v1.isValid(), True)
v2 = QgsVectorLayer("Point?field=id:integer&field=bname:string&field=bfield:integer", "B", "memory")
self.assertEqual(v2.isValid(), True)
v3 = QgsVectorLayer("Point?field=id:integer&field=cname:string", "C", "memory")
self.assertEqual(v3.isValid(), True)
QgsProject.instance().addMapLayers([v1, v2, v3])
joinInfo = QgsVectorJoinInfo()
joinInfo.targetFieldName = "b_id"
joinInfo.joinLayerId = v2.id()
joinInfo.joinFieldName = "id"
#joinInfo.prefix = "B_";
v1.addJoin(joinInfo)
self.assertEqual(len(v1.fields()), 6)
df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname, j1.bfield AS B_bfield FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
# with a field subset
v1.removeJoin(v2.id())
joinInfo.setJoinFieldNamesSubset(["bname"])
v1.addJoin(joinInfo)
self.assertEqual(len(v1.fields()), 5)
df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
joinInfo.setJoinFieldNamesSubset(None)
# add a table prefix to the join
v1.removeJoin(v2.id())
joinInfo.prefix = "BB_"
v1.addJoin(joinInfo)
self.assertEqual(len(v1.fields()), 6)
df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
self.assertEqual(df.query(), 'SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS BB_bname, j1.bfield AS BB_bfield FROM {} AS t LEFT JOIN {} AS j1 ON t."b_id"=j1."id"'.format(v1.id(), v2.id()))
joinInfo.prefix = ""
v1.removeJoin(v2.id())
v1.addJoin(joinInfo)
# add another join
joinInfo2 = QgsVectorJoinInfo()
joinInfo2.targetFieldName = "c_id"
joinInfo2.joinLayerId = v3.id()
joinInfo2.joinFieldName = "id"
v1.addJoin(joinInfo2)
self.assertEqual(len(v1.fields()), 7)
df = QgsVirtualLayerDefinitionUtils.fromJoinedLayer(v1)
self.assertEqual(df.query(), ('SELECT t.rowid AS uid, t.id, t.b_id, t.c_id, t.name, j1.bname AS B_bname, j1.bfield AS B_bfield, j2.cname AS C_cname FROM {} AS t ' +
'LEFT JOIN {} AS j1 ON t."b_id"=j1."id" ' +
'LEFT JOIN {} AS j2 ON t."c_id"=j2."id"').format(v1.id(), v2.id(), v3.id()))
QgsProject.instance().removeMapLayers([v1.id(), v2.id(), v3.id()])
示例5: test_join
def test_join(self):
joinLayer = createJoinLayer()
joinLayer2 = createJoinLayer()
QgsMapLayerRegistry.instance().addMapLayers([joinLayer, joinLayer2])
layer = createLayerWithOnePoint()
join = QgsVectorJoinInfo()
join.targetFieldName = "fldint"
join.joinLayerId = joinLayer.id()
join.joinFieldName = "y"
join.memoryCache = True
layer.addJoin(join)
join2 = QgsVectorJoinInfo()
join2.targetFieldName = "fldint"
join2.joinLayerId = joinLayer2.id()
join2.joinFieldName = "y"
join2.memoryCache = True
join2.prefix = "custom-prefix_"
layer.addJoin(join2)
flds = layer.pendingFields()
self.assertEquals(len(flds), 6)
self.assertEquals(flds[2].name(), "joinlayer_x")
self.assertEquals(flds[3].name(), "joinlayer_z")
self.assertEquals(flds[4].name(), "custom-prefix_x")
self.assertEquals(flds[5].name(), "custom-prefix_z")
self.assertEquals(flds.fieldOrigin(0), QgsFields.OriginProvider)
self.assertEquals(flds.fieldOrigin(2), QgsFields.OriginJoin)
self.assertEquals(flds.fieldOrigin(3), QgsFields.OriginJoin)
self.assertEquals(flds.fieldOriginIndex(0), 0)
self.assertEquals(flds.fieldOriginIndex(2), 0)
self.assertEquals(flds.fieldOriginIndex(3), 2)
f = QgsFeature()
fi = layer.getFeatures()
self.assertTrue(fi.nextFeature(f))
attrs = f.attributes()
self.assertEquals(len(attrs), 6)
self.assertEquals(attrs[0], "test")
self.assertEquals(attrs[1], 123)
self.assertEquals(attrs[2], "foo")
self.assertEquals(attrs[3], 321)
self.assertFalse(fi.nextFeature(f))
f2 = layer.getFeatures(QgsFeatureRequest(f.id())).next()
self.assertEquals(len(f2.attributes()), 6)
self.assertEquals(f2[2], "foo")
self.assertEquals(f2[3], 321)
示例6: test_join
def test_join(self):
joinLayer = createJoinLayer()
joinLayer2 = createJoinLayer()
QgsMapLayerRegistry.instance().addMapLayers([joinLayer, joinLayer2])
layer = createLayerWithOnePoint()
join = QgsVectorJoinInfo()
join.targetFieldName = "fldint"
join.joinLayerId = joinLayer.id()
join.joinFieldName = "y"
join.memoryCache = True
layer.addJoin(join)
join2 = QgsVectorJoinInfo()
join2.targetFieldName = "fldint"
join2.joinLayerId = joinLayer2.id()
join2.joinFieldName = "y"
join2.memoryCache = True
join2.prefix = "custom-prefix_"
layer.addJoin(join2)
flds = layer.pendingFields()
assert len(flds) == 6
assert flds[2].name() == "joinlayer_x"
assert flds[3].name() == "joinlayer_z"
assert flds[4].name() == "custom-prefix_x"
assert flds[5].name() == "custom-prefix_z"
assert flds.fieldOrigin(0) == QgsFields.OriginProvider
assert flds.fieldOrigin(2) == QgsFields.OriginJoin
assert flds.fieldOrigin(3) == QgsFields.OriginJoin
assert flds.fieldOriginIndex(0) == 0
assert flds.fieldOriginIndex(2) == 0
assert flds.fieldOriginIndex(3) == 2
f = QgsFeature()
fi = layer.getFeatures()
assert fi.nextFeature(f)
attrs = f.attributes()
assert len(attrs) == 6
assert attrs[0] == "test"
assert attrs[1] == 123
assert attrs[2] == "foo"
assert attrs[3] == 321
assert not fi.nextFeature(f)
f2 = layer.getFeatures(QgsFeatureRequest(f.id())).next()
assert len(f2.attributes()) == 6
assert f2[2] == "foo"
assert f2[3] == 321
示例7: QgsPoint
assert f.isValid() == True
assert f.id() == 1
assert f.geometry().asPoint() == QgsPoint(100,200)
assert f["fldtxt"] == "test"
assert f["fldint"] == 123
assert fi.nextFeature(f) == False
def test_join(self):
joinLayer = createJoinLayer()
QgsMapLayerRegistry.instance().addMapLayers([joinLayer])
layer = createLayerWithOnePoint()
join = QgsVectorJoinInfo()
join.targetFieldName = "fldint"
join.joinLayerId = joinLayer.id()
join.joinFieldName = "y"
join.memoryCache = True
layer.addJoin(join)
flds = layer.pendingFields()
assert len(flds) == 4
assert flds[2].name() == "joinlayer_x"
assert flds[3].name() == "joinlayer_z"
assert flds.fieldOrigin(0) == QgsFields.OriginProvider
assert flds.fieldOrigin(2) == QgsFields.OriginJoin
assert flds.fieldOrigin(3) == QgsFields.OriginJoin
assert flds.fieldOriginIndex(0) == 0