make menthod and variable naming consistent, some cleanup

This commit is contained in:
Alexander Bruy 2014-03-25 19:51:49 +02:00
parent 71e57a7a25
commit f53576dd96

View File

@ -278,63 +278,49 @@ def combineVectorFields(layerA, layerB):
return fields return fields
def duplicate_in_memory(layer, new_name='', add_to_registry=False): def duplicateInMemory(layer, newName='', addToRegistry=False):
"""Return a memory copy of a layer
layer: QgsVectorLayer that shall be copied to memory.
new_name: The name of the copied layer.
add_to_registry: if True, the new layer will be added to the QgsMapRegistry
Returns an in-memory copy of a layer.
""" """
Return a memory copy of a layer if newName is '':
newName = layer.name() + ' (Memory)'
:param layer: QgsVectorLayer that shall be copied to memory.
:type layer: QgsVectorLayer
:param new_name: The name of the copied layer.
:type new_name: str
:param add_to_registry: if True, the new layer will be added to
the QgsMapRegistry
:type: bool
:returns: An in-memory copy of a layer.
:rtype: QgsMapLayer
"""
if new_name is '':
new_name = layer.name() + ' TMP'
if layer.type() == QgsMapLayer.VectorLayer: if layer.type() == QgsMapLayer.VectorLayer:
v_type = layer.geometryType() geomType = layer.geometryType()
if v_type == QGis.Point: if geomType == QGis.Point:
type_str = 'Point' strType = 'Point'
elif v_type == QGis.Line: elif geomType == QGis.Line:
type_str = 'Line' strType = 'Line'
elif v_type == QGis.Polygon: elif geomType == QGis.Polygon:
type_str = 'Polygon' strType = 'Polygon'
else: else:
raise RuntimeError('Layer is whether Point nor ' raise RuntimeError('Layer is whether Point nor Line nor Polygon')
'Line nor Polygon')
else: else:
raise RuntimeError('Layer is not a VectorLayer') raise RuntimeError('Layer is not a VectorLayer')
crs = layer.crs().authid().lower() crs = layer.crs().authid().lower()
my_uuid = str(uuid.uuid4()) myUuid = str(uuid.uuid4())
uri = '%s?crs=%s&index=yes&uuid=%s' % (type_str, crs, my_uuid) uri = '%s?crs=%s&index=yes&uuid=%s' % (strType, crs, myUuid)
mem_layer = QgsVectorLayer(uri, new_name, 'memory') memLayer = QgsVectorLayer(uri, newName, 'memory')
mem_provider = mem_layer.dataProvider() memProvider = memLayer.dataProvider()
provider = layer.dataProvider() provider = layer.dataProvider()
v_fields = provider.fields() fields = provider.fields().toList()
memProvider.addAttributes(fields)
fields = [] memLayer.updateFields()
for i in v_fields:
fields.append(i)
mem_provider.addAttributes(fields)
for ft in provider.getFeatures(): for ft in provider.getFeatures():
mem_provider.addFeatures([ft]) memProvider.addFeatures([ft])
if add_to_registry: if addToRegistry:
if mem_layer.isValid(): if memLayer.isValid():
QgsMapLayerRegistry.instance().addMapLayer(mem_layer) QgsMapLayerRegistry.instance().addMapLayer(memLayer)
else: else:
raise RuntimeError('Layer invalid') raise RuntimeError('Layer invalid')
return mem_layer return memLayer