本文整理汇总了Python中qgis.core.QgsExpression类的典型用法代码示例。如果您正苦于以下问题:Python QgsExpression类的具体用法?Python QgsExpression怎么用?Python QgsExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: getValue
def getValue(self):
fileName = unicode(self.leText.text())
context = self.expressionContext()
exp = QgsExpression(fileName)
if not exp.hasParserError():
result = exp.evaluate(context)
if not exp.hasEvalError():
fileName = result
if fileName.startswith("[") and fileName.endswith("]"):
fileName = fileName[1:-1]
if fileName.strip() in ["", self.SAVE_TO_TEMP_FILE, self.SAVE_TO_TEMP_LAYER]:
if isinstance(self.output, OutputVector) and self.alg.provider.supportsNonFileBasedOutput():
# use memory layers for temporary files if supported
value = "memory:"
else:
value = None
elif fileName.startswith("memory:"):
value = fileName
elif fileName.startswith("postgis:"):
value = fileName
elif fileName.startswith("spatialite:"):
value = fileName
elif not os.path.isabs(fileName):
value = ProcessingConfig.getSetting(ProcessingConfig.OUTPUT_FOLDER) + os.sep + fileName
else:
value = fileName
return value
开发者ID:CS-SI,项目名称:QGIS,代码行数:28,代码来源:OutputSelectionPanel.py
示例2: processAlgorithm
def processAlgorithm(self, progress):
layer = layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
expression = self.getParameterValue(self.EXPRESSION)
qExp = QgsExpression(expression)
if qExp.hasParserError():
raise GeoAlgorithmExecutionException(qExp.parserErrorString())
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
layer.fields(), layer.wkbType(), layer.crs())
context = QgsExpressionContext()
context.appendScope(QgsExpressionContextUtils.globalScope())
context.appendScope(QgsExpressionContextUtils.projectScope())
context.appendScope(QgsExpressionContextUtils.layerScope(layer))
count = layer.featureCount()
step = 100.0 / count if count else 1
request = QgsFeatureRequest(qExp, context)
for current, f in enumerate(layer.getFeatures(request)):
writer.addFeature(f)
progress.setPercentage(int(current * step))
del writer
开发者ID:DHI-GRAS,项目名称:ESA_Processing,代码行数:26,代码来源:ExtractByExpression.py
示例3: exp2func
def exp2func(expstr, name=None, mapLib=None):
"""
Convert a QgsExpression into a JS function.
"""
global whenfunctions
whenfunctions = []
exp = QgsExpression(expstr)
js = walkExpression(exp.rootNode(), mapLib=mapLib)
if name is None:
import random
import string
name = ''.join(random.choice(string.ascii_lowercase) for _ in range(4))
name += "_eval_expression"
temp = """
function %s(context) {
// %s
var feature = context.feature;
%s
if (feature.properties) {
return %s;
} else {
return %s;
}
}""" % (name,
exp.dump(),
"\n".join(whenfunctions),
js,
js.replace("feature.properties['", "feature['"))
return temp, name, exp.dump()
开发者ID:boesiii,项目名称:qgis2web,代码行数:30,代码来源:exp2js.py
示例4: expression_iterator
def expression_iterator(self, layer, expression, geometryStorage):
featReq = QgsFeatureRequest()
expression = QgsExpression(expression)
context = QgsExpressionContext()
self.stopLoop = False
i = 0
for f in layer.getFeatures(featReq):
QCoreApplication.processEvents()
if self.stopLoop:
break
self.recordingSearchProgress.emit(i)
i += 1
context.setFeature(f)
evaluated = unicode(expression.evaluate(context))
if expression.hasEvalError():
continue
if f.geometry() is None or f.geometry().centroid() is None:
continue
centroid = f.geometry().centroid().asPoint()
if geometryStorage == 'wkb':
geom = binascii.b2a_hex(f.geometry().asWkb())
elif geometryStorage == 'wkt':
geom = f.geometry().exportToWkt()
elif geometryStorage == 'extent':
geom = f.geometry().boundingBox().asWktPolygon()
yield ( evaluated, centroid.x(), centroid.y(), geom )
开发者ID:3nids,项目名称:quickfinder,代码行数:26,代码来源:project_finder.py
示例5: resolveValue
def resolveValue(self, alg):
if self.hidden:
return
if not bool(self.value):
self.value = self._resolveTemporary(alg)
else:
exp = QgsExpression(self.value)
if not exp.hasParserError():
value = exp.evaluate(_expressionContext(alg))
if not exp.hasEvalError():
self.value = value
if ":" not in self.value:
if not os.path.isabs(self.value):
self.value = os.path.join(ProcessingConfig.getSetting(ProcessingConfig.OUTPUT_FOLDER),
self.value)
supported = self._supportedExtensions()
if supported:
idx = self.value.rfind('.')
if idx == -1:
self.value = self.value + '.' + self.getDefaultFileExtension()
else:
ext = self.value[idx + 1:]
if ext not in supported:
self.value = self.value + '.' + self.getDefaultFileExtension()
开发者ID:spono,项目名称:QGIS,代码行数:25,代码来源:outputs.py
示例6: prepareAlgorithm
def prepareAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, 'INPUT', context)
mapping = self.parameterAsFieldsMapping(parameters, self.FIELDS_MAPPING, context)
self.fields = QgsFields()
self.expressions = []
da = QgsDistanceArea()
da.setSourceCrs(source.sourceCrs())
da.setEllipsoid(context.project().ellipsoid())
# create an expression context using thread safe processing context
self.expr_context = self.createExpressionContext(parameters, context, source)
for field_def in mapping:
self.fields.append(QgsField(name=field_def['name'],
type=field_def['type'],
typeName="",
len=field_def.get('length', 0),
prec=field_def.get('precision', 0)))
expression = QgsExpression(field_def['expression'])
expression.setGeomCalculator(da)
expression.setDistanceUnits(context.project().distanceUnits())
expression.setAreaUnits(context.project().areaUnits())
if expression.hasParserError():
raise QgsProcessingException(
self.tr(u'Parser error in expression "{}": {}')
.format(str(expression.expression()),
str(expression.parserErrorString())))
self.expressions.append(expression)
return True
开发者ID:minorua,项目名称:QGIS,代码行数:31,代码来源:FieldsMapper.py
示例7: mg_flow_trace_select_features
def mg_flow_trace_select_features(self, layer, elem_type):
sql = "SELECT * FROM "+self.schema_name+".temp_mincut_"+elem_type+" ORDER BY "+elem_type+"_id"
rows = self.dao.get_rows(sql)
self.dao.commit()
# Build an expression to select them
aux = "\""+elem_type+"_id\" IN ("
for elem in rows:
aux+= elem[0]+", "
aux = aux[:-2]+")"
# Get a featureIterator from this expression:
expr = QgsExpression(aux)
if expr.hasParserError():
self.showWarning("Expression Error: "+str(expr.parserErrorString()))
return
it = layer.getFeatures(QgsFeatureRequest(expr))
# Build a list of feature id's from the previous result
id_list = [i.id() for i in it]
# Select features with these id's
layer.setSelectedFeatures(id_list)
开发者ID:maduhu,项目名称:giswater_qgis_plugin,代码行数:24,代码来源:giswater.py
示例8: getValue
def getValue(self):
fileName = unicode(self.leText.text())
context = self.expressionContext()
exp = QgsExpression(fileName)
if not exp.hasParserError():
result = exp.evaluate(context)
if not exp.hasEvalError():
fileName = result
if fileName.startswith("[") and fileName.endswith("]"):
fileName = fileName[1:-1]
if fileName.strip() in ['', self.SAVE_TO_TEMP_FILE]:
value = None
elif fileName.startswith('memory:'):
value = fileName
elif fileName.startswith('postgis:'):
value = fileName
elif fileName.startswith('spatialite:'):
value = fileName
elif not os.path.isabs(fileName):
value = ProcessingConfig.getSetting(
ProcessingConfig.OUTPUT_FOLDER) + os.sep + fileName
else:
value = fileName
return value
开发者ID:AM7000000,项目名称:QGIS,代码行数:25,代码来源:OutputSelectionPanel.py
示例9: setSearchAndReplaceDictionaryFromLayer
def setSearchAndReplaceDictionaryFromLayer(self, layer, expression):
'''
Set the search and replace dictionary
from a given layer
and an expression.
The first found features is the data source
'''
searchAndReplaceDictionary = {}
# Get and validate expression
qExp = QgsExpression( expression )
if not qExp.hasParserError():
qReq = QgsFeatureRequest( qExp )
features = layer.getFeatures( qReq )
else:
QgsMessageLog.logMessage( 'An error occured while parsing the given expression: %s' % qExp.parserErrorString() )
features = layer.getFeatures()
# Get layer fields name
fields = layer.pendingFields()
field_names = [ field.name() for field in fields ]
# Take only first feature
for feat in features:
# Build dictionnary
searchAndReplaceDictionary = dict(zip(field_names, feat.attributes()))
break
self.searchAndReplaceDictionary = searchAndReplaceDictionary
开发者ID:3liz,项目名称:QgisDynamicLayersPlugin,代码行数:29,代码来源:dynamic_layers_engine.py
示例10: mg_flow_trace_select_features
def mg_flow_trace_select_features(self, layer, elem_type):
if self.index_action == '56':
sql = "SELECT * FROM "+self.schema_name+".anl_flow_trace_"+elem_type+" ORDER BY "+elem_type+"_id"
else:
sql = "SELECT * FROM "+self.schema_name+".anl_flow_exit_"+elem_type+" ORDER BY "+elem_type+"_id"
rows = self.controller.get_rows(sql)
if rows:
# Build an expression to select them
aux = "\""+elem_type+"_id\" IN ("
for elem in rows:
aux += elem[0] + ", "
aux = aux[:-2] + ")"
# Get a featureIterator from this expression:
expr = QgsExpression(aux)
if expr.hasParserError():
message = "Expression Error: " + str(expr.parserErrorString())
self.controller.show_warning(message, context_name='ui_message')
return
it = layer.getFeatures(QgsFeatureRequest(expr))
# Build a list of feature id's from the previous result
id_list = [i.id() for i in it]
# Select features with these id's
layer.setSelectedFeatures(id_list)
开发者ID:Giswater,项目名称:giswater_qgis_plugin,代码行数:29,代码来源:flow_trace_flow_exit.py
示例11: layer_value
def layer_value(feature, layer, defaultconfig):
layername = defaultconfig['layer']
expression = defaultconfig['expression']
field = defaultconfig['field']
searchlayer = QgsMapLayerRegistry.instance().mapLayersByName(layername)[0]
if feature.geometry():
rect = feature.geometry().boundingBox()
if layer.geometryType() == QGis.Point:
point = feature.geometry().asPoint()
rect = QgsRectangle(point.x(), point.y(), point.x() + 10, point.y() + 10)
else:
rect.scale(20)
rect = canvas.mapRenderer().mapToLayerCoordinates(layer, rect)
rq = QgsFeatureRequest().setFilterRect(rect)\
.setFlags(QgsFeatureRequest.ExactIntersect)
features = searchlayer.getFeatures(rq)
else:
features = searchlayer.getFeatures()
exp = QgsExpression(expression)
exp.prepare(searchlayer.pendingFields())
for f in features:
if exp.evaluate(f):
return f[field]
raise DefaultError('No features found')
开发者ID:HeatherHillers,项目名称:Roam,代码行数:29,代码来源:defaults.py
示例12: testZeroArgFunctionsTakeNoArgs
def testZeroArgFunctionsTakeNoArgs(self):
QgsExpression.registerFunction(self.special)
special = self.special
self.assertEqual(special.name(), 'special')
exp = QgsExpression('special()')
result = exp.evaluate()
self.assertEqual('test', result)
开发者ID:AlisterH,项目名称:Quantum-GIS,代码行数:7,代码来源:test_qgsexpression.py
示例13: generic_zoom
def generic_zoom(self, fieldname, combo, field_index=0):
''' Get selected element from the combo, and returns a feature request expression '''
# Get selected element from combo
element = combo.currentText()
if element.strip() == '':
print "Any record selected"
return None
elem = combo.itemData(combo.currentIndex())
if not elem:
# that means that user has edited manually the combo but the element
# does not correspond to any combo element
message = 'Element {} does not exist'.format(element)
self.controller.show_warning(message)
return None
# Select this feature in order to copy to memory layer
aux = fieldname+" = '"+str(elem[field_index])+"'"
expr = QgsExpression(aux)
if expr.hasParserError():
message = expr.parserErrorString() + ": " + aux
self.controller.show_warning(message)
return
return expr
开发者ID:Giswater,项目名称:giswater_qgis_plugin,代码行数:26,代码来源:search_plus.py
示例14: _expressionValues
def _expressionValues(self, text):
strings = self.dialog.getAvailableValuesOfType(
[QgsProcessingParameterString, QgsProcessingParameterNumber], [])
model_params = [(self.dialog.resolveValueDescription(s), s) for s in strings]
variables = QgsExpression.referencedVariables(text)
# replace description by parameter's name (diverging after model save)
descriptions = QgsExpression.referencedVariables(text)
for k, v in model_params:
if k in descriptions:
text = text.replace('[% @{} %]'.format(k), '[% @{} %]'.format(v.parameterName()))
src = QgsProcessingModelChildParameterSource.fromExpressionText(text)
# add parameters currently used by the expression
expression_values = []
expression_values.append(src)
for k, v in model_params:
if k in variables:
expression_values.append(v)
return expression_values
开发者ID:mbernasocchi,项目名称:QGIS,代码行数:25,代码来源:ExecuteSQLWidget.py
示例15: add_flooded_field
def add_flooded_field(self, shapefile_path):
"""Create the layer from the local shp adding the flooded field.
.. versionadded:: 3.3
Use this method to add a calculated field to a shapefile. The shapefile
should have a field called 'count' containing the number of flood
reports for the field. The field values will be set to 0 if the count
field is < 1, otherwise it will be set to 1.
:param shapefile_path: Path to the shapefile that will have the flooded
field added.
:type shapefile_path: basestring
:return: A vector layer with the flooded field added.
:rtype: QgsVectorLayer
"""
layer = QgsVectorLayer(
shapefile_path, self.tr('Jakarta Floods'), 'ogr')
# Add a calculated field indicating if a poly is flooded or not
# from PyQt4.QtCore import QVariant
layer.startEditing()
field = QgsField('flooded', QVariant.Int)
layer.dataProvider().addAttributes([field])
layer.commitChanges()
layer.startEditing()
idx = layer.fieldNameIndex('flooded')
expression = QgsExpression('state > 0')
expression.prepare(layer.pendingFields())
for feature in layer.getFeatures():
feature[idx] = expression.evaluate(feature)
layer.updateFeature(feature)
layer.commitChanges()
return layer
开发者ID:jobel-openscience,项目名称:inasafe,代码行数:34,代码来源:peta_jakarta_dialog.py
示例16: _time_query_string
def _time_query_string(self, epoch, col, symbol="="):
if self.timeLayer.getDateType() == time_util.DateTypes.IntegerTimestamps:
return "{} {} {}".format(QgsExpression.quotedColumnRef(col), symbol, epoch)
else:
timeStr = time_util.epoch_to_str(epoch, self.timeLayer.getTimeFormat())
return "{} {} {}".format(QgsExpression.quotedColumnRef(col), symbol,
QgsExpression.quotedString(timeStr))
开发者ID:anitagraser,项目名称:TimeManager,代码行数:7,代码来源:queryinterpolator.py
示例17: testHandlesNull
def testHandlesNull(self):
context = QgsExpressionContext()
QgsExpression.registerFunction(self.null_mean)
exp = QgsExpression('null_mean(1, 2, NULL, 3)')
result = exp.evaluate(context)
self.assertFalse(exp.hasEvalError())
self.assertEqual(result, 2)
开发者ID:AlisterH,项目名称:Quantum-GIS,代码行数:7,代码来源:test_qgsexpression.py
示例18: __ok
def __ok(self, withVertex, withPoint):
"""
To apply the interpolation
:param withVertex: if we want a new interpolated vertex
:param withPoint: if we want a new interpolated point
"""
line_v2, curved = GeometryV2.asLineV2(self.__selectedFeature.geometry(), self.__iface)
vertex_v2 = QgsPointV2()
vertex_id = QgsVertexId()
line_v2.closestSegment(QgsPointV2(self.__mapPoint), vertex_v2, vertex_id, 0)
x0 = line_v2.xAt(vertex_id.vertex-1)
y0 = line_v2.yAt(vertex_id.vertex-1)
d0 = Finder.sqrDistForCoords(x0, vertex_v2.x(), y0, vertex_v2.y())
x1 = line_v2.xAt(vertex_id.vertex)
y1 = line_v2.yAt(vertex_id.vertex)
d1 = Finder.sqrDistForCoords(x1, vertex_v2.x(), y1, vertex_v2.y())
z0 = line_v2.zAt(vertex_id.vertex-1)
z1 = line_v2.zAt(vertex_id.vertex)
z = old_div((d0*z1 + d1*z0), (d0 + d1))
vertex_v2.addZValue(round(z, 2))
if withPoint:
pt_feat = QgsFeature(self.__layer.pendingFields())
pt_feat.setGeometry(QgsGeometry(vertex_v2))
for i in range(len(self.__layer.pendingFields())):
# default = self.__layer.defaultValue(i, pt_feat)
# if default is not None:
# print(pt_feat.fields().at(i).name(), pt_feat.fields().at(i).defaultValueExpression(), default)
# print(self.__layer.defaultValueExpression(i), self.__layer.expressionField(i))
e = QgsExpression(self.__layer.defaultValueExpression(i))
default = e.evaluate(pt_feat)
pt_feat.setAttribute(i, default)
if self.__layer.editFormConfig().suppress() == QgsEditFormConfig.SuppressOn:
self.__layer.addFeature(pt_feat)
else:
self.__iface.openFeatureForm(self.__layer, pt_feat)
if withVertex:
line_v2.insertVertex(vertex_id, vertex_v2)
self.__lastLayer.changeGeometry(self.__selectedFeature.id(), QgsGeometry(line_v2))
found_features = self.__lastLayer.selectedFeatures()
if len(found_features) > 0:
if len(found_features) > 1:
self.__iface.messageBar().pushMessage(QCoreApplication.translate("VDLTools", "One feature at a time"),
level=QgsMessageBar.INFO)
else:
self.__selectedFeature = found_features[0]
else:
self.__iface.messageBar().pushMessage(QCoreApplication.translate("VDLTools", "No more feature selected"),
level=QgsMessageBar.INFO)
self.__iface.mapCanvas().refresh()
self.__done()
self.__findVertex = True
开发者ID:gusthiot,项目名称:VDLTools,代码行数:59,代码来源:interpolate_tool.py
示例19: testCanUnregisterFunction
def testCanUnregisterFunction(self):
QgsExpression.registerFunction(self.testfun)
index = QgsExpression.functionIndex('testfun')
self.assertNotEqual(index, -1)
error = QgsExpression.unregisterFunction('testfun')
self.assertTrue(error)
index = QgsExpression.functionIndex('testfun')
self.assertEqual(index, -1)
开发者ID:AlisterH,项目名称:Quantum-GIS,代码行数:8,代码来源:test_qgsexpression.py
示例20: showExpressionsBuilder
def showExpressionsBuilder(self):
context = self.param.expressionContext()
dlg = QgsExpressionBuilderDialog(None, self.leText.text(), self, 'generic', context)
dlg.setWindowTitle(self.tr('Expression based input'))
if dlg.exec_() == QDialog.Accepted:
exp = QgsExpression(dlg.expressionText())
if not exp.hasParserError():
self.setValue(dlg.expressionText())
开发者ID:medspx,项目名称:QGIS,代码行数:8,代码来源:StringInputPanel.py
注:本文中的qgis.core.QgsExpression类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论