QGIS에서 "나쁜 레이어 처리"를 무시하는 방법?


11

직장과 가정에서 모두 사용하는 QGIS (2.14.3-Essen) 프로젝트가 있습니다. 두 개의 레이어를 제외한 모든 레이어를 프로젝트와 함께 유지합니다.

나머지 2 개의 층은 매우 커서 DEM과 총 20GB 이상의 언덕 모양으로되어 있으며 직장과 가정에서 서로 다른 경로에 저장됩니다.

Handle Bad Layers대화 를 무시하고 해당 레이어의 깨진 경로를 유지하고 싶습니다 . 나는 종종 그들이 나쁜 것을 신경 쓰지 않습니다. 프로젝트의 다른 부분을 변경하고 싶습니다.

잘못된 레이어 처리 대화 상자를 무시하거나 건너 뛰어 업데이트하지 않으면 레이어에 대한 참조가 손실되지 않도록하는 방법이 있습니까?


이것은 QGIS에서 업스트림에서 해결해야하는 것입니다. 그렇게 어렵지 않을 것입니다. 이 고정 된 업스트림을 얻는 것이 좋습니다 (예 : 대화 상자의 추가 옵션 : a)이 세션에서 숨기기 b) 소스 경로 수정 c) 레이어 제거). 거기 주위에 많은 기업 이 당신을 위해 할 행복 할 것입니다.
Matthias Kuhn

1
@ Matthias Kuhn-아주 좋은 생각입니다. 해당 목록에있는 컨설턴트 중 하나를 사용합니다 (이름을 다한 것이 확실하지 않습니까?). 그들과 함께 가능성을 탐구 할 것입니다. 감사합니다
Martin Hügi

@ MartinHügi 이것에 대해 진전을 보셨습니까? 메일 링리스트리스트에서 비슷한 결과가 나왔습니다 .osgeo.org
Matthias Kuhn

아니, 나는 이것을 진전시키지 않았고, 실제로 우리가 살고있는 것들 중 하나가되어 실제로 잊어 버렸습니다. 상기시켜 주셔서 감사합니다. 상담에 질문을 할 수 있습니까, 아니면 이미 진행중인 문제입니까? @Aaron-어떻게이 문제가 해결 되었습니까?
Martin Hügi 2016 년

내 해결 방법을 계속 사용합니다. 두 개의 병렬 QGIS 프로젝트 – 하나는 직장과 하나는 집입니다.
Aaron

답변:


4

집과 직장에서 사용할 수 있도록 프로젝트 파일과 별도로 사본을 만드십시오 .

저장 한 데이터는 프로젝트 파일이 아닌 레이어 소스 파일에 기록됩니다.

숙제를 마치면 작업을 수행하고 불량 레이어를 다시 추가 할 수 있습니다. 레이어 스타일이 어려우면 별도로 저장하고 추가 할 수 있습니다.


다른 선택은 외부 소스 주위에 VRT 파일을 랩핑하는 것입니다.

다음과 gdal_translate같이 작성된 Geotif 래스터 파일의 샘플 예 :

<VRTDataset rasterXSize="1656" rasterYSize="846">
  <GeoTransform> 2.0005201224994706e+005, 6.2653333397239589e+002, 0.0000000000000000e+000, 6.9906275735481549e+006, 0.0000000000000000e+000,-6.2653333397239589e+002</GeoTransform>
  <Metadata>
    <MDI key="TIFFTAG_RESOLUTIONUNIT">2 (pixels/inch)</MDI>
    <MDI key="TIFFTAG_XRESOLUTION">120</MDI>
    <MDI key="TIFFTAG_YRESOLUTION">120</MDI>
  </Metadata>
  <VRTRasterBand dataType="Byte" band="1">
    <ColorInterp>Red</ColorInterp>
    <SimpleSource>
      <SourceFilename relativeToVRT="1">testtif.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SourceProperties RasterXSize="1656" RasterYSize="846" DataType="Byte" BlockXSize="1656" BlockYSize="1" />
      <SrcRect xOff="0" yOff="0" xSize="1656" ySize="846" />
      <DstRect xOff="0" yOff="0" xSize="1656" ySize="846" />
    </SimpleSource>
  </VRTRasterBand>
