【问题标题】:Get average values in some specific range based on spatial analysis with QGIS基于 QGIS 的空间分析获取特定范围内的平均值
【发布时间】:2017-06-21 07:51:34
【问题描述】:

我正在使用 QGIS 来计算附加到多边形的平均值 绕一条线。

我想做的是从一条线计算用户定义范围内多边形数据的平均值。

我该怎么做呢?

我在下面附上一张图片供参考:

【问题讨论】:

    标签: geospatial qgis


    【解决方案1】:

    应该有几种方法可以做到这一点。最简单的可能this question的答案,然后使用this question的答案。

    但是,你应该可以用一点 python 来做到这一点。我写了一个只使用一层的小脚本(一个点层,它找到一定半径内的点的平均值,它平均一个名为“成本”的字段):

    # get selected feature
    layer = iface.activeLayer()
    features = layer.selectedFeatures()
    
    # Buffer the feature 10 layer units
    buffer = features[0].geometry().buffer(10,-1)
    
    # Will hold features intersecting buffer
    inBuffer = []
    
    # get selected features
    for feature in layer.getFeatures():
        if (feature.geometry().intersects(buffer)):
            inBuffer.append(feature)
    
    # for calculating the average
    total = 0
    number = 0
    
    # Sum the features that intersect the buffer of the selection:
    field = layer.fieldNameIndex('cost')
    for feature in inBuffer:
        total += (feature['cost'])
        number += 1
    
    #Get the average
    average = float(total / number)
    
    print (average)
    

    这仅采用第一个选择的特征(features[0])并将搜索半径应用于该特征,如果您只选择活动层中的特征,则此限制无关紧要

    上面的代码可以被压缩一点,但我想我会再把它分解一下。特别是因为我的 python 相当有限。

    要根据第一层中的选择找到第二层的平均值,您可以通过抓取所有层来稍微修改:

    mapcanvas = iface.mapCanvas()
    layers = mapcanvas.layers()
    

    然后在适当的位置使用layers[0]layers[1](或layers[i])代替层,例如:

    features = layer.selectedFeatures()features = layers[0].selectedFeatures()

    对于源特征,并且

    for feature in layer.getFeatures():for feature in layers[1].getFeatures()

    field = layer.fieldNameIndex('fieldname')field = layers[1].fieldNameIndex('fieldname')

    对于目标特征(被平均的那个)。

    希望我发布的代码很容易应用。我可能会确保两个层都使用相同的 SRS 以避免交叉路口出现任何问题,并记住缓冲区单元位于该 SRS 的单元中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 2020-03-11
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多