QGIS는 속성에 대한 호의 반경을 계산합니다


9

QGIS 2.18.16이 설치되어 있습니다. 내 문제는 호 / 곡선 피처 (선)의 반경을 계산하는 방법입니다. 이 줄은 .dgn 파일에서 시작되었으며 FME로 읽고 PostGis DB에 썼습니다. 기본 키 등을 만들었고 테이블을 완전히 편집 할 수 있습니다. 호의 길이를 성공적으로 계산했지만 이러한 곡선의 반지름을 계산하는 방법을 알 수 없습니다. 이것은 ( https://www.mathopenref.com/arcradius.html ) 수학 측에 대한 아이디어를 줄 수 있지만 QGIS 계산기에서 사용하는 방법을 알 수는 없습니다. 따라서 DB에있는 모든 줄에 대해 "R"을 계산해야합니다.

벨로우즈가 그 예입니다. 내 데이터에는 "일반"폴리 라인과 다른 테이블에 호 / 곡선이 있습니다.

여기에 이미지 설명을 입력하십시오


식별 도구를 사용하여 호를 클릭하면 나열된 파생 속성 중 하나가 "가장 가까운 정점 반경"입니다. 따라서 반경을 계산할 필요가 없으며 필드 계산기에서이 속성에 액세스하는 방법 만 알아 내면됩니다. 또는 단순히 식별 도구에서 복사하십시오.
csk

노드 도구로 정점을 선택하여 레이어가 편집 모드에있을 때 정점의 속성을 볼 수도 있습니다. 그런 다음 정점 좌표 (x, y, r)가 정점 편집기 패널에 표시됩니다.
csk

식별 도구를 통해 반경을 보는 것이 적어도 가능하다는 것을 알고 반갑습니다. 적은 복사만으로도 복사-붙여 넣기 옵션이 될 수 있지만, 내가 가지고있는 전체 데이터에이를 사용할 계획입니다. : /
Sisuaski

나는 약간의 구글 검색을했는데 QGIS에서 원형 문자열 기능을 사용하는 사람이 많지 않은 것 같습니다. 따라서 현장 계산기에는 기성품 도구 또는 기능이 없습니다. 커스텀 파이썬 함수를 정의해야 할 수도 있습니다. 해당 경로로 이동하려면 질문에 pygis 태그를 추가하십시오.
csk

기능에 대해 몇 개의 정점이 있습니까? 당신은 무엇을 보는가 Vertex Editor당신은을 클릭하면 Node Tool?
Marco

답변:


6

약간 테스트 된 공식이 따르므로주의해서 진행하십시오. 그러나 여기에 예제가 있습니다 : https://www.mathopenref.com/arcradius.html 여기에 이미지 설명을 입력하십시오

원호가 호를 따라 중간 점에 정점이있는 경우 (그림에서 x1, y1이라고 함) 시작 및 끝점과 함께 사용하여 코드 길이 " W "와 높이를 계산할 수 있습니다다음 공식을 사용하여 반경 "R"을 구하려면" h "

여기에 이미지 설명을 입력하십시오

그리고 말하기

여기에 이미지 설명을 입력하십시오

W =

sqrt(
     ( $x_at(-1) - $x_at(0) )^2 +
     ( $y_at(-1) - $y_at(0) )^2
    )

여기에 이미지 설명을 입력하십시오

H =

sqrt(
    ( $x_at(1) - ( $x_at(-1) + $x_at(0) )/2 )^2
    + ( $y_at(1) - ( $y_at(-1) + $y_at(0) )/2 )^2
)

Field Calculator의 Expression Dialog에서 반경 계산에 대한 다음과 같은 긴 방정식이 있습니다.

여기에 이미지 설명을 입력하십시오

R =

sqrt( 
    ( $x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2 
    + ( $y_at(1) - ($y_at(-1) + $y_at(0))/2 )^2
     ) /2
+
(   ( $x_at(-1) - $x_at(0) )^2 )  + 
    ( $y_at(-1) - $y_at(0) )^2 )  )
/ ( 8 * sqrt(
            ( ($x_at(1) - ($x_at(-1) + $x_at(0) )/2 )^2
            + ( $y_at(1) - ($y_at(-1) + $y_at(0) )/2 )^2
             )
   )

1
LaTe X $$W= \sqrt {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2}$$ $$H = \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}$$$$R = \frac {\sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}} {2} + \frac {(x_{-1} - x_0)^2 +(y_{-1}-y_0)^2} {8 \sqrt { (x_1- \frac {(x_{-1}+x_0)} 2 )^2 + (y_1- \frac {(y_{-1}+y_0)} 2 )^2}}$$
Marco

아주 좋아요! 꼭지점에 액세스하는 방법을 상상하지 못했습니다. PostGIS에서 가능합니까?
Marco

1
마르코, 나는 당신이 찾고있는 척추를 추출하는 것이 가능하다고 생각합니다. postgis.net/docs/ST_PointN.html 링크를 참조하십시오 . 가장 우수한 수식 추가 및 편집에 감사드립니다.
cm1

개발자가 "쉬운 반경 계산"버튼을 추가하기를 기다리는 동안 이것은 내가 기대할 수있는 가장 유용한 답변입니다. 이제 나는 (그리고 다른 사람들도) 적어도 반경을 추출 할 수있는 방법을 가지고 있습니다. :) 나는 이것을 아직 테스트하지 않았지만 충분한 시간이 있으면 며칠 안에 할 것입니다. 도와 주셔서 감사합니다!
Sisuaski

1

FME로 데이터를 추출하는 동안 반지름을 추출하는 것은 어떻습니까? 거기에 ArcPropertyExtractor 변환기가 있는데, PostGIS DB에 설정할 준비가 된 속성의 반경 값을 제공해야합니다


이는 전체 데이터를 처리하는 좋은 방법 중 하나입니다. 내 문제는 내 조직에 FME 사용자가 충분하지 않으므로 프로세스를 최대한 쉽게 만들어야한다는 것입니다. 즉, 호, 영역, 선 등을 포함한 전체 프로세스를 Qgi로 수행 할 수 있어야합니다. 아크 피처 반경을 새로운 객체로 업데이트하는 기능은 Qgis로 수행해야합니다. 답장을 보내 주셔서 감사합니다. 지금은 FME로 반경 속성을 업데이트 할 예정이지만 QGIS를 사용하여이를 수행 할 수있는 방법이 있기를 바랍니다.
Sisuaski 2019
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.