QGIS의 항공 사진에 어떤 형식과 설정을 사용합니까?


10

ArcGIS로 안테나를 처리하는 방법에 대한 자세한 질문은 다음과 같습니다.

보기 전용 항공 사진을 관리하는 가장 효과적인 형식

안테나를 저장 / 리샘플링 / 재 투영하기위한 2 가지 주요 옵션이있는 것 같습니다 :

  1. JP2000 / JP2 / JPEG 2000 (최근 GDAL 처리 용 코드 5 개)
  2. ECW (ERDAS 압축 웨이블릿 (.ecw))
  3. 내가 놓친 다른 것?

gdal 사용 가능한 형식

QGIS 버전에 따라 내가 이해 한 것은 보통 추가 라이브러리를 설치해야합니다. ECW에는 라이센스를 구입해야하는 압축 요구에 대한 제한이 있습니까?

큰 파일 (최대 크기 제한)에 사용할 수없는 jpeg를 테스트했으며 더 큰 크기로 느릴 수도 있습니다.

답은 다음을 포함해야합니다.

  1. QGIS 2.0.1 데스크탑 및 / 또는 OSGEO에서 기본적으로 사용할 수있는 것은 무엇입니까?
  2. 큰 파일에서 작동하는 방법-확대 / 축소 (피라미드)?
    • 입니다 생성 옵션 - 결의안 JP2 피라미드를 들어?

1
다른 접근 방식 : GeoServer 또는 MapServer와 같은 백엔드 공급자를 사용하여 대규모 직교 사진이 종종 OGC 서비스 WMS / WMTS로 제공됩니다.
Jakob

2
GeoTIFF와 NITF는 위성 이미지에 일반적입니다. GDAL에서도 지원되지만 QGIS가 NITF를 지원하는지 확실하지 않습니다.
BradHards

@ 야콥-요점을 참조하십시오. 그러나 스틸 이미지는 어떻게 든 서버에 어떤 형식으로 저장해야합니다.
Miro

@BradHards-Tiff는 실제로 첫 번째 선택이지만 효과적으로 압축을 저장하는 유일한 방법은 JPEG 압축으로 JPEG에 직접 저장하는 것과 동일한 최대 크기 제한을 제공합니다. 위성 이미지의 경우 무손실 압축이 주로 필요합니다. 그러나이 질문은 대량의 데이터 저장 / 전송을 절약하기 위해 약간의 손실을 입을 수있는 항공 사진에 더 중점을 둡니다.
Miro

답변:


8

허크 핀 답변, 다른 의견 및 내 결과와 함께 :

우승 형식은 JPEG2000입니다 (왜, 어떤 버전이 아래에 언급되어 있습니까? )

왜 다른 사람들은 그렇지 않습니까?

  1. JPEG
    • 데이터 크기 및 크기 모두의 크기 제한 (4GB 및 65500x65500)
    • 없음 (내부) 피라미드 가능성 = 팬 / 줌 확대 / 축소시 이미지를 표시하는 데 시간이 더 오래 걸림
  2. 지오 티프
    • 그리드에는 좋지만 래스터 이미지에는 JPEG = JPEG와 동일한 문제를 제외하고 효과적인 손실 압축이 없습니다.
  3. ECW와 Mr. SID
    • ECW 및 Mr. SID에 저장하려면 특수 라이센스가 필요합니다. 기본적으로 GDAL (QGIS)로는이를 수행 할 수 없습니다. 특수 라이센스가있는 경우 이미지 처리가 일일 빵이므로 일반적으로이 답변을 읽을 필요는 없습니다 (우리 회사는 일반적으로 고객으로부터 ECW 형식의 이미지를 얻습니다)
  4. 데이터베이스 / 맵 서버
    • 이미 일부 데이터베이스 / 맵 서버가 실행 중이거나 최소한 쉽고 빠르게 수행하는 방법을 알고 있다면 확실히 좋은 옵션입니다. 이 경우 데이터는 GeoTIFF 또는 기타 무엇이든 저장할 수 있으며 일반적으로 QGIS와 같은 데스크탑 소프트웨어 나 웹 브라우저에 JPEG로 전송됩니다. 그러나 서버가없고 QGIS에서 이미지를 쉽게로드 /보기 쉽게하고 싶은 경우에는 너무 복잡합니다.

