本文整理汇总了Python中qgis.core.QgsFeature.addAttribute方法的典型用法代码示例。如果您正苦于以下问题:Python QgsFeature.addAttribute方法的具体用法?Python QgsFeature.addAttribute怎么用?Python QgsFeature.addAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsFeature
的用法示例。
在下文中一共展示了QgsFeature.addAttribute方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_AddAttribute
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def test_AddAttribute(self):
feat = QgsFeature()
feat.addAttribute(1, "text")
myCount = len(feat.attributeMap())
myExpectedCount = 1
myMessage = '\nExpected: %s\nGot: %s' % (myExpectedCount, myCount)
assert myCount == myExpectedCount, myMessage
示例2: _write_grid_shapefile
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def _write_grid_shapefile(self, path, x_min, y_min, x_max, y_max, x_off, y_off):
x_off = self._x_off
y_off = self._y_off
x_min = floor(x_min / x_off) * x_off
x_max = ceil(x_max / x_off) * x_off
y_min = floor(y_min / y_off) * y_off
y_max = ceil(y_max / y_off) * y_off
xtotal = int((x_max - x_min) / x_off)
ytotal = int((y_max - y_min) / y_off)
logAPICall.log('x_min %f x_max %f y_min %f y_max %f x_off %f y_off %f xtotal %d, ytotal %d'
% (x_min, x_max, y_min, y_max, x_off, y_off, xtotal, ytotal),
logAPICall.DEBUG_L2)
writer = QgsVectorFileWriter(path, "utf-8", self._fields, QGis.WKBPoint, self._crs, "ESRI Shapefile")
f = QgsFeature()
for x in range(xtotal):
for y in range(ytotal):
lon = x_min + (x * x_off) + (x_off/2.0)
lat = y_min + (y * y_off) + (y_off/2.0)
f.setGeometry(QgsGeometry.fromPoint(QgsPoint(lon, lat)))
f.addAttribute(0, QVariant(lon))
f.addAttribute(1, QVariant(lat))
writer.addFeature(f)
del writer
示例3: saveIntersectionResult
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def saveIntersectionResult(self, report, intersectedPoint):
# save the intersection result (point) and its report
# check first
while True:
if not self.settings.value("advancedIntersectionWritePoint"):
break # if we do not place any point, skip
layerid = self.settings.value("advancedIntersectionLayer")
message = QCoreApplication.translate("IntersectIt",
"To place the intersection solution,"
" you must select a layer in the settings.")
status, intLayer = self.checkLayerExists(layerid, message)
if status == 2:
continue
if status == 3:
return
if self.settings.value("advancedIntersectionWriteReport"):
reportField = self.settings.value("reportField")
message = QCoreApplication.translate("IntersectIt",
"To save the intersection report, please select a field for it.")
status = self.checkFieldExists(intLayer, reportField, message)
if status == 2:
continue
if status == 3:
return
break
# save the intersection results
if self.settings.value("advancedIntersectionWritePoint"):
f = QgsFeature()
f.setGeometry(QgsGeometry().fromPoint(intersectedPoint))
if self.settings.value("advancedIntersectionWriteReport"):
irep = intLayer.dataProvider().fieldNameIndex(reportField)
f.addAttribute(irep, report)
intLayer.dataProvider().addFeatures([f])
intLayer.updateExtents()
self.mapCanvas.refresh()
示例4: _create_grid
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def _create_grid(self, grid_name, grid_file, x_min, y_min, x_max, y_max, x_off, y_off):
x_off2, y_off2 = x_off / 2.0, y_off / 2.0
x_min = floor(x_min / x_off) * x_off
x_max = ceil(x_max / x_off) * x_off
y_min = floor(y_min / y_off) * y_off
y_max = ceil(y_max / y_off) * y_off
xtotal = int((x_max - x_min) / x_off) + 1
ytotal = int((y_max - y_min) / y_off) + 1
logAPICall.log(
"x_min %f x_max %f y_min %f y_max %f x_off %f y_off %f xtotal %d, ytotal %d"
% (x_min, x_max, y_min, y_max, x_off, y_off, xtotal, ytotal),
logAPICall.DEBUG_L2,
)
fields = {0: QgsField("GRID_GID", QVariant.String)}
writer = QgsVectorFileWriter(grid_file, "utf-8", fields, QGis.WKBPolygon, self._crs, "ESRI Shapefile")
f = QgsFeature()
for x in range(xtotal):
for y in range(ytotal):
lon = x_min + (x * x_off) + (x_off2)
lat = y_min + (y * y_off) + (y_off2)
# out_geom = QgsGeometry.fromRect(QgsRectangle(lon-x_off2, lat-y_off2,
# lon+x_off2, lat+y_off2))
f.setGeometry(self._outputGeometryFromLatLon(lat, lon))
f.addAttribute(0, QVariant(latlon_to_grid(lat, lon)))
writer.addFeature(f)
del writer
return load_shapefile(grid_file, grid_name)
示例5: do_operation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def do_operation(self):
""" perform create mapping scheme operation """
# input/output verification already performed during set input/ouput
zone_layer = self.inputs[0].value
zone_field = self.inputs[1].value
fp_layer = self.inputs[2].value
# merge with zone to get assignment
tmp_join = 'joined_%s' % get_unique_filename()
tmp_join_file = '%s%s.shp' % (self._tmp_dir, tmp_join)
analyzer = QgsOverlayAnalyzer()
try:
analyzer.intersection(fp_layer, zone_layer, tmp_join_file)
tmp_join_layer = load_shapefile_verify(tmp_join_file, tmp_join,[zone_field])
except AssertionError as err:
raise OperatorError(str(err), self.__class__)
except Exception as err:
raise OperatorError(str(err), self.__class__)
fields = {
0 : QgsField(self._lon_field, QVariant.Double),
1 : QgsField(self._lat_field, QVariant.Double),
2 : QgsField(zone_field, QVariant.String),
}
zone_idx = layer_field_index(tmp_join_layer, zone_field)
fp_layername = 'fpc_%s' % get_unique_filename()
fp_file = '%s%s.shp' % (self._tmp_dir, fp_layername)
try:
writer = QgsVectorFileWriter(fp_file, "utf-8", fields, QGis.WKBPoint, self._crs, "ESRI Shapefile")
f = QgsFeature()
for _f in layer_features(tmp_join_layer):
centroid = _f.geometry().centroid().asPoint()
lon = centroid.x()
lat = centroid.y()
zone_str = str(_f.attributeMap()[zone_idx].toString()).upper()
f.setGeometry(QgsGeometry.fromPoint(QgsPoint(lon, lat)))
f.addAttribute(0, QVariant(lon))
f.addAttribute(1, QVariant(lat))
f.addAttribute(2, QVariant(zone_str))
writer.addFeature(f)
del writer
except Exception as err:
logAPICall.log(err, logAPICall.ERROR)
remove_shapefile(fp_file)
raise OperatorError("error creating joined grid: %s" % err, self.__class__)
# load shapefile as layer
fp_layer = load_shapefile(fp_file, fp_layername)
if not fp_layer:
raise OperatorError('Error loading footprint centroid file' % (fp_file), self.__class__)
# clean up
del tmp_join_layer
remove_shapefile(tmp_join_file)
self.outputs[0].value = fp_layer
self.outputs[1].value = fp_file
示例6: test_CreateFeature
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def test_CreateFeature(self):
feat = QgsFeature()
feat.addAttribute(1, "text")
feat.setGeometry(QgsGeometry.fromPoint(QgsPoint(123,456)))
myId = feat.id()
myExpectedId = 0
myMessage = '\nExpected: %s\nGot: %s' % (myExpectedId, myId)
assert myId == myExpectedId, myMessage
示例7: test_ChangeAttribute
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def test_ChangeAttribute(self):
feat = QgsFeature()
feat.addAttribute(1, "text")
feat.changeAttribute(1, "changed")
myChangedAttribute = feat.attributeMap()[1].toString()
myExpectedAttribute = "changed"
myMessage = '\nExpected: %s\nGot: %s' % (myExpectedAttribute,
myChangedAttribute)
assert myChangedAttribute == myExpectedAttribute, myMessage
示例8: do_operation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def do_operation(self):
""" perform export operation """
# input/output data checking already done during property set
input_file = self.inputs[0].value
output_file = self.inputs[1].value
output_dbf = '%s_attr.dbf' % output_file[:-3]
try:
exp_layer = load_shapefile(input_file, 'exposure_%s' % get_unique_filename())
# store id of distinct features
total_features = exp_layer.dataProvider().featureCount()
if total_features > MAX_FEATURES_IN_MEMORY:
# use bsddb to store id in case number of features is too large
tmp_db_file = '%sdb_%s.db' % (self._tmp_dir, get_unique_filename())
db = bsddb.btopen(tmp_db_file, 'c')
use_db = True
else:
# in memory dictionary, should be much faster, but could fail
# if memory is limited
db = {}
use_db = False
# get field index for GID
gid_idx = layer_field_index(exp_layer, GID_FIELD_NAME)
fields = {
0: QgsField(GID_FIELD_NAME, QVariant.Int),
}
writer = QgsVectorFileWriter(output_file, "utf-8", fields,
exp_layer.dataProvider().geometryType(),
exp_layer.crs(), "ESRI Shapefile")
out_feature = QgsFeature()
for feature in layer_features(exp_layer):
gid = str(feature.attributeMap()[gid_idx].toString())
# only write out once
if not db.has_key(gid):
db[gid]= '1' # bsddb only accepts string
out_feature.addAttribute(0, gid)
out_feature.setGeometry(feature.geometry())
writer.addFeature(out_feature)
# clean up
del writer
if use_db:
db.close()
os.remove(tmp_db_file)
# copy associated attribute file
copy_shapefile(input_file, output_dbf, extensions=['.dbf'])
except Exception as err:
raise OperatorError("error creating shapefile: %s" % err, self.__class__)
示例9: addGeomToMemoryLayer
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def addGeomToMemoryLayer(self, the_geom, origin=0, delete_when_done=False):
"""TO DO: Add doc string"""
foi_type = self.foi_type.lower()
print "got foi_type"
if self.mem_layer_obj.featureCount() > 0:
if origin == 1: # is added by identify operation
pass
else:
print self.mem_layer_obj.featureCount()
print "there exists a feature, kill it!"
self.mem_layer_obj.select()
print "Feature count selcted for deletion:"
print self.mem_layer_obj.selectedFeatureCount()
self.mem_layer_obj.deleteSelectedFeatures()
#self.mem_layer_obj.deleteFeature(0)
self.mem_layer_obj.commitChanges()
self.mem_layer_obj.triggerRepaint()
ml_dp = self.mem_layer_obj.dataProvider()
print "got DP"
uuid_gid = QtCore.QUuid().createUuid().toString()
print "got uuid"
fet = QgsFeature()
print "got feature with id"
fet.setGeometry(the_geom)
print "set geometry"
fet.addAttribute(0, uuid_gid)
print "set attr "
ml_dp.addFeatures([fet])
self.mem_layer_obj.commitChanges()
print "added layers"
#self.mem_layer_obj.updateFeatureAttributes(fet)
#self.mem_layer_obj.updateFeatureGeometry(fet)
self.mem_layer_obj.updateExtents()
print "updated extents"
#self.mem_layer_obj.drawFeature(fet)
self.mem_layer_obj.triggerRepaint()
print "trp"
return fet.id()
示例10: _loadSurvey
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def _loadSurvey(self, csvpath, shapefilepath):
# load data
data = csv.reader(open(csvpath, "r"), delimiter=",", quotechar='"')
# skip header, there is probably a better way to accomplish this
data.next()
writer = QgsVectorFileWriter(shapefilepath, "utf-8", self._fields, QGis.WKBPoint, self._crs, "ESRI Shapefile")
f = QgsFeature()
gid = 0
for row in data:
lon = float(row[0])
lat = float(row[1])
f.setGeometry(QgsGeometry.fromPoint(QgsPoint(lon, lat)))
gid += 1
f.addAttribute(0, QVariant(gid))
f.addAttribute(1, QVariant(lon))
f.addAttribute(2, QVariant(lat))
f.addAttribute(3, QVariant(row[2]))
writer.addFeature(f)
del writer, f
示例11: do_operation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def do_operation(self):
""" perform create mapping scheme operation """
# input/output verification already performed during set input/ouput
fp_layer = self.inputs[0].value
zone_field = self.inputs[1].value
# aggregate footprint into grids
logAPICall.log('aggregate statistic for grid ...', logAPICall.DEBUG)
total_features = fp_layer.dataProvider().featureCount()
if total_features > MAX_FEATURES_IN_MEMORY:
# use bsddb to store temporary lat/lon
tmp_db_file = '%sdb_%s.db' % (self._tmp_dir, get_unique_filename())
db = bsddb.btopen(tmp_db_file, 'c')
use_db = True
else:
db = {}
use_db = False
zone_idx = layer_field_index(fp_layer, zone_field)
for f in layer_features(fp_layer):
geom = f.geometry()
zone_str = str(f.attributeMap()[zone_idx].toString())
centroid = geom.centroid().asPoint()
# use floor, this truncates all points within grid to grid's
# bottom-left corner
x = math.floor(centroid.x() / DEFAULT_GRID_SIZE)
y = math.floor(centroid.y() / DEFAULT_GRID_SIZE)
key = '%s %d %d' % (zone_str, x,y)
if db.has_key(key):
db[key] = str(int(db[key]) + 1)
else:
db[key] = '1'
# output grid
logAPICall.log('create grid ...', logAPICall.DEBUG)
fields = {
0 : QgsField(self._lon_field, QVariant.Double),
1 : QgsField(self._lat_field, QVariant.Double),
2 : QgsField(CNT_FIELD_NAME, QVariant.Double),
3 : QgsField(zone_field, QVariant.String),
}
grid_layername = 'grid_%s' % get_unique_filename()
grid_file = '%s%s.shp' % (self._tmp_dir, grid_layername)
try:
writer = QgsVectorFileWriter(grid_file, "utf-8", fields, QGis.WKBPoint , self._crs, "ESRI Shapefile")
f = QgsFeature()
for key, val in db.iteritems():
(zone_str, x, y) = key.split(' ')
# point were aggregated to grid's bottom-left corner
# add half grid size to place point at center of grid
point = QgsPoint(int(x)*DEFAULT_GRID_SIZE+(DEFAULT_GRID_SIZE/2.0),
int(y)*DEFAULT_GRID_SIZE+(DEFAULT_GRID_SIZE/2.0))
f.setGeometry(QgsGeometry.fromPoint(point))
f.addAttribute(0, QVariant(point.x()))
f.addAttribute(1, QVariant(point.y()))
f.addAttribute(2, QVariant(val))
f.addAttribute(3, QVariant(zone_str))
writer.addFeature(f)
del writer
except Exception as err:
remove_shapefile(grid_file)
raise OperatorError("error creating joined grid: " % err, self.__class__)
grid_layer = load_shapefile(grid_file, grid_layername)
if not grid_layer:
raise OperatorError('Error loading created grid file' % (grid_file), self.__class__)
# clean up
if use_db:
db.close()
os.remove(tmp_db_file)
# done
self.outputs[0].value = grid_layer
self.outputs[1].value = grid_file
示例12: do_operation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def do_operation(self):
""" perform create mappin """
# validate inputs
popgrid_layer = self.inputs[0].value
zone_layer = self.inputs[1].value
zone_field = self.inputs[2].value
pop_to_bldg = float(self.inputs[3].value)
# make sure input is correct
# NOTE: these checks cannot be performed at set input time
# because the data layer maybe is not loaded yet
self._test_layer_loaded(popgrid_layer)
self._test_layer_field_exists(popgrid_layer, CNT_FIELD_NAME)
self._test_layer_loaded(zone_layer)
self._test_layer_field_exists(zone_layer, zone_field)
# count_field is not required
# if count field is not defined, then generate building count from footprints
# local variables
analyzer = QgsOverlayAnalyzer()
# intersect grids and zones to obtain polygons with
# - population and zone_id
# - apply ratio to population to obtain building count
tmp_join = "joined_%s" % get_unique_filename()
tmp_join_file = "%s%s.shp" % (self._tmp_dir, tmp_join)
try:
# do intersection
analyzer.intersection(popgrid_layer, zone_layer, tmp_join_file)
tmp_join_layer = load_shapefile(tmp_join_file, tmp_join)
except AssertionError as err:
raise OperatorError(str(err), self.__class__)
except Exception as err:
raise OperatorError(str(err), self.__class__)
# generate grid with building counts
fields = {
0: QgsField(GID_FIELD_NAME, QVariant.String),
1: QgsField(zone_field, QVariant.String),
2: QgsField(CNT_FIELD_NAME, QVariant.Double),
}
output_layername = "grid_%s" % get_unique_filename()
output_file = "%s%s.shp" % (self._tmp_dir, output_layername)
writer = QgsVectorFileWriter(output_file, "utf-8", fields, QGis.WKBPolygon, self._crs, "ESRI Shapefile")
f = QgsFeature()
pop_idx = layer_field_index(tmp_join_layer, CNT_FIELD_NAME)
zone_idx = layer_field_index(tmp_join_layer, zone_field)
for _f in layer_features(tmp_join_layer):
pop_count = _f.attributeMap()[pop_idx].toDouble()[0]
zone = _f.attributeMap()[zone_idx].toString()
# 1. get geometry
geom = _f.geometry()
# 2. get original centroid point and project is required
centroid = geom.centroid().asPoint()
grid_gid = latlon_to_grid(centroid.y(), centroid.x())
f.setGeometry(self._outputGeometryFromGridId(grid_gid))
f.addAttribute(0, grid_gid)
f.addAttribute(1, zone)
f.addAttribute(2, pop_count / pop_to_bldg)
writer.addFeature(f)
del writer
# clean up
del tmp_join_layer
remove_shapefile(tmp_join_file)
# store data in output
self._load_output(output_file, output_layername)
示例13: createFeature
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def createFeature(self, geom):
# layer = self.canvas.currentLayer()
layer = self.iface.activeLayer()
provider = layer.dataProvider()
f = QgsFeature()
if (geom.isGeosValid()):
f.setGeometry(geom)
else:
reply = QMessageBox.question(self.iface.mainWindow(), 'Feature not valid',
"The geometry of the feature you just added isn't valid. Do you want to use it anyway?",
QMessageBox.Yes, QMessageBox.No)
if reply == QMessageBox.Yes:
f.setGeometry(geom)
else:
return False
# Add attribute fields to feature.
fields = layer.pendingFields()
try: #API-Break 1.8 vs. 2.0 handling
attr = f.initAttributes(len(fields)) #@UnusedVariable
for i in range(len(fields)):
f.setAttribute(i, provider.defaultValue(i))
except AttributeError: #<=1.8
# Add attributefields to feature.
for i in fields:
f.addAttribute(i, provider.defaultValue(i))
idx = layer.fieldNameIndex('epa_type')
f[idx] = self.elem_type_type
# Upload changes
layer.startEditing()
layer.addFeature(f)
# Control PostgreSQL exceptions
boolOk = layer.commitChanges()
# Update canvas
self.canvas.refresh()
# Capture edit exception
if boolOk:
# Spatial query to retrieve last added line, start searchingcandidates
cands = layer.getFeatures(QgsFeatureRequest().setFilterRect(f.geometry().boundingBox()))
# Iterate on candidates
for line_feature in cands:
if line_feature.geometry().equals(f.geometry()):
# Highlight
layer.setSelectedFeatures([line_feature.id()])
# Open form
self.iface.openFeatureForm(layer, line_feature)
break
else:
# Delete
layer.rollBack()
# User error
msg = "Error adding PIPE: Typically this occurs if\n the first point is not located in a existing\n node or feature is out of the defined sectors."
QMessageBox.information(None, "PostgreSQL error:", msg)
示例14: _buildSurveyLayer
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def _buildSurveyLayer(self, data, shapefilepath):
writer = QgsVectorFileWriter(shapefilepath, "utf-8", self._fields, QGis.WKBPoint, self._crs, "ESRI Shapefile")
f = QgsFeature()
for row in data:
obj_uid = str(row[0])
lon = self._tofloat(row[1])
lat = self._tofloat(row[2])
sample_grp = str(row[3])
plan_area = self._tofloat(row[4])
rep_cost = self._tofloat(row[5])
tax_string = self._make_gem_taxstring(row[6:])
ht = self._get_height(row[6:])
f.setGeometry(QgsGeometry.fromPoint(QgsPoint(lon, lat)))
f.addAttribute(0, QVariant(obj_uid))
f.addAttribute(1, QVariant(lon))
f.addAttribute(2, QVariant(lat))
f.addAttribute(3, QVariant(tax_string))
f.addAttribute(4, QVariant(sample_grp))
f.addAttribute(5, QVariant(plan_area))
f.addAttribute(6, QVariant(ht))
f.addAttribute(7, QVariant(rep_cost))
writer.addFeature(f)
del writer, f
示例15: do_operation
# 需要导入模块: from qgis.core import QgsFeature [as 别名]
# 或者: from qgis.core.QgsFeature import addAttribute [as 别名]
def do_operation(self):
""" perform footprint load operation """
# input/output data checking already done during property set
# load and verify
popgrid_file = self.inputs[0].value
pop_field = self.inputs[1].value
popgrid_layername = 'zone_%s' % get_unique_filename()
try:
tmp_popgrid_layer = load_shapefile_verify(popgrid_file, popgrid_layername,
[pop_field])
except AssertionError as err:
raise OperatorError(str(err), self.__class__)
logAPICall.log('tmp_fp_layer.crs().epsg() %s ' % tmp_popgrid_layer.crs().epsg(),
logAPICall.DEBUG)
if tmp_popgrid_layer.crs().epsg() != self._crs.epsg():
transform = QgsCoordinateTransform(tmp_popgrid_layer.crs(), self._crs)
transform_required = True
else:
transform_required = False
# output grid
fields = {
0 : QgsField(GID_FIELD_NAME, QVariant.Int),
1 : QgsField(CNT_FIELD_NAME, QVariant.Double),
}
pop_idx = layer_field_index(tmp_popgrid_layer, pop_field)
output_file = '%spop_grid_%s.shp' % (self._tmp_dir, get_unique_filename())
logAPICall.log('create outputfile %s ... ' % output_file, logAPICall.DEBUG)
try:
writer = QgsVectorFileWriter(output_file, "utf-8", fields, QGis.WKBPoint, self._crs, "ESRI Shapefile")
f = QgsFeature()
gid = 0
for _f in layer_features(tmp_popgrid_layer):
# NOTE: geom.transform does projection in place to underlying C object
# 1. get geometry
geom = _f.geometry()
# 2. change project if required
if transform_required:
geom = transform.transform(geom)
# 3. write to file
gid += 1
f.setGeometry(geom)
f.addAttribute(0, QVariant(gid))
f.addAttribute(1, _f.attributeMap()[pop_idx])
writer.addFeature(f)
del writer, f
except Exception as err:
remove_shapefile(output_file)
raise OperatorError("error creating footprint centroids: %s" % err, self.__class__)
popgrid_layername = 'popgrid_%s' % get_unique_filename()
popgrid_layer = load_shapefile(output_file, popgrid_layername)
if not popgrid_layer:
raise OperatorError('Error loading footprint centroid file' % (output_file), self.__class__)
# clean up
del tmp_popgrid_layer
# store data in output
self.outputs[0].value = popgrid_layer
self.outputs[1].value = output_file