</VRTDataset>

그리고 shapefile에 대한 샘플 :

<OGRVRTDataSource>
    <OGRVRTLayer name="testshp">
        <SrcDataSource>F:\Karten\vrt\testshp.shp</SrcDataSource>
            <SrcLayer>testshp</SrcLayer>
            <GeometryType>wkbPolygon</GeometryType>
            <LayerSRS>EPSG:31466</LayerSRS>
    </OGRVRTLayer>
</OGRVRTDataSource>

소스 파일이 없으면 래스터가 검은 색 사각형으로 표시되고 (레이어를 보이지 않게 할 수 있음) 벡터 레이어는 오류 메시지없이 비 형상 테이블이됩니다. 소스 파일이 제거되지 않은 추가 비 VRT 레이어는 그대로 유지되며 편집 할 수 있습니다. 소스 파일을 다시 설치하면 모든 것이 정상으로 돌아가고 다른 레이어의 변경 사항까지도 복구됩니다.


1
이 특정한 경우 집과 사무실을위한 별도의 프로젝트를 만드는 것이 적절한 해결 방법입니다. 그러나 잘못된 계층 알림을 무시하려는 경우 맵 서비스가 일시적으로 다운 된 경우와 같은 다른 경우가 있습니다. 그래서 다시 묻습니다. 나쁜 레이어 처리 대화 상자를 무시하거나 건너 뛸 수있는 방법이 있습니까? 그래서 특정 레이어 참조를 잃지 않습니다.
Aaron

VRT 파일, 파일 내용 및 시작 방법에 대한 자세한 내용을 제공 할 수 있습니다. 내가 살펴본 바에 따르면 VRT는 래스터에만 적용됩니까? 벡터 파일 또는 연결이없는 경우 사용할 수없는 원격 PostGIS 레이어는 어떻습니까? 이러한 '핸들 불량 레이어'를 어떻게 무시할 수 있습니까?
Martin Hügi

@ MartinHügi 벡터 파일에 대한 VRT도 빌드 할 수 있지만 gdal.org/drv_vrt.htmlpaolocorti.net/2012/03/08/gdal_virtual_formats같은 수작업이 필요합니다 . 몇 가지 예를 들어 곧 답변을 드리겠습니다.
AndreJ

@AndreJ 감사합니다. 링크를 살펴보면 xml 파일이 데이터 소스에 대한 맵으로 작동한다는 제한적인 이해가 있습니다. QGIS는 데이터 소스를 사용할 수 없는데도 '생각합니다'? GDAL은 이해하거나 이해하는 것이 좋을 것 같습니다.
Martin Hügi

예, QGIS 오류 처리기를 속이는 것입니다.
AndreJ

3

가능한 해결 방법은 스크립트를 사용하여 qgs 프로젝트 파일을 수정하는 것입니다. 데이터 소스를 <datasource>.</datsource>바꾸면 나쁜 레이어 처리 팝업이 무시됩니다.

특정 레이어를로드하지 않으려는 경우 실행할 Python 스크립트.

import fileinput

replaceNextLine = False

for line in fileinput.input('path\to\your\project.qgs', inplace=True):
    if replaceNextLine:
        print '<datasource>.</datasource>'
        replaceNextLine = False
    else:
        print line,

    if '<id>layer_name_whos_datasource_needs_to_change' in line:
        replaceNextLine = True

적절한 데이터 소스 경로를 삽입하기 위해 실행되는 Python 스크립트.

import fileinput

replaceNextLine = False

