本文整理汇总了Python中qgis.core.QgsVectorLayer.name方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorLayer.name方法的具体用法?Python QgsVectorLayer.name怎么用?Python QgsVectorLayer.name使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer.name方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_add_layer_to_registry
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
def test_add_layer_to_registry(self):
layer_name = layer_interaction.biuniquify_layer_name('this_layer_was_added_for_testing_purpose')
layer = QgsVectorLayer('Polygon?crs=EPSG:3857', layer_name, 'memory', False)
number_of_layers = len(QgsMapLayerRegistry.instance().mapLayers())
layer_interaction.add_layer_to_registry(layer)
self.layer_list.append(layer.name())
map_layers = QgsMapLayerRegistry.instance().mapLayers()
actual = len(map_layers)
expected = number_of_layers + 1
message = 'An error occured when adding a layer to the MapLayerRegistry. {} is not {}!'.format(actual, expected)
self.assertEqual(actual, expected, message)
layer_added = False
for layer_key in map_layers:
if map_layers[layer_key].name() == layer_name:
layer_added = True
break
self.assertTrue(layer_added, 'An error occured when adding a layer to the MapLayerRegistry.')
number_of_layers = len(map_layers)
layer_interaction.add_layer_to_registry(None)
self.assertEqual(len(QgsMapLayerRegistry.instance().mapLayers()), number_of_layers, 'An error occured when trying to add a none-type-layer to the MapLayerRegistry. The number of layers should not increase.')
示例2: __restore_geometries
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
def __restore_geometries(self):
src_file_name = self.backup_path + QDir.separator() + self.layer_id + '.shp'
if not QFile.exists(src_file_name):
self.report_message.emit(self.layer_id, 'no backup file')
self.completed = True
return
self.report_message.emit(self.layer_id, 'preparing ...')
orig_layer = QgsMapLayerRegistry.instance().mapLayer(self.layer_id)
# create a copy of the layer just for editing
layer = QgsVectorLayer(orig_layer.source(), orig_layer.name(), orig_layer.providerType())
layer.startEditing()
src_layer = QgsVectorLayer(src_file_name, layer.name(), 'ogr')
total_features = src_layer.featureCount()
QgsMessageLog.logMessage(self.plugin.tr('Features to be restored in layer <{0}>: {1}').
format(orig_layer.name(), total_features), self.plugin.tr('Vertex Tools'),
QgsMessageLog.INFO)
if total_features == 0:
self.report_message.emit(self.layer_id, 'no features to restore')
count = 0
for feature in src_layer.getFeatures():
with QMutexLocker(self.mutex):
if self.stopped:
layer.rollBack()
return
layer.changeGeometry(feature.id(), feature.geometry())
count += 1
self.run_progressed.emit(self.layer_id, count, total_features)
layer.commitChanges()
self.completed = True
示例3: _createPolygonLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
def _createPolygonLayer(self, crs=None, fields=None):
"""Creates an empty shape file layer"""
if crs is None:
crs = QgsCoordinateReferenceSystem()
crs.createFromEpsg(4326)
if fields is None:
fields = {}
myTempdir = temp_dir(sub_dir='preprocess')
myOutFilename = unique_filename(suffix='.shp',
dir=myTempdir)
mySHPWriter = QgsVectorFileWriter(myOutFilename,
'UTF-8',
fields,
QGis.WKBPolygon,
crs)
#flush the writer to write to file
del mySHPWriter
myName = self.tr('Entire area')
myLayer = QgsVectorLayer(myOutFilename, myName, 'ogr')
LOGGER.debug('created' + myLayer.name())
return myLayer
示例4: TestQgsLayerTreeView
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
class TestQgsLayerTreeView(unittest.TestCase):
def __init__(self, methodName):
"""Run once on class initialization."""
unittest.TestCase.__init__(self, methodName)
# setup a dummy project
self.project = QgsProject()
self.layer = QgsVectorLayer("Point?field=fldtxt:string",
"layer1", "memory")
self.layer2 = QgsVectorLayer("Point?field=fldtxt:string",
"layer2", "memory")
self.layer3 = QgsVectorLayer("Point?field=fldtxt:string",
"layer3", "memory")
self.layer4 = QgsVectorLayer("Point?field=fldtxt:string",
"layer4", "memory")
self.layer5 = QgsVectorLayer("Point?field=fldtxt:string",
"layer5", "memory")
self.project.addMapLayers([self.layer, self.layer2, self.layer3])
self.model = QgsLayerTreeModel(self.project.layerTreeRoot())
def nodeOrder(self, group):
nodeorder = []
layerTree = QgsLayerTree()
for node in group:
if QgsLayerTree.isGroup(node):
groupname = node.name()
nodeorder.append(groupname)
for child in self.nodeOrder(node.children()):
nodeorder.append(groupname + '-' + child)
elif QgsLayerTree.isLayer(node):
nodeorder.append(node.layer().name())
return nodeorder
def testSetModel(self):
view = QgsLayerTreeView()
# should not work
string_list_model = QStringListModel()
view.setModel(string_list_model)
self.assertFalse(view.model())
# should work
view.setModel(self.model)
self.assertEqual(view.model(), self.model)
def testSetCurrentLayer(self):
view = QgsLayerTreeView()
view.setModel(self.model)
current_layer_changed_spy = QSignalSpy(view.currentLayerChanged)
self.assertFalse(view.currentLayer())
view.setCurrentLayer(self.layer3)
self.assertEqual(view.currentLayer(), self.layer3)
self.assertEqual(len(current_layer_changed_spy), 1)
view.setCurrentLayer(self.layer)
self.assertEqual(view.currentLayer(), self.layer)
self.assertEqual(len(current_layer_changed_spy), 2)
view.setCurrentLayer(None)
self.assertFalse(view.currentLayer())
self.assertEqual(len(current_layer_changed_spy), 3)
def testDefaultActions(self):
view = QgsLayerTreeView()
view.setModel(self.model)
actions = QgsLayerTreeViewDefaultActions(view)
# show in overview action
view.setCurrentLayer(self.layer)
self.assertEqual(view.currentNode().customProperty('overview', 0), False)
show_in_overview = actions.actionShowInOverview()
show_in_overview.trigger()
self.assertEqual(view.currentNode().customProperty('overview', 0), True)
show_in_overview.trigger()
self.assertEqual(view.currentNode().customProperty('overview', 0), False)
def testMoveOutOfGroupActionLayer(self):
"""Test move out of group action on layer"""
view = QgsLayerTreeView()
group = self.project.layerTreeRoot().addGroup("embeddedgroup")
group.addLayer(self.layer4)
group.addLayer(self.layer5)
groupname = group.name()
view.setModel(self.model)
actions = QgsLayerTreeViewDefaultActions(view)
self.assertEqual(self.nodeOrder(self.project.layerTreeRoot().children()), [
self.layer.name(),
self.layer2.name(),
self.layer3.name(),
groupname,
groupname + '-' + self.layer4.name(),
groupname + '-' + self.layer5.name(),
])
view.setCurrentLayer(self.layer5)
moveOutOfGroup = actions.actionMoveOutOfGroup()
moveOutOfGroup.trigger()
self.assertEqual(self.nodeOrder(self.project.layerTreeRoot().children()), [
self.layer.name(),
self.layer2.name(),
self.layer3.name(),
#.........这里部分代码省略.........
示例5: nodeDuplicate
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
def nodeDuplicate(node,newname=None,position='bottom',target_node=None):
import time
if oeq_global.isStringOrUnicode(node):
node = nodeByName(node)
if len(node) == 0:
return None
node = node[0]
if target_node == None:
target_node = node.parent()
else:
if oeq_global.isStringOrUnicode(target_node):
target_node = nodeByName(target_node)
if len(target_node) == 0:
return None
target_node = target_node[0]
#
#print node.layer().name()
#print newname
layer = node.layer()
# source of the layer
provider = layer.dataProvider()
#print "---------------------"
#print provider.crs().authid()
#print layer.crs().authid()
#print "---------------------"
# creation of the shapefiles:
pathfile = os.path.join(oeq_global.OeQ_project_path(),newname+'.shp')
ct_pathfile = os.path.join(oeq_global.OeQ_project_path(),newname+'.qml')
writer = QgsVectorFileWriter(pathfile, "CP1250", provider.fields(), provider.geometryType(), layer.crs(), "ESRI Shapefile")
#print writer
outelem = QgsFeature()
# iterating over the input layer
for elem in layer.getFeatures():
outelem.setGeometry(elem.geometry() )
outelem.setAttributes(elem.attributes())
writer.addFeature(outelem)
del writer
oeq_global.OeQ_wait_for_file(pathfile)
#time.sleep(1)
newlayer = QgsVectorLayer(pathfile, newname, "ogr")
#print layer.isValid()
QgsMapLayerRegistry.instance().addMapLayer(newlayer, True)
newlayer.setCrs(layer.crs())
#oeq_global.OeQ_wait_for_renderer(60000)
#print newlayer.name()
newnode = nodeByName(newlayer.name())
if len(newnode) == 0:
return None
newnode = newnode[0]
# oeq_global.OeQ_unlockQgis()
#time.sleep(1)
newlayer.loadNamedStyle(ct_pathfile)
nodeCollapse(newnode)
#time.sleep(1)
#position = nodePosition(node,target_node)
newnode=nodeMove(newnode,position,target_node)
#time.sleep(1)
#oeq_global.OeQ_unlockQgis()
#oeq_global.OeQ_wait(0.5)
#print "+++++++++++++++"
return newnode
示例6: UgQgis
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
class UgQgis(object):
"""
interfaces an UnstructuredGrid object and Qgis layers
"""
def __init__(self,g):
self.g = self.extend_grid(g)
self.install_edge_quality()
def install_edge_quality(self):
if 'edge_quality' not in self.g.edges.dtype.names:
edge_q=np.zeros(self.g.Nedges(),'f8')
self.g.add_edge_field('edge_quality',edge_q)
self.update_edge_quality()
def update_edge_quality(self,edges=None):
# First part is calculating the values
if edges is None:
edges=slice(None)
g=self.g
vc=g.cells_center()
ec=g.edges_center()
g.edge_to_cells()
c2c=dist( vc[g.edges['cells'][edges,0]] - vc[g.edges['cells'][edges,1]] )
A=g.cells_area()
Acc= A[g.edges['cells'][edges,:]].sum(axis=1)
c2c=c2c / np.sqrt(Acc) # normalized
c2c[ np.any(g.edges['cells'][edges,:]<0,axis=1) ] = np.inf
g.edges['edge_quality'][edges]=c2c
def extend_grid(self,g):
g.add_node_field('feat_id',np.zeros(g.Nnodes(),'i4')-1)
g.add_edge_field('feat_id',np.zeros(g.Nedges(),'i4')-1)
g.add_cell_field('feat_id',np.zeros(g.Ncells(),'i4')-1)
# install grid callbacks:
if 1: # re-enabled. DBG - temp. disabled
g.subscribe_after('modify_node',self.on_modify_node)
g.subscribe_after('add_node',self.on_add_node)
g.subscribe_after('add_edge',self.on_add_edge)
g.subscribe_after('add_cell',self.on_add_cell)
g.subscribe_before('delete_edge',self.on_delete_edge)
g.subscribe_before('delete_node',self.on_delete_node)
g.subscribe_before('delete_cell',self.on_delete_cell)
return g
def on_delete_node(self,g,func_name,n,**k):
# self.log('got signal for delete node')
self.nl.dataProvider().deleteFeatures([self.g.nodes['feat_id'][n]])
self.nl.triggerRepaint()
def on_delete_edge(self,g,func_name,j,**k):
# self.log('got signal for delete edge')
self.el.dataProvider().deleteFeatures([self.g.edges['feat_id'][j]])
self.el.triggerRepaint()
def on_delete_cell(self,g,func_name,c,**k):
# this one isn't working, while the others are...
feat_id=self.g.cells['feat_id'][c]
self.log('got signal for delete cell %d, feat_id %s'%(c,feat_id))
self.cl.dataProvider().deleteFeatures([feat_id])
self.cl.triggerRepaint()
# Callbacks installed on the grid
# instrument the grid to propagate changes back to the UI
def on_modify_node(self,g,func_name,n,**k):
if 'x' in k:
fid=self.g.nodes[n]['feat_id']
geom=self.node_geometry(n)
self.nl.dataProvider().changeGeometryValues({fid:geom})
self.nl.triggerRepaint()
# update cells first, so that edge_quality has fresh
# cell center and area information
cell_changes={}
cells=self.g.node_to_cells(n)
self.g.cells_center(refresh=cells)
self.g.cells['_area'][cells]=np.nan # trigger recalc.
cell_edges=set()
for i in cells:
# this was all sorts of messed up - don't understand how
# it was working at all before...
fid=self.g.cells[i]['feat_id']
geom=self.cell_geometry(i)
cell_changes[fid]=geom
cell_edges.update(self.g.cell_to_edges(i))
self.cl.dataProvider().changeGeometryValues(cell_changes)
self.cl.triggerRepaint()
edge_geom_changes={}
# edge centers are not cached at this point, so don't
# need to update them...
for j in self.g.node_to_edges(n):
fid=self.g.edges[j]['feat_id']
geom=self.edge_geometry(j)
edge_geom_changes[fid]=geom
self.el.dataProvider().changeGeometryValues(edge_geom_changes)
#.........这里部分代码省略.........
示例7: geojson_to_memory
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import name [as 别名]
def geojson_to_memory(path, name):
my_WkbType = {
'Unknown': 0,
'Point': 1,
'LineString': 2,
'Polygon': 3,
'MultiPoint': 4,
'MultiLineString': 5,
'MultiPolygon': 6,
'NoGeometry': 7,
'Point25D': 8,
'LineString25D': 9,
'Polygon25D': 10,
'MultiPoint25D': 11,
'MultiLineString25D': 12,
'MultiPolygon25D': 13}
# for i,j in my_WkbType.items():
# #print i + " : " + str(j)
my_rev_WkbType = {v: k for k, v in my_WkbType.items()}
# for i,j in my_WkbType.items():
# #print i + " : " + str(j)
#print 'Path to geojson: %s' % path
input_layer=QgsVectorLayer(path,
"input_layer", "ogr")
print 'path: %s' % path
print 'input_layer %s' % input_layer.name()
dp = input_layer.dataProvider()
QGisWKBType = dp.geometryType()
#print 'QGisWKBType: ' + str(QGisWKBType)
EPSG_code = int(dp.crs().authid().split(":")[1])
print str(EPSG_code)
destination_layer = QgsVectorLayer(
my_rev_WkbType[QGisWKBType] + '?crs=epsg:' + str(EPSG_code) + '&index=yes',
name,
'memory')
destination_layer_data_provider = destination_layer.dataProvider()
input_layer_attrib_names = input_layer.dataProvider().fields()
oldattributeList = input_layer.dataProvider().fields().toList()
newattributeList = []
for attrib in oldattributeList:
if destination_layer.fieldNameIndex(attrib.name()) == -1:
newattributeList.append(QgsField(attrib.name(), attrib.type()))
destination_layer_data_provider.addAttributes(newattributeList)
destination_layer.updateFields()
destination_layer.startEditing()
# cfeature = QgsFeature()
cfeatures = []
xfeatures = input_layer.getFeatures()
for xfeature in xfeatures:
xgeometry = xfeature.geometry()
cfeature_Attributes = []
cfeature_Attributes.extend(xfeature.attributes())
cfeature = QgsFeature()
cfeature.setGeometry(xgeometry)
cfeature.setAttributes(cfeature_Attributes)
cfeatures.append(cfeature)
destination_layer.addFeatures(cfeatures)
destination_layer.commitChanges()
return destination_layer