왜 JPEG2000인가 :

내 질문에 게시 한 것처럼-GDAL은 JPEG2000 형식으로 저장할 수있는 더 많은 옵션을 제공하지만 GDAL 웹 사이트에 나와 있지 않은 기본 GDAL 버전으로 제공되어야합니다. 테스트하는 동안 아마도 6 가지 버전의 QGIS를 시도했지만 모두 하나 이상의 JPEG2000 옵션 (Windows 7)이있었습니다. OSGeo4W (32 또는 64 비트) 버전의 QGIS를 설치하고 JPEG2000 코드가 사용 가능한 경우 OSGeo4W 셸에서 확인하는 것이 좋습니다. (Windows의 경우 시작 메뉴 / 프로그램에서 OSGeo4W 셸을 실행하고 거기에 명령 gdal_translate --formats또는을 작성하십시오 gdalwarp --formats).

QGIS의 모든 버전에서 JP2OpenJPEG 코드 (OpenJPEG 라이브러리 (v2))를 사용할 수있었습니다. 그리고 다른 것들을 포함하여 더 긴 테스트를 한 후에 가장 유용한 것을 발견했습니다.

JP2OpenJPEG의 장점

  • 열기 / 저장에 무료 사용
  • "작은"크기 제한 없음 (확실히 65500x65500 이상으로 갈 수 있음)
  • 매우 효과적인 압축 (% 설정 가능)
  • 빠른 시청을위한 피라미드 (미리보기) 포함 (설정 가능)

