本文整理汇总了Python中qgis.core.QgsFeatureRequest类的典型用法代码示例。如果您正苦于以下问题:Python QgsFeatureRequest类的具体用法?Python QgsFeatureRequest怎么用?Python QgsFeatureRequest使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsFeatureRequest类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_feature_value
def get_feature_value(self, model=None):
self.layer.startEditing()
feature = None
request = QgsFeatureRequest()
if model is None:
model = self.host.model()
request.setFilterFid(model.id)
feature_itr = self.layer.getFeatures(request)
for feat in feature_itr:
feature = feat
break
exp = QgsExpression(self.column.expression)
if exp.hasParserError():
raise Exception(exp.parserErrorString())
exp.prepare(self.layer.pendingFields())
if feature is not None:
value = exp.evaluate(feature)
return value
else:
return None
开发者ID:gltn,项目名称:stdm,代码行数:25,代码来源:relation_line_edit.py
示例2: _getXYvalues
def _getXYvalues(self, ts_layer, dateField, valueField):
# utility function used to get the X and Y values
x, y = [], []
# get indexes of date (x) and value (y) fields
dateIdx, valueIdx = None, None
for idx, fld in enumerate(ts_layer.dataProvider().fields()):
if fld.name().lower() == dateField:
dateIdx = idx
elif fld.name().lower() == valueField:
valueIdx = idx
if dateIdx is None or valueIdx is None:
QgsMessageLog.logMessage("field %s -> index %s, field %s -> index %s. Exiting" % (dateField, dateIdx, valueField, valueIdx), "PSTimeSeriesViewer")
return
# fetch and loop through all the features
request = QgsFeatureRequest()
request.setSubsetOfAttributes([dateIdx, valueIdx])
for f in ts_layer.getFeatures( request ):
# get x and y values
a = f.attributes()
x.append( QDate.fromString( a[ dateIdx ], "yyyyMMdd" ).toPyDate() )
y.append( float(a[ valueIdx ]) )
return x, y
开发者ID:faunalia,项目名称:ps-speed,代码行数:26,代码来源:pstimeseries_plugin.py
示例3: updateGui
def updateGui(self, feature):
# The important part: get the feature iterator with an expression
request = QgsFeatureRequest().setFilterExpression ( u'"pand_id" = \'' + unicode(feature['gebouwnummer']) + '\'' )
request.setFlags( QgsFeatureRequest.NoGeometry )
features = self.geomLayer.getFeatures( request )
atr = None
fields = self.geomLayer.pendingFields()
field_names = [field.name() for field in fields]
for elem in features:
self.editFeature = elem
atr = dict(zip(field_names, elem.attributes()))
if atr is not None:
atr = {i:j for i,j in atr.items() if j }
self.newGroupBox.hide()
self.editGroupBox.show()
self.verwijderWidget.show()
self.showValues(feature, atr)
self.actionButtonBox.setDisabled(True)
else:
self.newGroupBox.show()
self.editGroupBox.hide()
self.verwijderWidget.hide()
self.editFeature = None
self.statusNieuwLabel.setText(unicode(feature['status']))
self.pandidLabel.setText(unicode(feature['gebouwnummer']))
开发者ID:zaanstad,项目名称:QGIS-funderingen,代码行数:29,代码来源:dockeditordialog.py
示例4: processAlgorithm
def processAlgorithm(self, progress):
network = dataobjects.getObjectFromUri(
self.getParameterValue(self.NETWORK_LAYER))
# Ensure that upstream and downstream arc detected
idxUpArcId= findField(network, 'UpArcId')
if idxUpArcId == -1:
raise GeoAlgorithmExecutionException(
self.tr('Seems upstream and downstream arcs is not set. '
'Please run corresponding tool and try again.'))
# First add new fields to the network layer
networkProvider = network.dataProvider()
(idxStrahler, fieldList) = findOrCreateField(network,
network.pendingFields(), 'StrahOrder', QVariant.Int, 10, 0)
writer = self.getOutputFromName(self.STRAHLER_ORDER).getVectorWriter(
fieldList.toList(), networkProvider.geometryType(),
networkProvider.crs())
# Generate helper dictionaries
myNetwork, arcsPerNodeId = makeHelperDictionaries(network)
# Write output file
for f in network.getFeatures():
writer.addFeature(f)
del writer
vl = QgsVectorLayer(self.getOutputValue(self.STRAHLER_ORDER), 'tmp', 'ogr')
provider = vl.dataProvider()
# calculate Strahler orders
# Algorithm at pages 65-66 "Automated AGQ4Vector Watershed.pdf"
req = QgsFeatureRequest()
progress.setInfo(self.tr('Calculating Strahler orders...'))
# Iterate over upsteram node ids starting from the last ones
# which represents source arcs
for nodeId in sorted(myNetwork.keys(), reverse=True):
f = vl.getFeatures(req.setFilterFid(myNetwork[nodeId])).next()
fid = f.id()
upstreamArcs = f['UpArcId']
if upstreamArcs == NULL:
provider.changeAttributeValues({fid:{idxStrahler: 1}})
else:
orders = []
for i in upstreamArcs.split(','):
f = vl.getFeatures(req.setFilterFid(int(i))).next()
if f['StrahOrder']:
orders.append(f['StrahOrder'])
orders.sort(reverse=True)
if len(orders) == 1:
order = orders[0]
elif len(orders) >= 2:
diff = orders[0] - orders[1]
if diff == 0:
order = orders[0] + 1
else:
order = max([orders[0], orders[1]])
provider.changeAttributeValues({fid:{idxStrahler: order}})
开发者ID:faunalia,项目名称:QGeomorf,代码行数:60,代码来源:StrahlerOrder.py
示例5: __call__
def __call__(self):
if self.rect:
rq = QgsFeatureRequest()
rq.setFilterRect(self.rect)
features = self.layer.getFeatures(rq)
else:
features = self.layer.getFeatures()
for where in self.wheres:
if self.DEBUG: "Has filter"
#TODO Index lookup
# if self.index:
# if self.DEBUG: print "Has index"
# min = 6163
# max = 6164
# iters = [iter(self.index[code]) for code in xrange(min, max + 1)]
# features = itertools.chain(*iters)
features = where(features)
# TODO Clean up
if self.limit:
if self.DEBUG: print "Has Limit"
for count in xrange(self.limit):
if self.selectstatment:
yield self.selectstatment(features.next())
else:
yield features.next()
else:
for f in features:
if self.selectstatment:
yield self.selectstatment(f)
else:
yield f
开发者ID:dakcarto,项目名称:fossildigtools,代码行数:33,代码来源:query.py
示例6: print_attribute_table
def print_attribute_table(layer, limit=-1):
"""Print the attribute table in the console.
:param layer: The layer to print.
:type layer: QgsVectorLayer
:param limit: The limit in the query.
:type limit: integer
"""
if layer.wkbType() == QGis.WKBNoGeometry:
geometry = False
else:
geometry = True
headers = []
if geometry:
headers.append('geom')
headers.extend(
[f.name() + ' : ' + str(f.type()) for f in layer.fields().toList()])
request = QgsFeatureRequest()
request.setLimit(limit)
data = []
for feature in layer.getFeatures(request):
attributes = []
if geometry:
attributes.append(feature.geometry().type())
attributes.extend(feature.attributes())
data.append(attributes)
print pretty_table(data, headers)
开发者ID:Gustry,项目名称:GeoHealth,代码行数:31,代码来源:debug_helper.py
示例7: __get_text_flaeche
def __get_text_flaeche(self, quelle, gstk, layer, fld_name):
text = {}
#performance! filter by bb of gstk first
feat_req = QgsFeatureRequest()
feat_req.setFilterRect(gstk.geometry().boundingBox())
for feat in layer.getFeatures(feat_req):
if feat.geometry().intersects(gstk.geometry()):
#no fld_name defined: means yes/no only
if fld_name is None:
attr_val = u'Ja'
else:
attr_val = feat[fld_name]
#convert everything to string
#JSON only allows for string keys -> settingsfile
if isinstance( attr_val, (int, long)):
attr_val = unicode(attr_val)
elif isinstance(attr_val, float):
attr_val = u'{0:.0f}'.format(attr_val)
#replace attribute values with mapping text from settings file
if not quelle.text is None:
if attr_val in quelle.text:
attr_val = quelle.text[attr_val]
flaeche = feat.geometry().intersection(gstk.geometry()).area()
if fld_name in text:
text[attr_val] += flaeche
else:
text[attr_val] = flaeche
if len(text) < 1 and fld_name is None:
text[u'Nein'] = 0
elif len(text) < 1 and not fld_name is None:
text[u'Nein'] = 0
return text
开发者ID:BergWerkGIS,项目名称:VoGIS-Raumplanung,代码行数:32,代码来源:vrpprintcomposer.py
示例8: writeTmpLayer
def writeTmpLayer(layer, restrictToExtent, iface, extent):
fields = layer.fields()
usedFields = []
for count, field in enumerate(fields):
fieldIndex = fields.indexFromName(unicode(field.name()))
editorWidget = layer.editorWidgetSetup(fieldIndex).type()
addField = False
try:
if layer.renderer().classAttribute() == field.name():
addField = True
except:
pass
if layer.customProperty("labeling/fieldName") == field.name():
addField = True
if (editorWidget != 'Hidden'):
addField = True
if addField:
usedFields.append(count)
uri = TYPE_MAP[layer.wkbType()]
crs = layer.crs()
if crs.isValid():
uri += '?crs=' + crs.authid()
for field in usedFields:
fieldIndex = layer.fields().indexFromName(unicode(
layer.fields().field(field).name()))
editorWidget = layer.editorWidgetSetup(fieldIndex).type()
fieldType = layer.fields().field(field).type()
fieldName = layer.fields().field(field).name()
if (editorWidget == 'Hidden'):
fieldName = "q2wHide_" + fieldName
fieldType = "double" if (fieldType == QVariant.Double or
fieldType == QVariant.Int) else ("string")
uri += '&field=' + unicode(fieldName) + ":" + fieldType
newlayer = QgsVectorLayer(uri, layer.name(), 'memory')
writer = newlayer.dataProvider()
outFeat = QgsFeature()
if restrictToExtent and extent == "Canvas extent":
canvas = iface.mapCanvas()
extent = canvas.extent()
canvasCRS = canvas.mapSettings().destinationCrs()
layerCRS = layer.crs()
try:
transform = QgsCoordinateTransform(canvasCRS, layerCRS,
QgsProject.instance())
except:
transform = QgsCoordinateTransform(canvasCRS, layerCRS)
projectedExtent = transform.transformBoundingBox(extent)
request = QgsFeatureRequest(projectedExtent)
request.setFlags(QgsFeatureRequest.ExactIntersect)
features = layer.getFeatures(request)
else:
features = layer.getFeatures()
for feature in features:
if feature.geometry() is not None:
outFeat.setGeometry(feature.geometry())
attrs = [feature[f] for f in usedFields]
if attrs:
outFeat.setAttributes(attrs)
writer.addFeatures([outFeat])
return newlayer
开发者ID:Tomacorcoran,项目名称:qgis2web,代码行数:60,代码来源:utils.py
示例9: exportImages
def exportImages(layer, field, layerFileName):
field_index = layer.fields().indexFromName(field)
widget = layer.editorWidgetSetup(field_index).type()
if widget != 'Photo':
return
fr = QgsFeatureRequest()
fr.setSubsetOfAttributes([field_index])
for feature in layer.getFeatures(fr):
photo_file_name = feature.attribute(field)
if type(photo_file_name) is not unicode:
continue
source_file_name = photo_file_name
if not os.path.isabs(source_file_name):
prj_fname = QgsProject.instance().fileName()
source_file_name = os.path.join(os.path.dirname(prj_fname),
source_file_name)
photo_file_name = re.sub(r'[\\/:]', '_', photo_file_name).strip()
photo_file_name = os.path.join(os.path.dirname(layerFileName),
'..', 'images', photo_file_name)
try:
shutil.copyfile(source_file_name, photo_file_name)
except IOError as e:
pass
开发者ID:Tomacorcoran,项目名称:qgis2web,代码行数:29,代码来源:utils.py
示例10: get_wkt
def get_wkt(self, spatial_column, feature_id):
"""
Gets feature geometry in Well-Known Text
format and returns it.
:param spatial_column: The spatial column name.
:type spatial_column: String
:param feature_id: Feature id
:type feature_id: Integer
:return: Well-Known Text format of a geometry
:rtype: WKT
"""
geom_wkt = None
fid = feature_id
request = QgsFeatureRequest()
request.setFilterFid(fid)
features = self.layer.getFeatures(request)
geom_col_obj = self.entity.columns[spatial_column]
geom_type = geom_col_obj.geometry_type()
# get the wkt of the geometry
for feature in features:
geometry = feature.geometry()
if geometry.isGeosValid():
if geom_type in ['MULTIPOLYGON', 'MULTILINESTRING']:
geometry.convertToMultiType()
geom_wkt = geometry.exportToWkt()
return geom_wkt
开发者ID:gltn,项目名称:stdm,代码行数:30,代码来源:spatial_unit_form.py
示例11: findFeaturesAt
def findFeaturesAt(mapPoint, layerConfig, mapTool):
"""
To find features from a given position in a given layer
:param mapPoint: the map position
:param layerConfig: the layer in which we are looking for features
:param mapTool: a QgsMapTool instance
:return: features found in layer
"""
if layerConfig is None:
return None
tolerance = layerConfig.tolerance
if layerConfig.unit == QgsTolerance.Pixels:
layTolerance = Finder.calcCanvasTolerance(mapTool.toCanvasCoordinates(mapPoint), layerConfig.layer, mapTool,
tolerance)
elif layerConfig.unit == QgsTolerance.ProjectUnits:
layTolerance = Finder.calcMapTolerance(mapPoint, layerConfig.layer, mapTool, tolerance)
else:
layTolerance = tolerance
layPoint = mapTool.toLayerCoordinates(layerConfig.layer, mapPoint)
searchRect = QgsRectangle(layPoint.x() - layTolerance, layPoint.y() - layTolerance,
layPoint.x() + layTolerance, layPoint.y() + layTolerance)
request = QgsFeatureRequest()
request.setFilterRect(searchRect)
request.setFlags(QgsFeatureRequest.ExactIntersect)
features = []
for feature in layerConfig.layer.getFeatures(request):
if layerConfig.layer.geometryType() == QGis.Polygon:
dist, nearest, vertex = feature.geometry().closestSegmentWithContext(mapPoint)
if QgsGeometry.fromPoint(nearest).intersects(searchRect):
features.append(QgsFeature(feature))
else:
features.append(QgsFeature(feature))
return features
开发者ID:gusthiot,项目名称:VDLTools,代码行数:33,代码来源:finder.py
示例12: testRectAndFids
def testRectAndFids(self):
"""
Test the combination of a filter rect along with filterfids
"""
# first get feature ids
ids = {f['pk']: f.id() for f in self.source.getFeatures()}
extent = QgsRectangle(-70, 67, -60, 80)
request = QgsFeatureRequest().setFilterFids([ids[3], ids[4]]).setFilterRect(extent)
result = set([f['pk'] for f in self.source.getFeatures(request)])
all_valid = (all(f.isValid() for f in self.source.getFeatures(request)))
expected = [4]
assert set(expected) == result, 'Expected {} and got {} when testing for combination of filterRect and expression'.format(set(expected), result)
self.assertTrue(all_valid)
# shouldn't matter what order this is done in
request = QgsFeatureRequest().setFilterRect(extent).setFilterFids([ids[3], ids[4]])
result = set([f['pk'] for f in self.source.getFeatures(request)])
all_valid = (all(f.isValid() for f in self.source.getFeatures(request)))
expected = [4]
assert set(
expected) == result, 'Expected {} and got {} when testing for combination of filterRect and expression'.format(
set(expected), result)
self.assertTrue(all_valid)
# test that results match QgsFeatureRequest.acceptFeature
for f in self.source.getFeatures():
self.assertEqual(request.acceptFeature(f), f['pk'] in expected)
开发者ID:AlisterH,项目名称:Quantum-GIS,代码行数:29,代码来源:featuresourcetestbase.py
示例13: _get_tvalue
def _get_tvalue(self, id, epoch, symbol, get_first):
req = QgsFeatureRequest()
exp = self._time_query_string(epoch, self.timeColumn, symbol)
exp += self._id_query_string(id)
req.setFilterExpression(exp)
warn(exp)
s = self.timeLayer.subsetString()
self.timeLayer.setSubsetString("")
featIt = self.timeLayer.layer.dataProvider().getFeatures(req)
self.timeLayer.setSubsetString(s)
feats = list(featIt)
if get_first:
subList = feats[:min(20, len(feats))]
else:
subList = feats[-min(20, len(feats)):]
feats = sorted(subList,
key=lambda feat: self.getStartEpochFromFeature(feat, self.timeLayer))
if not feats:
return None
if get_first:
feat = feats[0]
else:
feat = feats[-1]
curr_epoch = self.getStartEpochFromFeature(feat, self.timeLayer)
return curr_epoch
开发者ID:anitagraser,项目名称:TimeManager,代码行数:25,代码来源:queryinterpolator.py
示例14: clone_layer
def clone_layer(layer, keep_selection=True):
"""Duplicate the layer by taking the same source and copying keywords.
:param keep_selection: If we should keep the selection. Default to true.
:type keep_selection: bool
:param layer: Layer to be duplicated.
:type layer: QgsMapLayer
:return: The new QgsMapLayer object.
:rtype: QgsMapLayer
"""
if is_vector_layer(layer):
new_layer = QgsVectorLayer(
layer.source(), layer.name(), layer.providerType())
if keep_selection and layer.selectedFeatureCount() > 0:
request = QgsFeatureRequest()
request.setFilterFids(layer.selectedFeatureIds())
request.setFlags(QgsFeatureRequest.NoGeometry)
iterator = layer.getFeatures(request)
new_layer.setSelectedFeatures([k.id() for k in iterator])
else:
new_layer = QgsRasterLayer(
layer.source(), layer.name(), layer.providerType())
new_layer.keywords = copy_layer_keywords(layer.keywords)
return layer
开发者ID:inasafe,项目名称:inasafe,代码行数:28,代码来源:gis.py
示例15: writePolygonFeature
def writePolygonFeature(self, layer, attributes_dict):
polygons_svg = []
request = QgsFeatureRequest()
request.setFilterRect(self.iface.mapCanvas().extent())
for feature in layer.getFeatures(request):
polygons_svg.append(self.writePolygonToSVG(feature, attributes_dict))
return polygons_svg
开发者ID:Bulva,项目名称:SvgAttributes,代码行数:7,代码来源:svg_attributes.py
示例16: processAlgorithm
def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
if source is None:
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
field_names = self.parameterAsFields(parameters, self.FIELDS, context)
fields = QgsFields()
field_indices = []
for field_name in field_names:
field_index = source.fields().lookupField(field_name)
if field_index < 0:
feedback.reportError(self.tr('Invalid field name {}').format(field_name))
continue
field = source.fields()[field_index]
fields.append(field)
field_indices.append(field_index)
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
fields, QgsWkbTypes.NoGeometry, QgsCoordinateReferenceSystem())
results = {}
values = set()
if len(field_indices) == 1:
# one field, can use provider optimised method
values = tuple([v] for v in source.uniqueValues(field_indices[0]))
else:
# have to scan whole table
# TODO - add this support to QgsVectorDataProvider so we can run it on
# the backend
request = QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry)
request.setSubsetOfAttributes(field_indices)
total = 100.0 / source.featureCount() if source.featureCount() else 0
for current, f in enumerate(source.getFeatures(request, QgsProcessingFeatureSource.FlagSkipGeometryValidityChecks)):
if feedback.isCanceled():
break
value = tuple(f.attribute(i) for i in field_indices)
values.add(value)
feedback.setProgress(int(current * total))
if sink:
for value in values:
if feedback.isCanceled():
break
f = QgsFeature()
f.setAttributes([attr for attr in value])
sink.addFeature(f, QgsFeatureSink.FastInsert)
results[self.OUTPUT] = dest_id
output_file = self.parameterAsFileOutput(parameters, self.OUTPUT_HTML_FILE, context)
if output_file:
self.createHTML(output_file, values)
results[self.OUTPUT_HTML_FILE] = output_file
results[self.TOTAL_VALUES] = len(values)
results[self.UNIQUE_VALUES] = ';'.join([','.join([str(attr) for attr in v]) for v in
values])
return results
开发者ID:alexbruy,项目名称:QGIS,代码行数:59,代码来源:UniqueValues.py
示例17: processAlgorithm
def processAlgorithm(self, parameters, context, feedback):
if parameters[self.SPOKES] == parameters[self.HUBS]:
raise QgsProcessingException(
self.tr('Same layer given for both hubs and spokes'))
hub_source = self.parameterAsSource(parameters, self.HUBS, context)
spoke_source = self.parameterAsSource(parameters, self.SPOKES, context)
field_hub = self.parameterAsString(parameters, self.HUB_FIELD, context)
field_hub_index = hub_source.fields().lookupField(field_hub)
field_spoke = self.parameterAsString(parameters, self.SPOKE_FIELD, context)
field_spoke_index = hub_source.fields().lookupField(field_spoke)
fields = vector.combineFields(hub_source.fields(), spoke_source.fields())
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
fields, QgsWkbTypes.LineString, hub_source.sourceCrs())
hubs = hub_source.getFeatures()
total = 100.0 / hub_source.featureCount() if hub_source.featureCount() else 0
matching_field_types = hub_source.fields().at(field_hub_index).type() == spoke_source.fields().at(field_spoke_index).type()
for current, hub_point in enumerate(hubs):
if feedback.isCanceled():
break
if not hub_point.hasGeometry():
continue
p = hub_point.geometry().boundingBox().center()
hub_x = p.x()
hub_y = p.y()
hub_id = str(hub_point[field_hub])
hub_attributes = hub_point.attributes()
request = QgsFeatureRequest().setDestinationCrs(hub_source.sourceCrs())
if matching_field_types:
request.setFilterExpression(QgsExpression.createFieldEqualityExpression(field_spoke, hub_attributes[field_hub_index]))
spokes = spoke_source.getFeatures()
for spoke_point in spokes:
if feedback.isCanceled():
break
spoke_id = str(spoke_point[field_spoke])
if hub_id == spoke_id:
p = spoke_point.geometry().boundingBox().center()
spoke_x = p.x()
spoke_y = p.y()
f = QgsFeature()
f.setAttributes(hub_attributes + spoke_point.attributes())
f.setGeometry(QgsGeometry.fromPolyline(
[QgsPointXY(hub_x, hub_y), QgsPointXY(spoke_x, spoke_y)]))
sink.addFeature(f, QgsFeatureSink.FastInsert)
feedback.setProgress(int(current * total))
return {self.OUTPUT: dest_id}
开发者ID:exlimit,项目名称:QGIS,代码行数:59,代码来源:HubLines.py
示例18: featureCount
def featureCount(self):
if not self.subsetString():
return len(self._features)
else:
req = QgsFeatureRequest()
req.setFlags(QgsFeatureRequest.NoGeometry)
req.setSubsetOfAttributes([])
return len([f for f in self.getFeatures(req)])
开发者ID:dmarteau,项目名称:QGIS,代码行数:8,代码来源:provider_python.py
示例19: processAlgorithm
def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
if source is None:
raise QgsProcessingException(self.invalidSourceError(parameters, self.INPUT))
radius = self.parameterAsDouble(parameters, self.RADIUS, context)
kernel_shape = self.parameterAsEnum(parameters, self.KERNEL, context)
pixel_size = self.parameterAsDouble(parameters, self.PIXEL_SIZE, context)
decay = self.parameterAsDouble(parameters, self.DECAY, context)
output_values = self.parameterAsEnum(parameters, self.OUTPUT_VALUE, context)
outputFile = self.parameterAsOutputLayer(parameters, self.OUTPUT, context)
output_format = QgsRasterFileWriter.driverForExtension(os.path.splitext(outputFile)[1])
weight_field = self.parameterAsString(parameters, self.WEIGHT_FIELD, context)
radius_field = self.parameterAsString(parameters, self.RADIUS_FIELD, context)
attrs = []
kde_params = QgsKernelDensityEstimation.Parameters()
kde_params.source = source
kde_params.radius = radius
kde_params.pixelSize = pixel_size
# radius field
if radius_field:
kde_params.radiusField = radius_field
attrs.append(source.fields().lookupField(radius_field))
# weight field
if weight_field:
kde_params.weightField = weight_field
attrs.append(source.fields().lookupField(weight_field))
kde_params.shape = kernel_shape
kde_params.decayRatio = decay
kde_params.outputValues = output_values
kde = QgsKernelDensityEstimation(kde_params, outputFile, output_format)
if kde.prepare() != QgsKernelDensityEstimation.Success:
raise QgsProcessingException(
self.tr('Could not create destination layer'))
request = QgsFeatureRequest()
request.setSubsetOfAttributes(attrs)
features = source.getFeatures(request)
total = 100.0 / source.featureCount() if source.featureCount() else 0
for current, f in enumerate(features):
if feedback.isCanceled():
break
if kde.addFeature(f) != QgsKernelDensityEstimation.Success:
feedback.reportError(self.tr('Error adding feature with ID {} to heatmap').format(f.id()))
feedback.setProgress(int(current * total))
if kde.finalise() != QgsKernelDensityEstimation.Success:
raise QgsProcessingException(
self.tr('Could not save destination layer'))
return {self.OUTPUT: outputFile}
开发者ID:manisandro,项目名称:QGIS,代码行数:58,代码来源:Heatmap.py
示例20: intersecting_blocks
def intersecting_blocks(line, destination, grid):
"""Function to fetch intersectings polygons from the grid."""
dest_id_field = grid.fieldNameIndex('destination_id')
request = QgsFeatureRequest()
request.setFilterRect(line.boundingBox())
request.setFilterExpression('"destination_id" is None')
for feature in grid.getFeatures(request):
if feature.geometry().intersects(line):
grid.changeAttributeValue(feature.id(), dest_id_field, destination)
开发者ID:ePublicHealth,项目名称:GeoPublicHealth,代码行数:9,代码来源:accessibility.py
注:本文中的qgis.core.QgsFeatureRequest类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论