本文整理汇总了Python中qgis.core.QgsVectorJoinInfo.prefix方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorJoinInfo.prefix方法的具体用法?Python QgsVectorJoinInfo.prefix怎么用?Python QgsVectorJoinInfo.prefix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorJoinInfo
的用法示例。
在下文中一共展示了QgsVectorJoinInfo.prefix方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_joined_layers_conversion
# 需要导入模块: from qgis.core import QgsVectorJoinInfo [as 别名]
# 或者: from qgis.core.QgsVectorJoinInfo import prefix [as 别名]
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()])
示例2: test_join
# 需要导入模块: from qgis.core import QgsVectorJoinInfo [as 别名]
# 或者: from qgis.core.QgsVectorJoinInfo import prefix [as 别名]
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
示例3: test_join
# 需要导入模块: from qgis.core import QgsVectorJoinInfo [as 别名]
# 或者: from qgis.core.QgsVectorJoinInfo import prefix [as 别名]
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)
示例4: execute_layers_join
# 需要导入模块: from qgis.core import QgsVectorJoinInfo [as 别名]
# 或者: from qgis.core.QgsVectorJoinInfo import prefix [as 别名]
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)