(세트 압축 (에 옵션 딜 품질 ), 피라미드 ( -CO 결의안 ) 좀 더 - http://www.gdal.org/frmt_jp2openjpeg.html )

gdal_translate를 사용하여 QGIS에서 변환하는 간단한 예 (QGIS에서 Raster / Converion / Translate 로 이동하여 필요한 것을 설정하고 편집 버튼을 클릭하여 필요에 맞게 명령을 조정하십시오) :

gdal_translate -of JP2OpenJPEG -co QUALITY=10 srcGridOrImage image.jp2  

6

주제 2 : 다음은 JP2에 대한 더 긴 조사입니다. 더 효율적인 압축을 사용하는 데 관심이 있었기 때문입니다. 그리고 결과 IMO는 다음과 같습니다. GDAL / QGIS (QgsRastrerDataProvider) 내에서 올바른 jpeg2000 압축과 타일 세트 및 블록 구조와 같은 빠른 캐싱 옵션을 간단한 방법으로 결합 할 수 없습니다.

일반적으로 GeoTiff는 Raster-DB에 적합합니다 .GDAL은 오랫동안 지원해 왔으며 삶을 더 쉽게 만들 수있는 많은 기능을 가지고 있습니다.

gdal 페이지에서 데이터 드라이버 JP2의 기능을 찾을 수 있습니다. : 당신의 요구 (종속 libjasper)에 JPEG2000을 jp2k이 페이지에 나열되어 http://www.gdal.org/frmt_jpeg2000.html . http://www.gdal.org/formats_list.html에 나열된 "드라이버"는 읽기, 쓰기를 지원하며 2GiB로 제한되며 GDAL 버전 1.9부터 빌드되며 일부 블록 옵션이 있습니다 ...

JP2로 가능한 것을 확실하게하기 위해 테스트 세트를 만들었습니다.

나는 큰 arial 사진을 사용하여 발트해에서 ca. 12000 x 10000 픽셀 (RGB) 및 2cm의지면 해상도 (충분히 크기를 바랍니다). 현재 QGIS-Project에서 약 130GiB의 용량을 가진 270 개의 파일이 있습니다. 또한 8GB 및 4xAMD Opteron 코어가 장착 된 64 비트 Debian 7.0 Linux OS에서 유창하고 원활하게 작동합니다. ...하지만 GeoTiff와 함께.

GIS 도구에서 빠르게 액세스하려면 다음 단계와 옵션을 사용하여 이미지를 참조하고 GDAL로 다시 샘플링합니다 (bash 스크립트 스타일의 경우 .. 죄송합니다).

gps-log의 데이터 세트를 사용하여 이미지 참조 :

    gdal_translate \
    -of GTiff \
    -gcp   0     0 $ulx   $uly \
    -gcp   0   $hg $llx   $lly \
    -gcp $cwd $chg $cpx   $cpy \
    -gcp $wd     0 $urx   $ury \
    -gcp $wd   $hg $lrx   $lry \
    -a_srs epsg:32632 \ 
    $raw_tif $ref_tif

변수 $ [u | o] [l | r] [x | y]는 사진 문법 미적분에 의해 주어진 이미지의 모서리이고 변수 $ wd는 이미지 너비, $ hg 이미지 높이 및 $ cwd $ chg 중심점.

타일 ​​세트 옵션을 사용하여 이미지를 실제 세계로 변형합니다.

    gdalwarp \
    --config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS=4 \
    -r bilinear -dstnodata '0 0 0' \
    -of GTiff \
    -t_srs epsg:32632 \
    -tr 0.02 0.02 \
    -co COMPRESS=LZW \
    -co TILED=YES \
    -co BLOCKXSIZE=512 \
    -co BLOCKYSIZE=512 \
    $ref_tif $geo_tif

매개 변수 : --config GDAL_CACHEMAX 2000 -wm 2000 -wo NUM_THREADS = 4는 물건을 계산하기 위해 많은 캐시와 4 개의 프로세서 스레드를 사용하도록 아이언에 지시합니다. 리샘플링은 이중 선형 방식으로 수행되며 조정 시스템은 UTM-32입니다.하지만 512x512 블록 타일을 사용하여 탐색 작업 (줌, 팬, 포인트)을 빠르고 유연하게 만들고 싶습니다. 이는 -co TILED = YES -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512 옵션으로 수행됩니다.

줌 레벨 2,4,8 및 16에서 피라미드를 GeoTiff에 씁니다.

    gdaladdo -r gauss $geo_tif 2 4 8 16

gdalinfo로 표시되는 결과 GeoTiff는 다음과 같습니다.

 Driver: GTiff/GeoTIFF
 Files: CF006135.TIF
 Size is 12419, 9900
 Coordinate System is:
 PROJCS["WGS 84 / UTM zone 32N",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
             SPHEROID["WGS 84",6378137,298.257223563,
                 AUTHORITY["EPSG","7030"]],
             AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",9],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AUTHORITY["EPSG","32632"]]
Origin = (656099.007276594405994,5998980.139660121873021)
Pixel Size = (0.020000000000000,-0.020000000000000)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
  Upper Left  (  656099.007, 5998980.140) ( 11d23'17.54"E, 54d 6'54.87"N)
  Lower Left  (  656099.007, 5998782.140) ( 11d23'17.17"E, 54d 6'48.47"N)
  Upper Right (  656347.387, 5998980.140) ( 11d23'31.21"E, 54d 6'54.60"N)
  Lower Right (  656347.387, 5998782.140) ( 11d23'30.84"E, 54d 6'48.20"N)
  Center      (  656223.197, 5998881.140) ( 11d23'24.19"E, 54d 6'51.54"N)
Band 1 Block=512x512 Type=Byte, ColorInterp=Red
 NoData Value=0
 Overviews: 6210x4950, 3105x2475, 1553x1238, 777x619
Band 2 Block=512x512 Type=Byte, ColorInterp=Green
 NoData Value=0
 Overviews: 6210x4950, 3105x2475, 1553x1238, 777x619
Band 3 Block=512x512 Type=Byte, ColorInterp=Blue
 NoData Value=0
 Overviews: 6210x4950, 3105x2475, 1553x1238, 777x619

GeoTiff에서는 모든 것이 정상입니다! 직접 대화 단계를 사용하여 JP2를 작성하려고하면 :

 gdalwarp -of jpeg2000 -co TILED=YES -co BLOCKSIZEX=512 -co BLOCKSIZEY=512 CF006135.TIF CF006135.jp2 
 Output driver `jpeg2000' not recognised or does not support
 direct output file creation.  The following format drivers are configured
 and support direct output:
   VRT: Virtual Raster
   GTiff: GeoTIFF
   NITF: National Imagery Transmission Format
   HFA: Erdas Imagine Images (.img)
   ELAS: ELAS
   MEM: In Memory Raster
   BMP: MS Windows Device Independent Bitmap
   PCIDSK: PCIDSK Database File
   ILWIS: ILWIS Raster Map
   SGI: SGI Image File Format 1.0
   Leveller: Leveller heightfield
   Terragen: Terragen heightfield
   netCDF: Network Common Data Format
   HDF4Image: HDF4 Dataset
   ISIS2: USGS Astrogeology ISIS cube (Version 2)
   ERS: ERMapper .ers Labelled
   RMF: Raster Matrix Format
   RST: Idrisi Raster A.1
   INGR: Intergraph Raster
   GSBG: Golden Software Binary Grid (.grd)
   PNM: Portable Pixmap Format (netpbm)
   ENVI: ENVI .hdr Labelled
   EHdr: ESRI .hdr Labelled
   PAux: PCI .aux Labelled
   MFF: Vexcel MFF Raster
   MFF2: Vexcel MFF2 (HKV) Raster
   BT: VTP .bt (Binary Terrain) 1.3 Format
   LAN: Erdas .LAN/.GIS
   IDA: Image Data and Analysis
   GTX: NOAA Vertical Datum .GTX
   NTv2: NTv2 Datum Grid Shift
   ADRG: ARC Digitized Raster Graphics
   SAGA: SAGA GIS Binary Grid (.sdat)

실패합니다. 오류 메시지에 실마리 나 다른 형식을 사용할 수 있습니다.

gdal_translate 도구를 사용하면 적절한 JP2000을 얻을 수 있습니다.

 gdal_translate -of jpeg2000\
    -co TILED=YES -co BLOCKSIZEX=512 -co BLOCKSIZEY=512\
    CF006135.TIF CF006135.jp2

 ls -l 
 -rw-r--r-- 1 huckfinn huckfinn  63538529 Jan 28 23:55 CF006135.jp2
 -rw-r--r-- 1 huckfinn huckfinn       388 Jan 28 23:04 CF006135.jp2.aux.xml
 -rw-r--r-- 1 huckfinn huckfinn 519882980 Sep 30 21:01 CF006135.TIF

압축률은 1 : 8이지만 gdalinfo로 표시된대로 블록 및 타일 세트 속성을 느슨하게합니다.

 gdalinfo CF006135.jp2 
 Driver: JPEG2000/JPEG-2000 part 1 (ISO/IEC 15444-1)
 Files: CF006135.jp2
        CF006135.jp2.aux.xml
 Size is 12419, 9900
 Coordinate System is:
 PROJCS["WGS 84 / UTM zone 32N",
     GEOGCS["WGS 84",
         DATUM["WGS_1984",
             SPHEROID["WGS 84",6378137,298.257223563,
                 AUTHORITY["EPSG","7030"]],
             AUTHORITY["EPSG","6326"]],
         PRIMEM["Greenwich",0],
         UNIT["degree",0.0174532925199433],
         AUTHORITY["EPSG","4326"]],
     PROJECTION["Transverse_Mercator"],
     PARAMETER["latitude_of_origin",0],
     PARAMETER["central_meridian",9],
     PARAMETER["scale_factor",0.9996],
     PARAMETER["false_easting",500000],
     PARAMETER["false_northing",0],
     UNIT["metre",1,
         AUTHORITY["EPSG","9001"]],
     AUTHORITY["EPSG","32632"]]
 Origin = (656099.007276594405994,5998980.139660121873021)
 Pixel Size = (0.020000000000000,-0.020000000000000)
 Metadata:
   AREA_OR_POINT=Area
 Corner Coordinates:
 Upper Left  (  656099.007, 5998980.140) ( 11d23'17.54"E, 54d 6'54.87"N)
 Lower Left  (  656099.007, 5998782.140) ( 11d23'17.17"E, 54d 6'48.47"N)
 Upper Right (  656347.387, 5998980.140) ( 11d23'31.21"E, 54d 6'54.60"N)
 Lower Right (  656347.387, 5998782.140) ( 11d23'30.84"E, 54d 6'48.20"N)
 Center      (  656223.197, 5998881.140) ( 11d23'24.19"E, 54d 6'51.54"N)

마지막 테스트는 GeoTiff를 내부 JPEG 압축과 함께 사용하는 것이었지만 다음과 같은 결과를 얻었습니다.

 gdalwarp -of GTiff \
  -co COMPRESS=JPEG \
  -co TILED=YES -co BLOCKSIZEX=512 -co BLOCKSIZEY=512\
  CF006135.TIF CF006135_IJPG.TIF
  Creating output file that is 12419P x 9900L.
  Warning 6: Driver GTiff does not support BLOCKSIZEX creation option
  Warning 6: Driver GTiff does not support BLOCKSIZEY creation option
  Processing input file CF006135.TIF.
  ....

여기서 어디로 가야합니까? GDAL의 JP2000 Jasper driver lib 페이지에는 블록 옵션을 사용하여 jp2000 이미지를 작성하기위한 일부 매개 변수가 나열되어 있습니다.

 Encoding parameters, directly delivered to the JasPer library described in the JasPer documentation. Quoted from the docs:

``The following options are supported by the encoder:
imgareatlx=x    Set the x-coordinate of the top-left corner of the image area to x.
imgareatly=y    Set the y-coordinate of the top-left corner of the image area to y.
tilegrdtlx=x    Set the x-coordinate of the top-left corner of the tiling grid to x.
tilegrdtly=y    Set the y-coordinate of the top-left corner of the tiling grid to y.
tilewidth=w     Set the nominal tile width to w.
tileheight=h    Set the nominal tile height to h.
prcwidth=w  Set the precinct width to w. The argument w must be an integer  power of two. The default value is 32768.
prcheight=h     Set the precinct height to h. The argument h must be an integer power of two. The default value is 32768.
cblkwidth=w     Set the nominal code block width to w. The argument w must be an integer power of two. The default value is 64.
cblkheight=h    Set the nominal code block height to h. The argument h must be an integer power of two. The default value is 64.

그러나 질문은 어떤 것이 qgis를 사용할 것인가입니다.


1
고마워요, 정말 고마워요 나는 또한 내 자신의 테스트를했다. 보시다시피 JPEG2000이 가장 적합한 형식입니다. TIFF가 becuase를 사용하지 않기 전에 언급했듯이 JPEG 압축 (JP2000 아님) 만 사용할 수 있으므로 크기 제한이 있습니다. QGIS / GDAL 버전으로 제공되며 크기 제한이없는 드라이버 (코드) JP2OpenJPEG를 사용했습니다. 가장 중요한 것은 해상도와 블록 * 크기 (둘 다 합리적인 기본값으로 설정 됨)와 같은 좋은 작성 옵션을 가지고 있다는 것입니다.
Miro

고마워, 좋은 소식이야 불행히도 데비안 wheezy는 현재이 드라이버를 지원하지 않습니다. 그러나 많은 jp2000'end 중 어느 것이 rigth인지 아는 것이 좋습니다. -
huckfinn

5

주제 1. QGIS는 GDAL을 QgsRasterdataProvider로 사용합니다. 따라서 래스터 형식을 읽고 쓰는 기능은 GDAL lib에 의해 구현됩니다. 지원되는 형식은 다음 링크 http://www.gdal.org/formats_list.html 에서 찾을 수 있습니다 . gdal-config --formats 명령은 lib 또는 edition에 어떤 형식의 내용이 포함되어 있는지에 대한 개요를 제공합니다. 에디션에서 제공하는 것은 패키지, OS 등에 따라 다릅니다. 자세한 정보는 http://trac.osgeo.org/gdal/wiki/BuildHints를 참조하십시오 .


gdal-config --formats에 감사드립니다. 퍼즐의 첫 부분이 완성되었습니다.
Miro

1
gdal-config --formats는 Unix 시스템 전용입니다. Windows에서는 gdal_translate --formats 또는 gdalwarp --formats를 수행하여 사용 가능한 항목을 확인할 수 있습니다.
Miro

흠, 그것이 진정한 gdal-config는 유닉스 컴파일러에게 라이브러리의 밀도에 대한 조언을 제공합니다. 좋아, 그것은 Windows에서 의미가 없습니다 (cygwin 또는 mingw exepted). 그러나 gdalinfo --format $ DRIVERNAME은 정보를 제공합니다.
huckfinn 2012 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.