本文整理汇总了Python中qgis.core.QgsVectorLayer.setProviderEncoding方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorLayer.setProviderEncoding方法的具体用法?Python QgsVectorLayer.setProviderEncoding怎么用?Python QgsVectorLayer.setProviderEncoding使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorLayer
的用法示例。
在下文中一共展示了QgsVectorLayer.setProviderEncoding方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: nodeCreateMemoryLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def nodeCreateMemoryLayer(nodename, position='bottom',target_node=None,source="Point",crs=None,indexfieldname='id'):
if target_node == None:
target_node = QgsProject.instance().layerTreeRoot()
else:
if oeq_global.isStringOrUnicode(target_node):
target_node = nodeByName(target_node)
if len(target_node) == 0:
return None
target_node = target_node[0]
if path == None:
path= oeq_global.OeQ_project_path()
if crs == None:
crs = config.project_crs
new_layer = QgsVectorLayer(source + '?crs=' + crs, nodename, "memory")
new_layer.setProviderEncoding('System')
QgsMapLayerRegistry.instance().addMapLayer(new_layer, True)
#oeq_global.OeQ_wait_for_renderer(60000)
new_node = nodeMove(nodename,position,target_node)
new_layer = new_node.layer()
dataprovider = new_layer.dataProvider()
dataprovider.addAttributes([QgsField(indexfieldname, QVariant.Int)])
new_layer.updateFields()
#oeq_global.OeQ_unlockQgis()
return new_node
示例2: nodeCopyAsMemory
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def nodeCopyAsMemory(node,newname=None,position=None,target_node=None):
"""
nodeMove: Moves 'node' in position or position 'position' in group 'target_node'
:param node: Node to move or name of node to move
:param target_node: Target group to move 'node' to or name of the target group
:return: moved node or None if source or target node do not exist
"""
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]
source_layer = node.layer()
#print source_layer.name()
#print source_layer.source()
#print source_layer.providerType() + u'?crs=' + source_layer.crs().authid()
#print newname
new_layer = QgsVectorLayer( 'Polygon' + '?crs=' + source_layer.crs().authid(), newname, "memory")
new_layer.setProviderEncoding('System')
QgsMapLayerRegistry.instance().addMapLayer(new_layer, True)
#oeq_global.OeQ_wait_for_renderer(60000)
new_node = nodeByName(newname)[0]
new_node = nodeMove(new_node,position,target_node)
return new_node
示例3: test_FilterExpressionWithAccents
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def test_FilterExpressionWithAccents(self):
myShpFile = os.path.join(TEST_DATA_DIR, 'france_parts.shp')
layer = QgsVectorLayer(myShpFile, 'poly', 'ogr')
layer.setProviderEncoding("ISO-8859-1")
ids = [feat.id() for feat in layer.getFeatures(QgsFeatureRequest().setFilterExpression("TYPE_1 = 'Région'"))]
expectedIds = [0, 1, 2, 3]
myMessage = '\nExpected: {0} features\nGot: {1} features'.format(repr(expectedIds), repr(ids))
assert ids == expectedIds, myMessage
layer.setProviderEncoding("UTF-8")
ids = [feat.id() for feat in layer.getFeatures(QgsFeatureRequest().setFilterExpression("TYPE_1 = 'Région'"))]
expectedIds = []
myMessage = '\nExpected: {0} features\nGot: {1} features'.format(repr(expectedIds), repr(ids))
assert ids == expectedIds, myMessage
示例4: _qgis_layer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def _qgis_layer(uri, schema_name, layer_name, geometry_column, provider, qgis_layer_name, layer_xpath, layer_pkid):
if geometry_column is not None:
g_column = "({})".format(geometry_column)
else:
g_column = ""
if provider == "SQLite":
# use OGR for spatialite loading
l = QgsVectorLayer("{}|layername={}{}".format(uri, layer_name, g_column), qgis_layer_name, "ogr")
l.setProviderEncoding("UTF-8")
else:
if schema_name is not None:
s_table = '"{}"."{}"'.format(schema_name, layer_name)
else:
s_table = '"{}"'.format(layer_name)
# remove "PG:" in front of the uri
uri = uri[3:]
l = QgsVectorLayer("{} table={} {} sql=".format(uri, s_table, g_column), qgis_layer_name, "postgres")
# sets xpath
if layer_xpath:
l.setCustomProperty("xpath", layer_xpath)
l.setCustomProperty("pkid", layer_pkid)
return l
示例5: nodeCreateVectorLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def nodeCreateVectorLayer(nodename, position='bottom',target_node=None,path=None,source="Point",crs=None,providertype="ESRI Shapefile",indexfieldname='id'):
if target_node == None:
target_node = QgsProject.instance().layerTreeRoot()
else:
if oeq_global.isStringOrUnicode(target_node):
target_node = nodeByName(target_node)
if len(target_node) == 0:
return None
target_node = target_node[0]
if path == None:
path= oeq_global.OeQ_project_path()
if crs == None:
crs = config.project_crs
new_layer = QgsVectorLayer(source + '?crs=' + crs, nodename, "memory")
new_layer.setProviderEncoding('System')
#test
dataprovider = new_layer.dataProvider()
dataprovider.addAttributes([QgsField(indexfieldname, QVariant.Int)])
new_layer.updateFields()
writer = QgsVectorFileWriter.writeAsVectorFormat(new_layer, os.path.join(path , nodename+'.shp'), "System", new_layer.crs(), providertype)
if writer != QgsVectorFileWriter.NoError:
oeq_global.OeQ_push_error(title='Write Error:', message=os.path.join(path , nodename+'.shp'))
return None
del writer
oeq_global.OeQ_wait_for_file(os.path.join(path , nodename+'.shp'))
iface.addVectorLayer(os.path.join(path , nodename+'.shp'),nodename, 'ogr')
#oeq_global.OeQ_wait_for_renderer(60000)
new_node = nodeMove(nodename,position,target_node)
new_layer = new_node.layer()
#dataprovider = new_layer.dataProvider()
#dataprovider.addAttributes([QgsField(indexfieldname, QVariant.Int)])
#new_layer.updateFields()
#oeq_global.OeQ_unlockQgis()
return new_node
示例6: add_error_layer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def add_error_layer(self, dbfile):
""" Adds an database as layers, expects layers: error_point,
error_linestring and error_polygon. """
tables = ['error_point', 'error_linestring', 'error_polygon']
group_name = os.path.splitext(os.path.basename(dbfile))[0]
legend_group = QgsProject.instance().layerTreeRoot().insertGroup(0, group_name)
for table in tables:
# Create new layer
layer = QgsVectorLayer(dbfile + '|layername=' + table, table, 'ogr')
if not layer:
print('error creating layer')
# Set encoding on the layer
layer.setProviderEncoding(u'UTF-8')
layer.dataProvider().setEncoding(u'UTF-8')
# Add style from file
style_file = os.path.join(self.plugin_dir, 'styles', '{0}.qml'.format(table))
if os.path.isfile(style_file):
layer.loadNamedStyle(style_file)
# Add layer to qgis - but dont add to legend directly
if QgsMapLayerRegistry.instance().addMapLayer(layer, False):
legend_group.addLayer(layer)
else:
print('Unable to add layer: {}'.format(table))
示例7: doLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def doLayer(self, item):
ogrFeature = item.data(Qt.UserRole)
geom = QgsGeometry.fromWkt(ogrFeature.GetGeometryRef().ExportToWkt())
fields = QgsFields()
fields.append(QgsField("id", QVariant.String))
fields.append(QgsField("name", QVariant.String))
fet = QgsFeature()
fet.initAttributes(2)
fet.setFields(fields)
fet.setGeometry(geom)
fet.setAttribute("id", (ogrFeature.GetFieldAsString('id')))
fet.setAttribute("name", (ogrFeature.GetFieldAsString('name')))
vl = None
if not self.plugin.singleLayer:
if geom.type() == QgsWkbTypes.PolygonGeometry:
layerName = "OSMPlaceSearch Polygon"
layerId = self.MultiPolygonLayerId
if geom.type() == QgsWkbTypes.LineGeometry:
layerName = "OSMPlaceSearch Line"
layerId = self.LineLayerId
if geom.type() == QgsWkbTypes.PointGeometry:
layerName = "OSMPlaceSearch Point"
layerId = self.PointLayerId
vl = QgsProject.instance().mapLayer(layerId)
if vl is not None:
pr = vl.dataProvider()
else:
if geom.type() == QgsWkbTypes.PolygonGeometry:
vl = QgsVectorLayer("MultiPolygon", layerName, "memory")
self.MultiPolygonLayerId = vl.id()
if geom.type() == QgsWkbTypes.LineGeometry:
vl = QgsVectorLayer("MultiLineString", layerName, "memory")
self.LineLayerId = vl.id()
if geom.type() == QgsWkbTypes.PointGeometry:
vl = QgsVectorLayer("Point", layerName, "memory")
self.PointLayerId = vl.id()
if vl is not None:
pr = vl.dataProvider()
# ajout de champs
pr.addAttributes(fields.toList())
QgsProject.instance().addMapLayer(vl)
else:
layerName = "OSM "+ogrFeature.GetFieldAsString('id')
# creer une nouvelle couche si n'existe pas encore
if geom.type() == QgsWkbTypes.PolygonGeometry:
vl = QgsVectorLayer("MultiPolygon", layerName, "memory")
if geom.type() == QgsWkbTypes.LineGeometry:
vl = QgsVectorLayer("MultiLineString", layerName, "memory")
if geom.type() == QgsWkbTypes.PointGeometry:
vl = QgsVectorLayer("Point", layerName, "memory")
if vl is not None:
pr = vl.dataProvider()
# ajout de champs
pr.addAttributes(fields.toList())
QgsProject.instance().addMapLayer(vl)
if vl is not None:
vl.setProviderEncoding('UTF-8')
vl.startEditing()
pr.addFeatures([fet])
vl.commitChanges()
# mise a jour etendue de la couche
vl.updateExtents()
layerTree = QgsProject.instance().layerTreeRoot().findLayer(vl)
if layerTree:
self.plugin.iface.layerTreeView()\
.layerTreeModel().refreshLayerLegend(layerTree) # Refresh legend
self.go(item, False)
示例8: run
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def run(self):
self.mutex.lock()
self.stopMe = 0
self.mutex.unlock()
interrupted = False
# create attribute list with uniquie fields
# from all selected layers
mergedFields = []
self.emit(SIGNAL("rangeChanged( PyQt_PyObject )"), len(self.shapes))
self.emit(SIGNAL("checkStarted()"))
shapeIndex = 0
fieldMap = {}
for fileName in self.shapes:
layerPath = QFileInfo(self.baseDir + "/" + fileName).absoluteFilePath()
newLayer = QgsVectorLayer(layerPath, QFileInfo(layerPath).baseName(), "ogr")
if not newLayer.isValid():
continue
newLayer.setProviderEncoding(self.inputEncoding)
vprovider = newLayer.dataProvider()
fieldMap[shapeIndex] = {}
fieldIndex = 0
for layerField in vprovider.fields():
fieldFound = False
for mergedFieldIndex, mergedField in enumerate(mergedFields):
if mergedField.name() == layerField.name() and mergedField.type() == layerField.type():
fieldFound = True
fieldMap[shapeIndex][fieldIndex] = mergedFieldIndex
if mergedField.length() < layerField.length():
# suit the field size to the field of this layer
mergedField.setLength(layerField.length())
break
if not fieldFound:
fieldMap[shapeIndex][fieldIndex] = len(mergedFields)
mergedFields.append(layerField)
fieldIndex += 1
shapeIndex += 1
self.emit(SIGNAL("featureProcessed()"))
self.emit(SIGNAL("checkFinished()"))
# get information about shapefiles
layerPath = QFileInfo(self.baseDir + "/" + self.shapes[0]).absoluteFilePath()
newLayer = QgsVectorLayer(layerPath, QFileInfo(layerPath).baseName(), "ogr")
self.crs = newLayer.crs()
self.geom = newLayer.wkbType()
vprovider = newLayer.dataProvider()
fields = QgsFields()
for f in mergedFields:
fields.append(f)
writer = QgsVectorFileWriter(
self.outputFileName, self.outputEncoding,
fields, self.geom, self.crs)
shapeIndex = 0
for fileName in self.shapes:
layerPath = QFileInfo(self.baseDir + "/" + fileName).absoluteFilePath()
newLayer = QgsVectorLayer(layerPath, QFileInfo(layerPath).baseName(), "ogr")
if not newLayer.isValid():
continue
newLayer.setProviderEncoding(self.inputEncoding)
vprovider = newLayer.dataProvider()
nFeat = vprovider.featureCount()
self.emit(SIGNAL("rangeChanged( PyQt_PyObject )"), nFeat)
self.emit(SIGNAL("fileNameChanged( PyQt_PyObject )"), fileName)
inFeat = QgsFeature()
outFeat = QgsFeature()
inGeom = QgsGeometry()
fit = vprovider.getFeatures()
while fit.nextFeature(inFeat):
mergedAttrs = [""] * len(mergedFields)
# fill available attributes with values
fieldIndex = 0
for v in inFeat.attributes():
if shapeIndex in fieldMap and fieldIndex in fieldMap[shapeIndex]:
mergedAttrs[fieldMap[shapeIndex][fieldIndex]] = v
fieldIndex += 1
if inFeat.geometry() is not None:
inGeom = QgsGeometry(inFeat.geometry())
outFeat.setGeometry(inGeom)
outFeat.setAttributes(mergedAttrs)
writer.addFeature(outFeat)
self.emit(SIGNAL("featureProcessed()"))
self.emit(SIGNAL("shapeProcessed()"))
self.mutex.lock()
s = self.stopMe
self.mutex.unlock()
if s == 1:
#.........这里部分代码省略.........
示例9: _testLayer
# 需要导入模块: from qgis.core import QgsVectorLayer [as 别名]
# 或者: from qgis.core.QgsVectorLayer import setProviderEncoding [as 别名]
def _testLayer(self, filename=None, output=False):
filepath = self.testDataPath(filename, output)
layer = QgsVectorLayer(filepath, os.path.splitext(os.path.basename(filepath))[0], "ogr")
assert layer.isValid(), "failed to load layer"
layer.setProviderEncoding("SJIS") #tr
return layer