IHO S-57 (ENC)

드라이버 단축 이름

S57

기본 내장 드라이버

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

S57 드라이버는 IHO(International Hydrographic Organisation) S-57 ENC(Electronic Navigation Charts) 데이터셋에 읽기 접근을 지원합니다.

S57 드라이버 모듈은 S-57 파일에 있는 모든 S-57 피처를 위한 객체 및 관련 업데이트를 생성합니다. S-57 (ENC) 파일의 확장자는 보통 “.000”입니다.

이 드라이버는 S-57 피처 객체(feature object)를 객체(feature)로 변환합니다. S-57 도형 객체(geometry object)를 자동으로 수집해서 객체(feature) 상의 도형으로 만듭니다.

S-57 판독기는 피처를 객체 클래스(object class) 특화 방식으로 변환하기 위해 런타임에서 s57objectclasses.csv 및 s57attributes.csv 지원 파일 2개를 가지고 있어야 합니다. 이 파일들은 S57_CSV 환경 변수가 가리키는 디렉터리 또는 현재 작업 중인 디렉터리에 있어야 합니다.

S-57 업데이트 파일은 배포된 S-57 기반 데이터 파일을 업데이트 하는 방법에 대한 정보를 담고 있습니다. 기반 파일의 확장자가 보통 “.000”인 반면 업데이트 파일의 확장자는 “.001”, “.002”, … 입니다. S-57 판독기는 일반적으로 모든 업데이트 파일을 읽어와서 기저 파일의 인메모리 버전에 실시간(on the fly)으로 적용할 것입니다. 즉 응용 프로그램에 입력되는 객체 데이터는 모든 업데이트를 포함합니다.

드라이버 케이퍼빌리티

지리참조 작업 지원

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

VirtualIO 지원

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

피처 변환

일반적으로 S-57로부터 읽어온 모든 피처를 피처가 속해 있는 객체 클래스(OBJL)의 이름을 기반으로 하는 레이어에 할당합니다. 예를 들어, OBJL 값이 2인 경우 해당 피처의 객체 클래스는 “Airport / airfield”로 단축명이 “AIRARE”인데, 이 단축명을 레이어 이름으로 사용합니다. S-57 전송은 일반적으로 100개 이상의 레이어를 전송합니다.

각 피처 유형은 S-57 표준이 정의한 대로 사전 정의된 속성 집합을 가집니다. 예를 들어 공항(AIRARE) 객체 클래스는 AIRARE, CATAIR, CONDTN, CONVIS, NOBJNM, OBJNAM, STATUS, INFORM, NINFOM, NTXTDS, PICREP, SCAMAX, SCAMIN, TXTDSC, RECDAT, RECIND, SORDAT 및 SORIND 속성을 가질 수 있습니다. S-57 표준 문서 자체 또는 카탈로그 파일(s57attributes.csv 및 s57objectclasses.csv) 같은 S-57 객체/속성 카탈로그를 이용해서 이 단축명들을 더 길고 알기 쉬운 이름과 관련지을 수 있습니다. 또 카탈로그를 사용해서 사용할 수 있는 모든 객체 클래스와 그 속성을 확립할 수도 있습니다.

다음은 객체 클래스에 상관없이 모든 피처에 나타나는 일반 속성들을 포함하는 일부 공통 속성들입니다. 해당 속성이 모든 피처에 나타나는지 일부 피처에만 나타나는지도 표시했습니다.

S-57 Attribute Definitions

속성명

설명

정의된 피처

GRUP

그룹 번호

모든 피처

OBJL

객체 수준 코드. 이 숫자는 피처의 객체 클래스를 의미합니다.

모든 피처

RVER

레코드 버전

AGEN

숫자형 기관 코드. 예: 캐나다 수로청(Canadian Hydrographic Service) = 50

모든 피처

FIDN

피처 식별 번호

모든 피처

FIDS

피처 식별 하위 구분(subdivision)

모든 피처

INFORM

정보 제공 텍스트

일부 피처

NINFOM

국가별 공용어(national language)로 된 정보 제공 텍스트

일부 피처

OBJNAM

객체(object) 이름

일부 피처

NOBJNM

국가별 공용어(national language)로 된 객체(object) 이름

일부 피처

SCAMAX

표시 용 최대 축척

