QGIS를 사용하여 속성 값을 기준으로 다각형 내에 규칙적인 간격의 점을 작성 하시겠습니까?


11

다각형 내부의 개인 수를 나타내는 속성 값이 첨부 된 다각형 레이어가 있습니다. QGIS 3.0을 사용하고 있습니다.

카운트를 다각형 내부의 점 그리드로 시각화해야합니다 (즉, 1 점 = 100 개구리, 종별로 채색). 점들은 반드시 다각형 전체를 차지할 필요는 없으며, 미리 정해진 간격 (즉, 300m)으로 중심 주위에 그려 지므로 특정 해상도에서 깔끔한 격자를 나타낼 수 있습니다.

현재 찾은 해결 방법은 counts 매개 변수와 함께 "Regular points"를 사용하여 맵에 그려진 범위 내에서 그리드를 만든 다음 알고리즘으로 생성 된 추가 포인트를 삭제하는 것입니다 (알고리즘은 그리드로 반올림하고 17에서 20 대신 20 포인트를 얻을 수 있음) 입력). 이를 통해 원하는 결과를 얻을 수 있지만 각 다각형의 일반 점에 대한 영역 범위와 수동 속성 입력 및 작성된 점 정리가 필요합니다. 또한 간격 대신 개수가 지정된 "정규 포인트"를 실행하기 때문에 각 다각형의 간격이 다릅니다.

간단히 말해서 : 각 다각형 (일괄 처리)에 대한 일반 점 (정의 된 점 수, 그려진 범위)> 추가 점 삭제> # 점에 속성 값 할당

대안 (불규칙한 간격은 피하지만 더 많은 조작이 필요함) :

전체 레이어 범위의 일반 점 (정의 된 간격, 즉 300m)> 다각형 범위에 클립> 원하는 점 수를 얻을 때까지> 각 속성 값을 포인트에 할당 할 때까지 각 다각형에서 추가 점을 삭제합니다.

해결 방법의 주요 문제는 다각형 별 다각형 처리로, 데이터를 업데이트하고 더 많은 수의 다각형으로 작업하기가 어렵습니다.

QGIS에서 다각형 내에 규칙적으로 간격을두고 정의 된 점 수생성하는 것과 비슷한 질문이 있었지만 세부 사항은 다릅니다.

원하는 결과의 스크린 샷 :

속성 테이블 L :


1
질문의 이미지가 결과로 기대하는 것을 나타 냅니까? 여러 색상 포인트는 어디에서 제공됩니까? 레이어의 속성 테이블을 추가 할 수 있습니까? 특히 색상과 개수를 더 잘 이해하기 위해 Edmonton 및 Sherwood Park를 포함하는 다각형의 속성.
Kadir Şahbaz

1. 이것은 실제 다각형과 관련이없는 마스크 된 데이터이지만 그래도 그런 종류의 결과를 기대하지만 다각형 중심 주위에 점이 있습니다. 2. 계수는 열당 3 개의 열 / 유형의 점이 있기 때문에 속성 테이블 열에서 가져옵니다. 먼저 다각형 당 올바른 수의 점을 얻기 위해 하나의 열로 집계 한 다음 표현식을 사용하여 속성 / 색상을 할당합니다. 편집 : 문제의 엑셀 테이블 추가 , 값을 나타내지 않지만 내 데이터 구조를 나타냅니다.
Ruslan

답변:


5

QGIS 3에는 클러스터 렌더러에 그리드라는 새로운 변위 방법이 있습니다. 이것이 필요한 것 같습니다. 다각형의 중심에 원하는 점의 수를 만드십시오.

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

GUI 도구로만 포인트를 생성하는 방법을 모르지만 비교적 간단한 파이썬 스크립트가 그렇게해야합니다.

with edit(point_layer):
    for polygon_feature in polygon_layer.getFeatures():
        point_feature = QgsFeature(point_layer.fields())
        point_feature.setGeometry(polygon_feature.geometry().centroid())

        point_feature['type'] = 'Frog'
        for i in range(polygon_feature['Frogs']):
            point_layer.addFeature(point_feature)

        point_feature['type'] = 'Cat'
        for i in range(polygon_feature['Cats']):
            point_layer.addFeature(point_feature)

        point_feature['type'] = 'Diplodoc'
        for i in range(polygon_feature['Diplodocs']):
            point_layer.addFeature(point_feature)

미쳐 가고 싶다면 사용자 정의 처리 알고리즘으로 래핑하십시오.


Matthias에게 감사드립니다. 다른 솔루션보다 훨씬 낫습니다. 이를 달성하기 위해 속성 테이블을 기반으로 원하는 포인트 수를 빠르게 생성하는 방법을 제안 할 수 있습니까?
Ruslan

작은 파이썬 스크립트를 작성하는 것 외에는 쉬운 방법을 알지 못합니다. 코드는 완전히 테스트되지 않았으므로 오타가있을 수 있습니다.)
Matthias Kuhn

다시 감사합니다. 많은 레이어 / 익스텐트 등에서 비슷한 시각화를 수행해야 할 것이므로 적어도 처리 모델을 작성하려고합니다.
Ruslan

5

Sarath SRK의 답변에 영감을주는 다른 방법 일 수 있습니다.

  1. 다각형의 중심
  2. 정사각형으로 표현하고 스케일에 맞게 조정하는 버퍼 : 즉 (1000 * (sqrt ( "Frogs"+ "Cats"+ "Diplodocs") / 2)) + 1 and Segment = 1, End cap style = Square
  3. 버퍼 스케일과 간격이 일정한 새로운 그리드 포인트.
  4. 버퍼 레이어와 교차하지 않는 삭제 지점 (위치별로 선택)
  5. 위치 별 속성 기여 (버퍼 또는 원래 다각형의 속성)

