本文整理汇总了Python中qgis.core.QgsVectorFileWriter.writeAsVectorFormat方法的典型用法代码示例。如果您正苦于以下问题:Python QgsVectorFileWriter.writeAsVectorFormat方法的具体用法?Python QgsVectorFileWriter.writeAsVectorFormat怎么用?Python QgsVectorFileWriter.writeAsVectorFormat使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsVectorFileWriter
的用法示例。
在下文中一共展示了QgsVectorFileWriter.writeAsVectorFormat方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: convert_geojson_to_shapefile
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def convert_geojson_to_shapefile(geojson_path):
"""Convert geojson file to shapefile.
It will create a necessary file next to the geojson file. It will not
affect another files (e.g. .xml, .qml, etc).
:param geojson_path: The path to geojson file.
:type geojson_path: basestring
:returns: True if shapefile layer created, False otherwise.
:rtype: bool
"""
layer = QgsVectorLayer(geojson_path, 'vector layer', 'ogr')
if not layer.isValid():
return False
# Construct shapefile path
shapefile_path = os.path.splitext(geojson_path)[0] + '.shp'
QgsVectorFileWriter.writeAsVectorFormat(
layer,
shapefile_path,
'utf-8',
layer.crs(),
'ESRI Shapefile')
if os.path.exists(shapefile_path):
return True
return False
示例2: exportVector
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def exportVector(layer, sln, layersFolder, restrictToExtent, iface,
extent, precision, crs, minify):
canvas = iface.mapCanvas()
cleanLayer = writeTmpLayer(layer, restrictToExtent, iface, extent)
if is25d(layer, canvas, restrictToExtent, extent):
add25dAttributes(cleanLayer, layer, canvas)
tmpPath = os.path.join(layersFolder, sln + ".json")
path = os.path.join(layersFolder, sln + ".js")
options = []
if precision != "maintain":
options.append("COORDINATE_PRECISION=" + unicode(precision))
QgsVectorFileWriter.writeAsVectorFormat(cleanLayer, tmpPath, "utf-8", crs,
'GeoJson', 0,
layerOptions=options)
with open(path, mode="w", encoding="utf8") as f:
f.write("var %s = " % ("json_" + sln))
with open(tmpPath, encoding="utf8") as tmpFile:
for line in tmpFile:
if minify:
line = line.strip("\n\t ")
line = removeSpaces(line)
f.write(line)
os.remove(tmpPath)
fields = layer.fields()
for field in fields:
exportImages(layer, field.name(), layersFolder + "/tmp.tmp")
示例3: run
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def run(self):
tempLayer = self.createGridLayer('temp', 'Multipolygon', self.crs.geographicCRSAuthId())
self.populateQgsLayer(self.index, self.stopScale, tempLayer, self.mi)
useMemory = True
if not self.layer:
useMemory = False
self.layer = self.createGridLayer('Grid Zones', 'Multipolygon', self.crs.authid())
for feature in tempLayer.getFeatures():
if self.stopped:
del tempLayer
tempLayer = None
self.aux.userCanceled.emit()
return
geom = feature.geometry()
reprojected = self.reprojectGridZone(geom)
self.insertGridZoneIntoQgsLayer(self.layer, reprojected, feature.attributes())
self.aux.stepProcessed.emit()
del tempLayer
tempLayer = None
self.aux.stepProcessed.emit()
if not useMemory:
QgsVectorFileWriter.writeAsVectorFormat(self.layer, self.output, "utf-8", None, "ESRI Shapefile")
self.aux.processFinished.emit()
示例4: export_filter_layer
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def export_filter_layer(self, ext='xlsx'):
'''
export a filter-layer (opens user-input) to excel or kml
'''
try:
res = self.get_filterlayer()
except:
traceback.print_exc()
return
if not res:
return
category, layer = res
file_filter = EXCEL_FILTER if ext == 'xlsx' else KML_FILTER
filepath = browse_file(None, 'Export', file_filter, save=True,
parent=self)
if not filepath:
return
driver = 'XLSX' if ext == 'xlsx'else 'KML'
#fields = []
#for i, f in enumerate(layer.fields()):
#if layer.editorWidgetV2(i) == 'Hidden':
#continue
#fields.append(f.name())
try:
QgsVectorFileWriter.writeAsVectorFormat(
layer, filepath, "utf-8", None, driver, False)
#attributes=fields)
title = 'Speicherung erfolgreich'
msg = 'Die Daten wurden erfolgreich exportiert.'
except Exception as e:
title = 'Fehler'
msg = 'Fehler bei der Speicherung: \n {}'.format(str(e))
QtGui.QMessageBox.information(
self, title, msg)
示例5: _add_tabular_layer
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def _add_tabular_layer(self, tabular_layer, layer_name):
"""Add a tabular layer to the folder.
:param tabular_layer: The layer to add.
:type tabular_layer: QgsVectorLayer
:param layer_name: The name of the layer in the datastore.
:type layer_name: str
:returns: A two-tuple. The first element will be True if we could add
the layer to the datastore. The second element will be the layer
name which has been used or the error message.
:rtype: (bool, str)
.. versionadded:: 4.0
"""
output = QFileInfo(
self.uri.filePath(layer_name + '.csv'))
QgsVectorFileWriter.writeAsVectorFormat(
tabular_layer,
output.absoluteFilePath(),
'utf-8',
None,
'CSV')
assert output.exists()
return True, output.baseName()
示例6: _add_tabular_layer
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def _add_tabular_layer(self, tabular_layer, layer_name, save_style=False):
"""Add a tabular layer to the folder.
:param tabular_layer: The layer to add.
:type tabular_layer: QgsVectorLayer
:param layer_name: The name of the layer in the datastore.
:type layer_name: str
:param save_style: If we have to save a QML too. Default to False.
:type save_style: bool
:returns: A two-tuple. The first element will be True if we could add
the layer to the datastore. The second element will be the layer
name which has been used or the error message.
:rtype: (bool, str)
.. versionadded:: 4.0
"""
output = QFileInfo(
self.uri.filePath(layer_name + '.csv'))
QgsVectorFileWriter.writeAsVectorFormat(
tabular_layer,
output.absoluteFilePath(),
'utf-8',
QgsCoordinateTransform(),
'CSV')
if save_style:
style_path = QFileInfo(self.uri.filePath(layer_name + '.qml'))
tabular_layer.saveNamedStyle(style_path.absoluteFilePath())
assert output.exists()
return True, output.baseName()
示例7: TussenTelling
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def TussenTelling(selectie_gebouwen, outputTable, outputFeatures):
if outputTable:
statistics_fields = ["AZ_T","PZ_T","PVT_T","WZC_T","SOM_T"]
MaakOverzichtstabel(selectie_gebouwen, statistics_fields, outputTable)
if outputFeatures:
flType = findOGRtype(outputFeatures)
QgsVectorFileWriter.writeAsVectorFormat(selectie_gebouwen , outputFeatures, "utf-8", None, flType )
示例8: writeVectorLayerToShape
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def writeVectorLayerToShape(vlayer, outputPath, encoding):
mCodec = QTextCodec.codecForName(encoding)
if not mCodec:
return False
#Here we should check that the output path is valid
QgsVectorFileWriter.writeAsVectorFormat(vlayer, outputPath, encoding, vlayer.dataProvider().crs(), "ESRI Shapefile", False)
return True
示例9: test03_SaveAsCSV
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def test03_SaveAsCSV(self):
"""Save layer to a CSV file"""
self._testAvailable() or self.skipTest("Not available")
layer = self._testLayer(self.fileName)
outfile = self.testDataPath(u"{}.csv".format(self.layerName), output=True)
QgsVectorFileWriter.writeAsVectorFormat(layer, outfile, "UTF-8", layer.crs(),
"CSV", layerOptions=["LINEFORMAT=LF", "GEOMETRY=AS_XY"])
expfile = unitTestDataPath("{}.csv".format(TC01_Attribute.layerName), own=True)
assert compareFile(outfile, expfile, delimiter=",") == 0, "unexpected csv output"
示例10: conversion
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def conversion(input_name,output_name,input_json,output_json):
vlayer = QgsVectorLayer(input_name,'shp','ogr')
error=QW.writeAsVectorFormat(vlayer, input_json,'utf-8',None,'GeoJSON')
if error == QW.NoError:
print "succeed in json conversion"
convert(input_json+'.geojson',output_json+'.geojson')
jlayer = QgsVectorLayer(output_json+'.geojson','json','ogr')
err_shp = QW.writeAsVectorFormat(jlayer, output_name, "utf-8", None, "ESRI Shapefile")
if error == QW.NoError:
print "succeed in shp conversion"
示例11: testGeoPackage
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def testGeoPackage(self):
'''Test GeoPackage'''
layer = QgsVectorLayer(os.path.join(os.path.dirname(__file__), "data","airports.gpkg"),
"test", "ogr")
self.assertTrue(layer.isValid())
filepath = os.path.join(tempfile.mkdtemp(), str(time.time()) + ".gpkg")
QgsVectorFileWriter.writeAsVectorFormat(layer, filepath, 'utf-8', layer.crs(), 'GPKG')
layer = QgsVectorLayer(filepath, "test", "ogr")
self.assertTrue(layer.isValid())
示例12: writeDBF
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def writeDBF(pos, pp, pr, save_file, inpname, param, idx):
pos.startEditing()
for i in range(len(pp)):
feat = QgsFeature()
feat.setAttributes(pp[i])
pr.addFeatures([feat])
epsgCode = pos.crs().authid()
QgsVectorFileWriter.writeAsVectorFormat(pos, save_file + param + '.dbf', "utf-8",
QgsCoordinateReferenceSystem(epsgCode), "DBF file")
ll = QgsVectorLayer(save_file + param + '.dbf', inpname[:len(inpname) - 4] + param, "ogr")
QgsProject.instance().addMapLayer(ll, False)
nn = QgsLayerTreeLayer(ll)
idx.insertChildNode(0, nn)
nn.setCustomProperty("showFeatureCount", True)
示例13: write_temporary_vector_layer_to_disk
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def write_temporary_vector_layer_to_disk(vlayer, style=None, replace_in_legend=True):
import os
from qgis.utils import iface
from mole import oeq_global
if oeq_global.OeQ_project_name() == '':
iface.actionSaveProjectAs().trigger()
layer_name = vlayer.name()
layer_crs = vlayer.crs()
path = os.path.join(oeq_global.OeQ_project_path(), layer_name + '.shp')
error = QgsVectorFileWriter.writeAsVectorFormat(vlayer, path, "System", layer_crs, 'ESRI Shapefile')
if error == QgsVectorFileWriter.NoError:
if replace_in_legend:
QgsMapLayerRegistry.instance().removeMapLayer(vlayer.id())
rewritten_layer = iface.addVectorLayer(path, layer_name, "ogr")
#oeq_global.OeQ_wait_for_renderer(60000)
if not rewritten_layer.isValid():
oeq_global.OeQ_push_warning(title='Write Error!', message='path')
return vlayer
if style != None:
add_style_to_layer(style, rewritten_layer)
rewritten_layer.startEditing()
time.sleep(0.2)
rewritten_layer.commitChanges()
return rewritten_layer
else:
oeq_global.OeQ_push_warning(title='Write Error!', message='path')
return vlayer
示例14: testWriteShapefileWithMultiConversion
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def testWriteShapefileWithMultiConversion(self):
"""Check writing geometries to an ESRI shapefile with conversion to multi."""
ml = QgsVectorLayer(("Point?crs=epsg:4326&field=id:int"), "test", "memory")
self.assertIsNotNone(ml, "Provider not initialized")
self.assertTrue(ml.isValid(), "Source layer not valid")
provider = ml.dataProvider()
self.assertIsNotNone(provider)
ft = QgsFeature()
ft.setGeometry(QgsGeometry.fromWkt("Point (1 2)"))
ft.setAttributes([1])
res, features = provider.addFeatures([ft])
self.assertTrue(res)
self.assertTrue(features)
dest_file_name = os.path.join(str(QDir.tempPath()), "to_multi.shp")
crs = QgsCoordinateReferenceSystem()
crs.createFromId(4326, QgsCoordinateReferenceSystem.EpsgCrsId)
write_result = QgsVectorFileWriter.writeAsVectorFormat(
ml, dest_file_name, "utf-8", crs, "ESRI Shapefile", forceMulti=True
)
self.assertEqual(write_result, QgsVectorFileWriter.NoError)
# Open result and check
created_layer = QgsVectorLayer("{}|layerid=0".format(dest_file_name), "test", "ogr")
f = next(created_layer.getFeatures(QgsFeatureRequest()))
g = f.geometry()
wkt = g.exportToWkt()
expWkt = "MultiPoint ((1 2))"
self.assertTrue(
compareWkt(expWkt, wkt),
"saving geometry with multi conversion failed: mismatch Expected:\n%s\nGot:\n%s\n" % (expWkt, wkt),
)
示例15: testWriteWithBinaryField
# 需要导入模块: from qgis.core import QgsVectorFileWriter [as 别名]
# 或者: from qgis.core.QgsVectorFileWriter import writeAsVectorFormat [as 别名]
def testWriteWithBinaryField(self):
"""
Test writing with a binary field
:return:
"""
basetestpath = tempfile.mkdtemp()
tmpfile = os.path.join(basetestpath, 'binaryfield.sqlite')
ds = ogr.GetDriverByName('SQLite').CreateDataSource(tmpfile)
lyr = ds.CreateLayer('test', geom_type=ogr.wkbPoint, options=['FID=fid'])
lyr.CreateField(ogr.FieldDefn('strfield', ogr.OFTString))
lyr.CreateField(ogr.FieldDefn('intfield', ogr.OFTInteger))
lyr.CreateField(ogr.FieldDefn('binfield', ogr.OFTBinary))
lyr.CreateField(ogr.FieldDefn('binfield2', ogr.OFTBinary))
f = None
ds = None
vl = QgsVectorLayer(tmpfile)
self.assertTrue(vl.isValid())
# check that 1 of its fields is a bool
fields = vl.fields()
self.assertEqual(fields.at(fields.indexFromName('binfield')).type(), QVariant.ByteArray)
dp = vl.dataProvider()
f = QgsFeature(fields)
bin_1 = b'xxx'
bin_2 = b'yyy'
bin_val1 = QByteArray(bin_1)
bin_val2 = QByteArray(bin_2)
f.setAttributes([1, 'str', 100, bin_val1, bin_val2])
self.assertTrue(dp.addFeature(f))
# write a gpkg package with a binary field
filename = os.path.join(str(QDir.tempPath()), 'with_bin_field')
rc, errmsg = QgsVectorFileWriter.writeAsVectorFormat(vl,
filename,
'utf-8',
vl.crs(),
'GPKG')
self.assertEqual(rc, QgsVectorFileWriter.NoError)
# open the resulting geopackage
vl = QgsVectorLayer(filename + '.gpkg', '', 'ogr')
self.assertTrue(vl.isValid())
fields = vl.fields()
# test type of converted field
idx = fields.indexFromName('binfield')
self.assertEqual(fields.at(idx).type(), QVariant.ByteArray)
idx2 = fields.indexFromName('binfield2')
self.assertEqual(fields.at(idx2).type(), QVariant.ByteArray)
# test values
self.assertEqual(vl.getFeature(1).attributes()[idx], bin_val1)
self.assertEqual(vl.getFeature(1).attributes()[idx2], bin_val2)
del vl
os.unlink(filename + '.gpkg')