누적 값 열

Aug 28 2020

여기에 게시 된 몇 가지 예제와 솔루션을 통해 라인 체인 또는 누적 값을 계산했습니다. 그러나 여전히 원하는 결과를 얻을 수 없습니다. 내가하려는 것은 '행 번호'로 '길이'값을 추가하는 것입니다. 따라서 라인 섹션 1의 체인지 / 누적 값 = 7.69026,2 = 14.83986, 3 = 22.69265 ...... 등. 이를 달성하기 위해 필드 계산기에서 사용할 수있는 표현식이 있습니까?

답변

5 LouisCottereau Aug 28 2020 at 13:32

필드 계산기에서 함수 편집기로 이동하여 새 파일을 만들고 다음 함수를 삽입합니다.

"""
Define new functions using @qgsfunction. feature and parent must always be the
last args. Use args=-1 to pass a list of values as arguments
"""

from qgis.core import *
from qgis.gui import *
import sys
if sys.version_info.major == 3:
    layer_registry = QgsProject
else:
    layer_registry = QgsMapLayerRegistry

@qgsfunction(args="auto", group='Custom')
def get_length_feature(layer_id, feature, parent):
    id = feature.id()
    len_tot = 0.
    for feat in layer_registry.instance().mapLayer(layer_id).getFeatures():
        if feat["id"] <= feature["id"]:
            len_tot += feat.geometry().length()
    return len_tot

로드하고 표현식 탭으로 돌아가서 다음을 삽입하십시오. get_length_feature( @layer_id )

2 MBain Aug 28 2020 at 19:02

맞춤 기능의 경우 +1, 소매를 잡는 좋은 트릭입니다.

이 경우 내장 aggregate함수로 수행 할 수 있습니다 .

aggregate( 'Line_CHain','sum', "Length" ,"id"<=  attribute( @parent,'id'))