for line in fileinput.input('path\to\your\project.qgs', inplace=True):
    if replaceNextLine:
        print '<datasource>.\path\to\your\datasource</datasource>'
        replaceNextLine = False
    else:
        print line,

    if '<id>layer_name_whos_datasource_needs_to_change' in line:
        replaceNextLine = True

이렇게하면 DoNotLoad.py최상위 스크립트를 사용하고 home.py홈 소스에 대한 work.py경로와 두 번째 스크립트를 패턴으로 사용하여 작업 소스에 대한 경로를 설정할 수 있습니다.

그런 다음 작업 할 단일 프로젝트가 있지만 현재 환경에 따라 경로를 쉽게 변경하거나 레이어가로드되지 않고 여전히 프로젝트에 있도록 경로를 변경할 수 있습니다 (모든 스타일이 저장됩니다 원하는 경우 스타일을 수정할 수도 있습니다.지도에는 아무 것도 표시되지 않습니다.


감사. 나는 개념을 얻었고, 이제 파이썬의 기본 사용법을 이해하기 시작하는 데 의미가 있었던 그 시간을 분명히 분명히 보내야합니다. 지금은 워드 패드로 project.qgs를 수동으로 편집하여 데이터 소스를 변경하고 다시 변경했기 때문에 개념을 얻었습니다. QGIS는 잘못된 레이어 처리를 무시하지 않았지만 <ID>가 자리 표시 자 역할을하면서 돌아가서 변경 사항을 되돌릴 수있었습니다. 네, 알겠습니다.
Martin Hügi


도움이된다면 @ MartinHügi, 나는이 유래 답변에서 내 스크립트의 주요 패턴을 얻었다는 stackoverflow.com/a/290494/4708150 이 더 철저 스크립트의 논리를 설명합니다. 주석을 확인하십시오. 인쇄 문의 끝에 쉼표가있는 이유를 설명하는 최고 등급의 주석이 있습니다.
TJ Rockefeller

1

ChangeDataSource 플러그인은 레이어를 일시적으로 핸들 불량 레이어 그룹으로 이동시켜 파일의 레이어를 유지합니다. https://geogear.wordpress.com/2016/01/29/changedatasourceplugin-plugin-release-2-0/ 원하는 작업을 수행해야합니다. 작년에 비슷한 문제가 있었고 레이어와 함께 작동하지만 나쁜 레이어를 처리하지 않은 ChangeDataSource 플러그인이 있음을 알았습니다. 나는 나쁜 레이어를 처리하는 것이 개발자의 (Enrico Ferreguti) 블로그에 대한 의견에 큰 특징이 될 것이라고 언급했다. 일주일 안에 그는 그것을 추가했습니다!


이 플러그인은 잘못된 레이어를 처리하기 위해 작동하지 않았습니다. 하나는 Win7을 실행하고 다른 하나는 Win10을 실행하는 두 가지 다른 랩톱에서 시도했습니다. 둘 다 QGIS 2.18.0이 설치되어 있습니다. "잘못된 레이어 처리"를 확인하고 설치 후 QGIS를 다시 시작했습니다. 불량 레이어를 처리하는 QGIS 기본값은 플러그인의 알림이 아니라 잘못된 데이터 소스를 처리하지 않고 계속 팝업되었습니다.
Aaron

나에게도 효과가 없습니다. 개발자에게 알려 드리겠습니다.
Baswein

changeDataSource 플러그인이 문제없이 실행되는지 확인했습니다. 예외를 발생 시키거나 잘못된 오류를보고하는 포착되지 않은 조건을 수정하고 새 버전을 저장소에 커밋합니다. [문제가 지속되면] ( github.com/enricofer/changeDataSource/issues )에 데이터 세트 또는 운영 단계를 지정하여이를 재현하십시오.
Enrico Ferreguti

플러그인을 띄우려면 Qgis를 실행 한 다음 프로젝트를 열어야합니다.
Baswein
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.