QGIS에서 다른 스타일로 맵 이미지를 자동 생성합니까? [닫은]


9

QGIS에는 10 개 이상의 기능으로 구성된 1 개의 레이어 만 포함 된 간단한 맵이 있습니다. 이제 같은 영역의 약 200 가지 JPEG 맵 이미지를 (프로그래밍 방식으로) 생성해야합니다. 각 맵에는 맵 범위가 동일해야하며 모든 기능이 표시되어야합니다. 그러나 지형지 물마다 생성 된 맵마다 서로 다른 색상 세트가 있어야합니다. 세부적으로, 각 기능에 대한 분류 된 색상 (각 이미지 당 한 줄, 기능 당 열 및 색상)이 포함 된 CSV 파일이 있습니다.

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

현재 계획은 Perl 또는 이와 유사한 것을 사용하여이 CSV 파일을 기반으로 200 개의 다른 QML 파일을 작성하는 것입니다. 그런 다음 Python 스크립트를 작성하여

  1. QML 파일을 통한 루프
  2. 각 QML 파일을 한 번에 하나씩 열고 레이어 스타일을 적용하십시오
  3. 지도 작성기를 열고 래스터 이미지 파일 저장
  4. 맵 작성기를 닫고 다음 QML 파일로 이동

이제 다음과 관련된 정보를 요청합니다.

  • QGIS + Python 내에서이 작업을 수행 할 수 있습니까?
  • 내 목표를 달성하는 더 좋은 방법이 있습니까?
  • 이것을 달성하기 위해 기존 소스 코드 또는 플러그인에 대한 힌트가 있습니까?

답변:


21

이것은 파이썬 프로그래밍없이 QGIS에서 가능하지만 2.4가 출시 된 이후 추가 된 기능에 의존하기 때문에 QGIS 2.6의 현재 개발 스냅 샷이 필요합니다. 필요한 단계는 다음과 같습니다.

  • 동적으로 색상이 채워지는 지형지 물의 채색을 무시하고 원하는대로지도 레이어를 설정하십시오.

  • 새로운 인쇄 작곡가를 만듭니다. 컴포지션에 맵 항목을 추가하고 원하는대로 범위를 설정하십시오.

  • 원하는 맵 출력 기능 색상이 포함 된 CSV 파일을 가져옵니다.

  • 인쇄 작곡가에서 가져온 CSV 레이어를 "아틀라스 범위 레이어"로 설정하십시오 ( "아틀라스 생성"탭 참조). (지금 아틀라스를 내 보낸 경우 정확히 동일한지도의 200 개 사본을 얻을 수 있습니다 ...)

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

  • 다음으로 CSV 파일에 나열된 색상으로 스타일이 지정되도록 기능을 설정해야합니다. 이는 레이어 스타일 탭 하단의 "데이터 정의 속성"버튼을 통해 수행됩니다.

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

  • "Color"속성을 선택한 다음 "E"버튼을 클릭하여 표현식 편집기를 열어야합니다.

  • 표현은 다음과 같습니다.

    attribute(  $atlasfeature , 'A' )
    

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

  • 기본적으로이 표현식은 현재 아틀라스 기능에서 "A"열에 저장된 값을 검색합니다. 귀하의 경우이 값은 색상 (예 : # FF0000)이므로이 색상을 사용하여 기능의 스타일이 지정됩니다. (이 표현은 QGIS> 2.4에 의존하는 부분입니다. "속성"기능은 2.4가 출시 된 후에 추가되었습니다.)

  • 다른 기능도 비슷한 방식으로 스타일을 지정하지만 원하는대로 'B', 'C', 'D'등 열을 사용하십시오.

  • 인쇄 작곡가로 돌아가서 아틀라스 미리보기 (Atlas 메뉴-> 미리보기 아틀라스)를 활성화하고 툴바의 화살표를 사용하여 CSV 파일의 행을 단계별로 볼 수 있습니다. 모든 것이 올바르게 보이면 Atlas 메뉴의 옵션을 사용하여 아틀라스를 내 보내면 완료됩니다! 프로그래밍이 필요 없습니다!

출력 예 :

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.