그러나, 당신은 이와 같은 것을 가질 것입니다 여기에 이미지 설명을 입력하십시오

  1. "@row_number"명령을 사용하여 그래픽 모델러를 사용하여 새 필드를 작성하십시오. 여기에 이미지 설명을 입력하십시오

  2. 버퍼 계층에서 반복적으로 모델을 실행 여기에 이미지 설명을 입력하십시오

  3. 모든 새 레이어 병합

  4. 필드의 합보다 큰 ID_pt 필드를 가진 모든 포인트를 삭제하십시오 ( "Frogs"+ "Cats"+ "Diplodocs")

  5. 규칙으로 분류
    • "ID_pt"<= "개구리"
    • "ID_pt"> "개구리"및 "ID_pt"<= ( "고양이"+ "개구리")
    • "ID_pt"> ( "고양이"+ "개구리") 및 "ID_pt"<= ( "고양이"+ "개구리"+ "Diplodocs") 여기에 이미지 설명을 입력하십시오

감사합니다! 오늘 이것을 시도 할 시간이 없지만 원하는 출력을 얻었을 때 실행 가능한 솔루션처럼 보입니다.
Ruslan

1

이를 위해 지오메트리 생성기를 사용할 수 있습니다.

  1. 심볼에 각 색상 / 속성마다 하나씩 3 개의 하위 레이어를 추가합니다.
  2. 각 하위 레이어에 대해 다중 다각형을 생성하는 식을 만듭니다.
  3. 이제 어려운 부분은 특성을 기반으로 다중 다각형에 대한 사각형 부분을 생성합니다. 나는 이것이 커스텀 파이썬 표현식 함수를 필요로 할 것이라고 생각한다.
  4. 선택적으로,지도 스케일에 대한 렌더링 변수를 사용하여 다각형 및 간격의 스케일을 결정하십시오.

죄송합니다. 지금 답변을 구하기에 너무 바쁩니다. 그러나이 레시피에서 무언가를 요리하는 것은 매우 흥미로운 도전이 될 것입니다. 어쩌면 누군가가 이것을 기반으로 멋진 솔루션을 제공 할 수 있습니다.
Matthias Kuhn

1

하나의 해결책은 각 다각형의 중심에 점이있는 점 레이어를 만드는 것입니다. 따라서 예를 들어 Edmonton 25의 중심점에 5 점이 있습니다 .5는 개구리 특성, 20 점은 고양이, 0 점은 디플로 도크입니다.

그런 다음 Placement 방법을 그리드로 설정 한 포인트 변위 렌더러를 사용하면 효과를 얻을 수 있습니다.

어려움은 포인트 레이어를 만드는 것입니다 ....


0

아주 간단한 대안은 레이어 속성에서 사용 가능한 파이 차트를 사용하는 것입니다. 속성과 크기는 표현식으로 지시 할 수 있습니다.

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


2
글쎄, 나는 데이터를 매핑하는 다른 방법에 대해 알고 있습니다. 문제의 핵심은 시각화 워크 플로우를 가능하게하는 것입니다. 파이 차트는 그리드를 볼 때 개인의 수에 대해 매우 잘 이해되므로 실제로 작동하지 않습니다. 원형 차트에서 각 다각형의 정확한 개별 수를 추정하는 것은 거의 불가능합니다.
Ruslan

0

다각형 중심에서 시작하여 나선형 경로에 점을 생성 할 수 있습니다. 다음 스택 오버플로 게시물 에는 등거리 점을 만들기위한 파이썬 코드가 있지만 자유 시간이 부족하여 현재 테스트 할 수는 없습니다.


충분히 가깝게 보이지만 질문에서 언급 했듯이이 코드를 코딩 / 제안 된 코드를 변경하기에 능숙하지 않습니다.
Ruslan

충분한 지식과 시간을 가진 사람이 들어
오길 바랍니다

0

귀하의 경우

  1. 전체 AOI에 대해 주어진 거리를 사용하여 규칙적인 간격의 점 만들기
  2. 모든 다각형 (입력)에 대한 중심점을 만듭니다.
  3. 세그먼트 값이 '1'인 고정 거리 버퍼 를 사용하여 해당 중심점에 대한 버퍼를 작성하십시오 . 원 대신 사각형 버퍼를 만듭니다 (버퍼 폴리곤을 회전하려면 Qgis에서 회전 도구를 사용하십시오).
  4. 벡터-> 리서치 도구-> 위치 별 선택 (다각형 규칙 내의 점)을 사용하여 버퍼 다각형 내에 포함 된 점을 선택합니다.
  5. 버퍼 다각형 외부의 점을 선택하고 삭제합니다. 이제 다각형 중심 주위에 일정한 간격의 점이 생겼습니다.
  6. 전체 포인트에 대해 과반수 속성을 제공하고 나머지 포인트는 수동으로 분류해야 합니다. 속성을 쉽게 업데이트하려면 QuickMultiAttributeEdit 도구를 사용하십시오.

감사합니다. 처리 단계를 줄이는 것처럼 보이지만 수동으로 선택 해야하는 문제는 해결하지 못합니다 (다각형 내부의 버퍼는 크기 = 다각형 당 동일한 점 수와 동일 함). 이것과 나의 작업 흐름의 주요 문제인 다각형.
Ruslan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.