本文整理汇总了Python中qgis.core.QgsVectorLayer.selectedFeatureIds方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorLayer.selectedFeatureIds方法的具体用法?Python QgsVectorLayer.selectedFeatureIds怎么用?Python QgsVectorLayer.selectedFeatureIds使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer.selectedFeatureIds方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testFeatureSourceInput
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import selectedFeatureIds [as 别名]
def testFeatureSourceInput(self):
# create a memory layer and add to project and context
layer = QgsVectorLayer("Point?crs=epsg:3857&field=fldtxt:string&field=fldint:integer",
"testmem", "memory")
self.assertTrue(layer.isValid())
pr = layer.dataProvider()
f = QgsFeature()
f.setAttributes(["test", 123])
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))
f2 = QgsFeature()
f2.setAttributes(["test2", 457])
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(110, 200)))
self.assertTrue(pr.addFeatures([f, f2]))
self.assertEqual(layer.featureCount(), 2)
# select first feature
layer.selectByIds([next(layer.getFeatures()).id()])
self.assertEqual(len(layer.selectedFeatureIds()), 1)
QgsProject.instance().addMapLayer(layer)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
alg = QgsApplication.processingRegistry().createAlgorithmById('grass7:v.buffer')
self.assertIsNotNone(alg)
temp_file = os.path.join(self.temp_dir, 'grass_output_sel.shp')
parameters = {'input': QgsProcessingFeatureSourceDefinition('testmem', True),
'cats': '',
'where': '',
'type': [0, 1, 4],
'distance': 1,
'minordistance': None,
'angle': 0,
'column': None,
'scale': 1,
'tolerance': 0.01,
'-s': False,
'-c': False,
'-t': False,
'output': temp_file,
'GRASS_REGION_PARAMETER': None,
'GRASS_SNAP_TOLERANCE_PARAMETER': -1,
'GRASS_MIN_AREA_PARAMETER': 0.0001,
'GRASS_OUTPUT_TYPE_PARAMETER': 0,
'GRASS_VECTOR_DSCO': '',
'GRASS_VECTOR_LCO': ''}
feedback = QgsProcessingFeedback()
results, ok = alg.run(parameters, context, feedback)
self.assertTrue(ok)
self.assertTrue(os.path.exists(temp_file))
# make sure that layer has correct features
res = QgsVectorLayer(temp_file, 'res')
self.assertTrue(res.isValid())
self.assertEqual(res.featureCount(), 1)
QgsProject.instance().removeMapLayer(layer)
示例2: testGetOgrCompatibleSourceFromFeatureSource
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import selectedFeatureIds [as 别名]
def testGetOgrCompatibleSourceFromFeatureSource(self):
# create a memory layer and add to project and context
layer = QgsVectorLayer("Point?field=fldtxt:string&field=fldint:integer",
"testmem", "memory")
self.assertTrue(layer.isValid())
pr = layer.dataProvider()
f = QgsFeature()
f.setAttributes(["test", 123])
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))
f2 = QgsFeature()
f2.setAttributes(["test2", 457])
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))
self.assertTrue(pr.addFeatures([f, f2]))
self.assertEqual(layer.featureCount(), 2)
# select first feature
layer.selectByIds([next(layer.getFeatures()).id()])
self.assertEqual(len(layer.selectedFeatureIds()), 1)
QgsProject.instance().addMapLayer(layer)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
alg = QgsApplication.processingRegistry().createAlgorithmById('gdal:buffervectors')
self.assertIsNotNone(alg)
parameters = {'INPUT': QgsProcessingFeatureSourceDefinition('testmem', True)}
feedback = QgsProcessingFeedback()
# check that memory layer is automatically saved out to shape when required by GDAL algorithms
ogr_data_path, ogr_layer_name = alg.getOgrCompatibleSource('INPUT', parameters, context, feedback,
executing=True)
self.assertTrue(ogr_data_path)
self.assertTrue(ogr_data_path.endswith('.shp'))
self.assertTrue(os.path.exists(ogr_data_path))
self.assertTrue(ogr_layer_name)
# make sure that layer has only selected feature
res = QgsVectorLayer(ogr_data_path, 'res')
self.assertTrue(res.isValid())
self.assertEqual(res.featureCount(), 1)
QgsProject.instance().removeMapLayer(layer)
示例3: TestVectorlayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import selectedFeatureIds [as 别名]
class TestVectorlayer(utils_for_tests.MidvattenTestSpatialiteDbSv):
@mock.patch('db_utils.QgsProject.instance',
utils_for_tests.MidvattenTestSpatialiteNotCreated.mock_instance_settings_database)
def create_vlayer(self, no_print=False):
self.qgs = QgsApplication([], True)
self.qgs.initQgis()
dbconnection = db_utils.DbConnectionManager()
uri = dbconnection.uri
uri.setDataSource('', 'obs_points', 'geometry', '', 'obsid')
dbtype = db_utils.get_dbtype(dbconnection.dbtype)
self.vlayer = QgsVectorLayer(uri.uri(), 'TestLayer', dbtype)
features = self.vlayer.getFeatures()
feature_ids = [feature.id() for feature in features]
if not no_print:
print("1. Valid vlayer '{}'".format(self.vlayer.isValid()))
print("2. feature_ids: " + str(feature_ids))
print("5. QgsVectorLayer.getFeature(): " + str([self.vlayer.getFeature(x).id() for x in feature_ids]))
print("6. QgsVectorLayer.getFeature() type: " + str([str(type(self.vlayer.getFeature(x))) for x in feature_ids]))
print("7. QgsVectorLayer.getFeatures(): " + str([x.id() for x in self.vlayer.getFeatures(feature_ids)]))
print("8. QgsVectorLayer.featureCount(): " + str(self.vlayer.featureCount()))
def select_features(self, feature_ids=None, no_print=True):
if feature_ids is None:
features = self.vlayer.getFeatures()
feature_ids = [feature.id() for feature in features]
self.vlayer.selectByIds(feature_ids)
if not no_print:
print("3. QgsVectorLayer.selectedFeatureIds: " + str(self.vlayer.selectedFeatureIds()))
print("4. QgsVectorLayer.getSelectedFeatures: " + str([x.id() for x in self.vlayer.getSelectedFeatures()]))
@mock.patch('midvatten_utils.MessagebarAndLog')
@mock.patch('stratigraphy.utils.pop_up_info', autospec=True)
@mock.patch('db_utils.QgsProject.instance',
utils_for_tests.MidvattenTestSpatialiteNotCreated.mock_instance_settings_database)
def test_vlayer(self, mock_skippopup, mock_messagebar):
"""
:param mock_skippopup:
:param mock_messagebar:
:return:
"""
for obsid in [1, 2, 3]:
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ({})'''.format(str(obsid)))
self.create_vlayer()
self.select_features()
feature_ids = [feature.id() for feature in self.vlayer.getFeatures()]
reference_ids = (1, 2, 3)
assert self.vlayer.isValid()
assert len(feature_ids) == len(reference_ids)
assert tuple(feature_ids) == reference_ids
assert tuple(sorted([x for x in self.vlayer.selectedFeatureIds()])) == reference_ids
assert tuple(sorted([x.id() for x in self.vlayer.getSelectedFeatures()])) == reference_ids
assert tuple(sorted([x.id() for x in self.vlayer.getFeatures(feature_ids)])) == reference_ids
assert self.vlayer.featureCount() == 3
@mock.patch('midvatten_utils.MessagebarAndLog')
@mock.patch('stratigraphy.utils.pop_up_info', autospec=True)
@mock.patch('db_utils.QgsProject.instance',
utils_for_tests.MidvattenTestSpatialiteNotCreated.mock_instance_settings_database)
def test_vlayer_other_ints_ids(self, mock_skippopup, mock_messagebar):
"""
:param mock_skippopup:
:param mock_messagebar:
:return:
"""
for obsid in [4, 5, 6]:
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid) VALUES ({})'''.format(str(obsid)))
self.create_vlayer()
self.select_features()
feature_ids = [feature.id() for feature in self.vlayer.getFeatures()]
reference_ids = (1, 2, 3)
assert self.vlayer.isValid()
assert len(feature_ids) == len(reference_ids)
assert tuple(feature_ids) == reference_ids
assert tuple(sorted([x for x in self.vlayer.selectedFeatureIds()])) == reference_ids
assert tuple(sorted([x.id() for x in self.vlayer.getSelectedFeatures()])) == reference_ids
assert tuple(sorted([x.id() for x in self.vlayer.getFeatures(feature_ids)])) == reference_ids
assert self.vlayer.featureCount() == 3
@mock.patch('midvatten_utils.MessagebarAndLog')
@mock.patch('stratigraphy.utils.pop_up_info', autospec=True)
@mock.patch('db_utils.QgsProject.instance',
utils_for_tests.MidvattenTestSpatialiteNotCreated.mock_instance_settings_database)
def test_vlayer_strings(self, mock_skippopup, mock_messagebar):
"""
:param mock_skippopup:
:param mock_messagebar:
:return:
"""
for obsid in ['A', 'b', 'c1']:
#.........这里部分代码省略.........
示例4: TestStratigraphy
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import selectedFeatureIds [as 别名]
class TestStratigraphy(utils_for_tests.MidvattenTestPostgisDbSv):
@mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated.mock_instance_settings_database)
@mock.patch('db_utils.get_postgis_connections', utils_for_tests.MidvattenTestPostgisNotCreated.mock_postgis_connections)
def create_and_select_vlayer(self):
self.qgs = QgsApplication([], True)
self.qgs.initQgis()
self.midvatten.ms.settingsdict['secplotdrillstop'] = "%berg%"
dbconnection = db_utils.DbConnectionManager()
uri = dbconnection.uri
uri.setDataSource('', 'obs_points', 'geometry', '', 'obsid')
dbtype = db_utils.get_dbtype(dbconnection.dbtype)
self.vlayer = QgsVectorLayer(uri.uri(), 'TestLayer', dbtype)
features = self.vlayer.getFeatures()
feature_ids = [feature.id() for feature in features]
self.vlayer.selectByIds(feature_ids)
print("1. Valid vlayer '{}'".format(self.vlayer.isValid()))
print("2. feature_ids: " + str(feature_ids))
print("3. QgsVectorLayer.selectedFeatureIds: " + str(self.vlayer.selectedFeatureIds()))
print("4. QgsVectorLayer.getSelectedFeatures: " + str([x.id() for x in self.vlayer.getSelectedFeatures()]))
print("5. QgsVectorLayer.getFeature(): " + str([self.vlayer.getFeature(x).id() for x in feature_ids]))
print("6. QgsVectorLayer.getFeature() type: " + str([str(type(self.vlayer.getFeature(x))) for x in feature_ids]))
print("7. QgsVectorLayer.getFeatures(): " + str([x.id() for x in self.vlayer.getFeatures(feature_ids)]))
@mock.patch('midvatten_utils.MessagebarAndLog')
@mock.patch('stratigraphy.utils.pop_up_info', autospec=True)
@mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated.mock_instance_settings_database)
@mock.patch('db_utils.get_postgis_connections', utils_for_tests.MidvattenTestPostgisNotCreated.mock_postgis_connections)
def test_stratigraphy(self, mock_skippopup, mock_messagebar):
"""
:param mock_skippopup:
:param mock_messagebar:
:return:
"""
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_gs, geometry) VALUES ('1', 5, ST_GeomFromText('POINT(633466 711659)', 3006))''')
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_gs, geometry) VALUES ('2', 10, ST_GeomFromText('POINT(6720727 016568)', 3006))''')
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_gs, geometry) VALUES ('3', 20, ST_GeomFromText('POINT(6720728 016569)', 3006))''')
db_utils.sql_alter_db('''INSERT INTO stratigraphy (obsid, stratid, depthtop, depthbot, geology, geoshort, capacity, development) VALUES ('1', 1, 0, 1, 'sand', 'sand', '3', 'j')''')
db_utils.sql_alter_db('''INSERT INTO stratigraphy (obsid, stratid, depthtop, depthbot, geology, geoshort, capacity, development) VALUES ('1', 2, 1, 4.5, 'morän', 'morän', '3', 'j')''')
self.create_and_select_vlayer()
#print(str(self.vlayer.isValid()))
#print(str(db_utils.sql_load_fr_db('select * from obs_points')))
#print(str(db_utils.sql_load_fr_db('select * from stratigraphy')))
dlg = Stratigraphy(self.iface, self.vlayer, self.ms.settingsdict)
#print(str(mock_messagebar.mock_calls))
#print(str(mock_skippopup.mock_calls))
dlg.showSurvey()
test = utils.anything_to_string_representation(dlg.data)
test_survey = utils.anything_to_string_representation(repr(dlg.data['1']))
test_strata = utils.anything_to_string_representation(utils.returnunicode(dlg.data['1'].strata, keep_containers=True))
assert len(mock_skippopup.mock_calls) == 0
print(str(mock_messagebar.mock_calls))
assert len(mock_messagebar.mock_calls) == 0
assert test == """{"1": SURVEY('1', 5.000000, '<QgsPointXY: POINT(633466 711659)>')}"""
assert test_survey == '''"SURVEY('1', 5.000000, '<QgsPointXY: POINT(633466 711659)>')"'''
print("test_strata: " + test_strata)
assert test_strata == '''["strata(1, '3', 'sand', 'sand', 0.000000-1.000000)", "strata(2, '3', 'morän', 'moran', 1.000000-4.500000)"]'''
@mock.patch('midvatten_utils.MessagebarAndLog')
@mock.patch('stratigraphy.utils.pop_up_info', autospec=True)
@mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated.mock_instance_settings_database)
@mock.patch('db_utils.get_postgis_connections', utils_for_tests.MidvattenTestPostgisNotCreated.mock_postgis_connections)
def test_stratigraphy_with_other_obsid_numbers(self, mock_skippopup, mock_messagebar):
"""
:param mock_skippopup:
:param mock_messagebar:
:return:
"""
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_gs, geometry) VALUES ('8', 5, ST_GeomFromText('POINT(633466 711659)', 3006))''')
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_gs, geometry) VALUES ('9', 10, ST_GeomFromText('POINT(6720727 016568)', 3006))''')
db_utils.sql_alter_db('''INSERT INTO obs_points (obsid, h_gs, geometry) VALUES ('10', 20, ST_GeomFromText('POINT(6720728 016569)', 3006))''')
db_utils.sql_alter_db('''INSERT INTO stratigraphy (obsid, stratid, depthtop, depthbot, geology, geoshort, capacity, development) VALUES ('8', 1, 0, 1, 'sand', 'sand', '3', 'j')''')
db_utils.sql_alter_db('''INSERT INTO stratigraphy (obsid, stratid, depthtop, depthbot, geology, geoshort, capacity, development) VALUES ('8', 2, 1, 4.5, 'morän', 'morän', '3', 'j')''')
self.create_and_select_vlayer()
dlg = Stratigraphy(self.iface, self.vlayer, self.ms.settingsdict)
dlg.showSurvey()
print(str(mock_skippopup.mock_calls))
test = utils.anything_to_string_representation(dlg.data)
test_survey = utils.anything_to_string_representation(repr(dlg.data['8']))
test_strata = utils.anything_to_string_representation(
utils.returnunicode(dlg.data['8'].strata, keep_containers=True))
assert len(mock_skippopup.mock_calls) == 0
assert len(mock_messagebar.mock_calls) == 0
assert test == """{"8": SURVEY('8', 5.000000, '<QgsPointXY: POINT(633466 711659)>')}"""
assert test_survey == '''"SURVEY('8', 5.000000, '<QgsPointXY: POINT(633466 711659)>')"'''
print("Test strata " + test_strata)
assert test_strata == '''["strata(1, '3', 'sand', 'sand', 0.000000-1.000000)", "strata(2, '3', 'morän', 'moran', 1.000000-4.500000)"]'''
@mock.patch('midvatten_utils.MessagebarAndLog')
@mock.patch('stratigraphy.utils.pop_up_info', autospec=True)
@mock.patch('db_utils.QgsProject.instance', utils_for_tests.MidvattenTestPostgisNotCreated.mock_instance_settings_database)
#.........这里部分代码省略.........