Qgis里的查詢過濾


查詢過慮實現方式

通過給getFeatures()傳遞 QgsFeatureRequest對象,實現數據的過慮,下邊是一個查詢的例子:

request = QgsFeatureRequest()
request.setFilterRect(areaOfInterest)
for feature in layer.getFeatures(request):
    # do whatever you need with the feature

基於空間范圍的查詢

向QgsFeatureRequest的構造函數里傳遞一個  QgsRectangle 對象實現空間范圍內的過慮查詢:

rect=QgsRectangle(121.11,31.11,121.12,31.12) 

request = QgsFeatureRequest(
rect)

基於字段過慮的查詢

向QgsFeatureRequest的構造函數里傳遞一個 QgsExpression 對象實現字段的過慮查詢:

# The expression will filter the features where the field "location_name" contains
# the word "Lake" (case insensitive) exp = QgsExpression('location_name ILIKE \'%Lake%\'') request = QgsFeatureRequest(exp) 

QgsExpression的詳細語法參考: Expressions, Filtering and Calculating Values 。

QgsFeatureRequest還可以用來指定返回的字段,即只返回所有要素中需要的字段。

# Only return selected fields
request.setSubsetOfAttributes([0,2]) # More user friendly version request.setSubsetOfAttributes(['name','id'],layer.pendingFields()) # Don't return geometry objects request.setFlags(QgsFeatureRequest.NoGeometry) 

提示

可以設置QgsFeatureRequest.NoGeometry不返回幾何信息來提升查詢的速度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM