ESRIC – ESRI 압축 캐시

드라이버 단축 이름

ESRIC

기본 내장 드라이버

이 드라이버는 기본적으로 내장되어 있습니다.

이 드라이버는 ESRI 압축 캐시(Compact Cache) V2를 단일 래스터로 읽어옵니다.

드라이버 케이퍼빌리티

지리참조 작업 지원

이 드라이버는 지리참조 작업을 지원합니다.

VirtualIO 지원

이 드라이버는 virtual I/O operations (/vsimem/, etc.) 를 지원합니다.

ESRI 압축 캐시 V2

ESRI 압축 캐시 V2 용 판독기입니다. 캐시는 특정 폴더 구조에 위치한 파일 여러 개로 저장됩니다. 이 드라이버의 시점에서 보자면, 캐시의 루트 폴더에 있는 conf.xml이라는 파일이 래스터를 표현합니다. ESRI는 이 XML 파일의 정확한 내용을 완전하게 문서화하지 않았으며, 향후 변경될 수도 있습니다. 이 드라이버는 XML 필드 가운데 래스터를 읽어오는 데 필요한 필드 몇 개만 사용합니다.

사용례

/path/Layers 폴더가 정규 웹 메르카토르 타일 그리드인 V2 포맷의 ESRI 압축 캐시를 담고 있는 경우, 다음 명령어가 2수준 내용을 TIF 파일로 복사할 것입니다.

gdal_translate -outsize 1024 1024 path/Layers/conf.xml output.tif

기능과 제한

  • V2 압축 캐시만 지원합니다. 이 포맷은 conf.xml 파일의 CacheInfo.TileCacheInfo.StorageFormat 요소 안에 있는 esriMapCacheStorageModeCompactV2 값으로 식별됩니다. 다른 레거시 ESRI 캐시 포맷들은 지원하지 않습니다.

  • 256x256 픽셀 크기의 타일을 가진 캐시만 지원합니다. 이 정보는 CacheInfo.TileCacheInfo.TileRowsCacheInfo.TileCacheInfo.TileCols 요소의 값으로 저장됩니다.

  • 캐시에 있는 타일은 JPEG과 PNG를 포함하는, 서로 다른 포맷일 수 있습니다. 가장 자주 쓰이는 포맷은 8비트 색상 또는 회색조 JPEG과 불투명도를 지원 또는 비지원하는 색상 PNG입니다. 이런 캐시는 CacheInfo.TileImageInfo.CacheTileFormat 요소 안에 JPEG, PNG 또는 MIXED 값을 가지게 될 것입니다. PNG8 같은 다른 타일 포맷들은 지원하지 않습니다. 이 드라이버는 소스가 회색조이더라도 래스터를 RGB 또는 RGBA로 승격시킬 것입니다.

  • 128x128개의 타일들을 번들 파일로 가지고 있는 캐시만 지원합니다. CacheInfo.CacheStorageInfo.PacketSize 요소가 번들에 있는 타일들의 선형 개수(linear number) 값을 담고 있습니다.

  • CacheInfo.TileCacheInfo.SpatialReference.WKT 필드로부터 공간 좌표계를 가져옵니다. 이 필드가 없다면, 기본값인 EPSG:4326로 가정합니다.

  • 표준 conf.xml 파일에 정의된 대로, 캐시 타일 그리드는 X 및 Y로 구성된 CacheInfo.TileCacheInfo.TileOrigin 요소 안에 저장된 원점 위치를 가지고 있습니다. 캐시 크기는 명확하게 정의되지 않았습니다. ESRIC 포맷 드라이버는 참조 좌표계의 (0,0) 좌표를 둘러싼 대칭 영역을 가정할 것입니다. 표준 웹 메르카토르 및 GCS 참조 좌표계의 경우 이 습성이 잘 작동합니다. 하지만 이 가정이 작동하지 않는다면, conf.xml 파일에 TileOrigin 과 비슷한 X 및 Y 구성요소에 적절한 값을 가지고 있는 비표준 CacheInfo.TileCacheInfo.TileEnd 요소를 추가할 수 있습니다. 그리드 원점 및 크기는 래스터 데이터 범위와 다르다는 사실을 기억하십시오. 예를 들면 데이터가 지구의 아주 작은 한 부분만 커버하더라도, 캐시를 지구 전체를 대상으로 정의된 표준 웹 메르카토르 타일 그리드로 생성하는 경우는 흔합니다.

  • 번들형 캐시는 일련의 CacheInfo.TileCacheInfo.LODInfos.LODInfo 노드들로 인코딩된 여러 개의 해상도 수준을 가지고 있습니다. LevelIDLODInfo XML 노드를 식별하는데 이때 LevelID 는 연속되어야 하며, Resolution 에 가장 큰 값을 가진 수준에서 0으로 시작해서 가장 작은 Resolution 값을 가진 LODInfo 노드를 향해 증가해야 합니다. 이 수준 규범은 예를 들어 WMTS가 사용하는 다른 수준, 행, 열 타일 어드레스 지정 스키마와 비슷합니다. 연속되는 두 수준의 해상도가 2배수로 변화하는 것이 흔한 일이기는 하지만, 이 포맷의 경우 필수는 아닙니다. 각 캐시 수준을 적당한 해상도의 오버뷰로 읽어올 것입니다. 해상도값은 픽셀 당 공간 좌표계 거리 단위입니다.

  • GDAL WMS 드라이버가 지원하는 많은 웹 맵 타일 프로토콜들처럼, 많은 캐시들도 서로 다른 소스로부터 수준 별로(level-by-level) 빌드됩니다. 즉 특정 수준의 내용이 인접 수준과는 다른 소스의 내용일 수도 있고, 또는 특정 수준의 내용이 완전히 누락되었을 수도 있습니다. 이 드라이버는 캐시에 지정한 해상도 수준의 타일이 없는 영역을 읽는 경우, 동일한 위치의 다른 수준에는 데이터가 존재하더라도, 불투명한 검은색을 반환할 것입니다.

  • 캐시가 GDAL이 지원하는 최대 크기(어느 차원이든 INT32_MAX)를 초과하는 경우도 있습니다. 이 드라이버는 이런 캐시를 열 때 오류를 발생시킬 것입니다. 래스터 크기가 INT32_MAX밑으로 떨어질 때까지 conf.xml 파일에서 가장 높은 LevelID 를 가진 LODInfo 노드를 제거하면 해결되지만, 최고 해상도 수준을 읽어오지 못 하게 됩니다.

참고

  • gdal/frmts/esric/esric_dataset.cpp 로 구현되었습니다.