일부 피처

SCAMIN

표시 용 최소 축척

일부 피처

SORDAT

소스 취득일

일부 피처

LNAM_REFS 제어 옵션을 ON으로 설정하는 경우 다음 속성들도 나타납니다:

S-57 Attribute Definitions with LNAM_REFS=ON

속성명

설명

정의된 피처

LNAM

긴 이름. S-57 파일 안에서 해당 피처를 유일하게 식별하는 데 쓰이는 AGEN, FIDN 및 FIDS의 인코딩입니다.

모든 피처

LNAM_REFS

관련된 피처들의 긴 이름 목록

모든 피처

FFPT_RIND

각 LNAM_REFS 관계에 대한 관계성 표시자

모든 피처

DSID 레이어

단일 피처 하나를 가지고 있는 DSID 레이어에 DSID(Data Set Identification), DSSI(Data Set Structure Information) 및 DSPM(Data Set Parameter) 같은 데이터셋 범위 필드들을 노출시킵니다. IHO S-57 3.1판 표준 (본편) 의 7.3.1 “데이터셋 일반 정보 레코드 구조”를 참조하십시오.

수심 측정

S-57 포맷에서는 사용할 수 있는 수많은 데이터 포인트를 효율적으로 표현하기 위해 수심 측정(depth sounding)을 약간 특수하게 처리합니다. S-57에서는 수심 측정 피처 하나가 많은 수심 측정 포인트를 가질 수 있습니다. S-57 판독기는 이 포인트들을 각각 S-57 유형의 ‘s57_point3d’을 가진 자체 ‘SOUNDG’ 유형의 피처로 분할합니다. 단일 피처 레코드 하나로부터 나온 수심 측정들은 모두 동일한 AGEN, FIDN, FIDS 및 LNAM 값을 가질 것입니다.

S-57 제어 옵션

S-57 판독기의 습성을 변경하는 데 사용할 수 있는 제어 옵션이 여러 개 있습니다. 사용자는 OGR_S57_OPTIONS 환경 변수에 이 옵션들을 추가해서 설정할 수 있습니다.

드라이버에 이 옵션들을 열기 옵션으로 독립적으로 지정할 수도 있습니다.

  • UPDATES=APPLY/IGNORE: 업데이트 파일을 기반 데이터로 실시간 통합시켜야 할지를 지정합니다. 기본값은 APPLY입니다.

  • SPLIT_MULTIPOINT=ON/OFF: 수심 측정 멀티포인트를 수심 측정 단일 포인트 피처 여러 개로 분할시켜야 할지를 선택합니다. 많은 포맷들이 멀티포인트 도형을 제대로 처리하지 못 하기 때문에, 포인트 여러 개를 가진 단일 수심 측정 피처를 단일 포인트 피처 여러 개로 분할하는 것이 편리할 수 있습니다. 기본값은 OFF입니다.

  • ADD_SOUNDG_DEPTH=ON/OFF: SOUNDG 피처에 DEPTH 속성을 추가하고 수심 측정의 깊이를 할당해야 할지를 선택합니다. SPLIT_MULTIPOINT 옵션도 ON으로 설정한 경우에만 이 옵션을 ON으로 설정할 수 있습니다. 기본값은 OFF입니다.

  • RETURN_PRIMITIVES=ON/OFF: 모든 저수준 도형 프리미티브(geometry primitive)를 특수 IsolatedNode, ConnectedNode, Edge 및 Face 레이어로 반환해야 할지를 선택합니다. 기본값은 OFF입니다.

  • PRESERVE_EMPTY_NUMBERS=ON/OFF: 이 옵션을 ON으로 설정하면, 비어 있는 문자열을 값으로 할당한 숫자형 속성을 특수 숫자값으로 보전할 것입니다. 일반적으로 필요한 옵션은 아니지만, S-57를 S-57로 무손실 변환하는 경우 유용할 수도 있습니다. 기본값은 OFF입니다.

  • LNAM_REFS=ON/OFF: 피처에 LNAM 및 LNAM_REFS 필드를 추가해서 S-57 파일의 FFPT 그룹에 있는 “feature to feature” 관계를 수집해야 할지 여부를 선택합니다. 기본값은 OFF입니다.

  • RETURN_LINKAGES=ON/OFF: 피처를 자신의 기저 도형 프리미티브와 관련짓는 추가 속성을 추가해야 할지를 선택합니다. 이 추가 속성은 FSPT 그룹의 값으로, 주로 S-57를 S-57로 변환하는 경우 필요합니다. 기본값은 OFF입니다.

  • RECODE_BY_DSSI=ON/OFF: 속성값을 S-57 DSSI 레코드에 지정된 문자 인코딩으로부터 UTF-8로 기록해야 할지를 선택합니다. GDAL 3.4.1버전부터 기본값은 ON입니다.

  • LIST_AS_STRING=ON/OFF: (GDAL 3.2 이상 버전) S-57 딕셔너리에 목록으로 태그된 속성을 StringList 유형이 아니라 String 유형 필드로 리포트해야 할지를 선택합니다. 기본값은 OFF입니다. GDAL 3.2 이전 버전들에서는, 기본 습성이 이 옵션을 ON으로 설정하는 것과 동일했습니다.

예시:

set OGR_S57_OPTIONS = "RETURN_PRIMITIVES=ON,RETURN_LINKAGES=ON,LNAM_REFS=ON"

S-57 내보내기

예비 S-57 내보내기 기능은 특수한 사용례만을 위한 것으로, 현재 제대로 문서화되지 않았습니다. OGR를 통해 S-57를 S-57로 변환하는 작업을 지원하기 위한 최소 요구 사항은 다음 옵션들을 설정하는 것입니다.

set OGR_S57_OPTIONS = "RETURN_PRIMITIVES=ON,RETURN_LINKAGES=ON,LNAM_REFS=ON"

S-57 데이터셋 설명 레코드 (DSID 및 DSPM) 용 기본 정보를 제공하기 위해 다음과 같은 데이터셋 생성 옵션들을 지원합니다(더 자세한 설명은 S-57 표준을 참고하십시오):

  • S57_EXPP: 정보 교환 목적. 기본값은 1입니다.

  • S57_INTU: 의도 사용례. 기본값은 4입니다.

  • S57_EDTN: 판(edition) 번호. 기본값은 2입니다.

  • S57_UPDN: 업데이트 번호. 기본값은 0입니다.

  • S57_UADT: 응용 프로그램 업데이트 날짜. 기본값은 20030801입니다.

  • S57_ISDT: 발행일. 기본값은 20030801입니다.

  • S57_STED: S-57의 판 번호. 기본값은 03.1입니다.

  • S57_AGEN: 생산 기관. 기본값은 540입니다.

  • S57_COMT: 주석.

  • S57_AALL: ATTF 필드에 사용되는 어휘 수준(lexical level)입니다. 기본값은 0입니다. (GDAL 2.4 이상 버전)

  • S57_NALL: Lexical level used for the NATF fields. 기본값은 0입니다. (GDAL 2.4 이상 버전)

  • S57_NOMR: 메타 레코드(“M_”으로 시작하는 머리글자를 가진 객체)의 개수. 기본값은 0입니다.

  • S57_NOGR: 지리 레코드의 개수. 기본값은 0입니다.

  • S57_NOLR: 선택 집합(collection) 레코드의 개수. 기본값은 0입니다.

  • S57_NOIN: 고립된 노드 레코드의 개수. 기본값은 0입니다.

  • S57_NOCN: 연결된 노드 레코드의 개수. 기본값은 0입니다.

  • S57_NOED: 경계 레코드의 개수. 기본값은 0입니다.

  • S57_HDAT: 수평 측지 원점(datum). 기본값은 2입니다.

  • S57_VDAT: 수직 원점. 기본값은 17입니다.

  • S57_SDAT: 수심 측정 원점. 기본값은 23입니다.

  • S57_CSCL: 데이터의 컴파일 척도(1:X). 기본값은 52000입니다.

  • S57_COMF: 부동소수점형 좌표값을 정수형 좌표값으로 변환하는 곱셈 인자입니다. 기본값은 10000000입니다. (GDAL 2.4 이상 버전)

  • S57_SOMF: 부동소수점형 3차원 (수심 측정) 값을 정수형 3차원 (수심 측정) 값으로 변환하는 곱셈 인자입니다. 기본값은 10입니다. (GDAL 2.4 이상 버전)

참고