9.메타데이터 패키지

📌 GeoAPI의 메타데이터 패키지 개요
GeoAPI의 메타데이터 패키지는 org.opengis.metadata 네임스페이스를 사용하여
ISO 19115:2003 (Geographic Information – Metadata)
**ISO 19115-2:2007 (Extensions for imagery and gridded data)**의 내용을 구현

📌 기반 표준 및 수정 사항
ISO 19115:2003 → 원본 표준
Technical Corrigendum 1 (2006년 개정판) → 표준 보완
ISO 19115-2:2007 → 이미지 및 격자 데이터 확장


1. 메타데이터 패키지의 역할

📌 주요 기능
데이터 세트 또는 구성 요소에 대한 설명 요소를 담는 컨테이너 역할
대부분 문자열(String) 또는 문자열 컨테이너를 다루는 메서드로 구성
데이터 구조를 조작(변경)하는 기능은 포함하지 않음

📌 활용 예시
지리 참조(geodetic referencing) 시스템과 연계하여 주로 읽기(read) 전용으로 사용됨


2. 메타데이터 수정 제한 사항

📌 읽기 전용(Read-Only) 제한
GeoAPI 메타데이터 인터페이스는 기본적으로 값 설정(set)을 지원하지 않음
Java Generics에서 와일드카드(? extends Type)를 사용하여 컬렉션을 읽기 전용으로 제한

📌 수정이 필요한 경우
구현체에서 GeoAPI 인터페이스를 확장하여 변경 가능
그러나, 사용자가 GeoAPI 인터페이스를 직접 수정하려면 구현 클래스로 캐스팅 필요


3. 메서드 반환값 규칙 변경

📌 GeoAPI의 일반적인 규칙
필수(mandatory) 의무가 있는 메서드는 null을 반환할 수 없음
항상 반환 타입의 인스턴스를 반환해야 함

📌 메타데이터 패키지에서의 예외 사항
메타데이터에서는 해당 규칙을 완화하여 모든 메서드를 선택적(optional) 의무 수준으로 간주
즉, 필수 속성이더라도 다음과 같은 방식으로 반환 가능

  • 값이 있으면 해당 객체 반환
  • 값이 없으면 null 반환 가능
  • 컬렉션 타입이면 빈 컬렉션(empty collection) 반환 가능

📌 이유
현실적으로 많은 데이터 세트가 ISO 19115 명세를 정확히 준수하지 않음
유연한 데이터 처리를 지원하기 위해 해당 변경 사항을 채택

📌 규격 준수 여부 확인 방법
고급 구현체는 런타임에서 어노테이션을 검사하여 메타데이터가 규격을 준수하는지 판단 가능


📌 결론
✔ GeoAPI 메타데이터 패키지는 ISO 19115 표준을 기반으로 하지만 일부 수정 사항을 적용
데이터 변경 기능을 제공하지 않으며, 기본적으로 읽기 전용
데이터가 표준을 완전히 준수하지 않아도 유연하게 처리할 수 있도록 null 및 빈 컬렉션 반환을 허용
구현체는 필요에 따라 수정 가능하지만, 사용자 코드에서는 직접 인터페이스를 변경할 수 없음


9.1 패키지 매핑 (Package Mapping)

📌 ISO 19115 패키지와 GeoAPI 패키지 매핑
ISO 19115 패키지와 GeoAPI 패키지는 거의 동일한 명명 규칙을 따름.
일부 소규모 패키지는 상위 수준 패키지로 통합되었으며,
데이터 품질 관련 패키지는 DQ_* 타입과 LI_* 타입을 분리하여 두 개의 패키지로 구성됨.
또한, 참조 시스템 정보(Reference system information)는 GeoAPI의 referencing 패키지로 대체됨.


ISO 19115 패키지와 GeoAPI 패키지 매핑 표

ISO 19115 PackageGeoAPI Package
Metadata entity set informationorg.opengis.metadata
Identification informationorg.opengis.metadata.identification
Constraint informationorg.opengis.metadata.constraint
Data quality informationorg.opengis.metadata.quality
org.opengis.metadata.lineage
Maintenance informationorg.opengis.metadata.maintenance
Spatial representation informationorg.opengis.metadata.spatial
Reference system informationorg.opengis.referencing.*
org.opengis.parameter (see below)
Content informationorg.opengis.metadata.content
Portrayal catalogue referenceorg.opengis.metadata
Distribution informationorg.opengis.metadata.distribution
Metadata extension informationorg.opengis.metadata
Application schema informationorg.opengis.metadata
Extent informationorg.opengis.metadata.extent
Citation and responsible party informationorg.opengis.metadata.citation

📌 추가 설명
데이터 품질 정보(Data quality information)

  • DQ_* 타입과 LI_* 타입을 분리하여 각각 qualitylineage 패키지에서 관리

참조 시스템 정보(Reference system information)

  • org.opengis.referencing.*org.opengis.parameter 패키지로 대체됨

9.2 GeoAPI 메타데이터 패키지 사용법 (Use of the GeoAPI Metadata Packages)

📌 GeoAPI 메타데이터 패키지의 역할
✔ GeoAPI 메타데이터 패키지는 주로 문자열(String), 기본 타입(primitive types), 기타 메타데이터 타입을 포함하는 컨테이너 역할
데이터를 읽기 전용(read-only)으로 접근할 수 있도록 설계됨
참조 시스템(referencing) 패키지에서 제공하는 데이터 타입에서 메타데이터 요소를 가져올 수 있음


1. 메타데이터 요소 접근 예제

📌 시나리오
org.opengis.metadata.citation.Citation 요소에서 문서의 모든 저자(author) 목록을 출력

📌 코드 예제

Citation citation = ...; // 이미 사용 가능한 Citation 인스턴스가 있다고 가정  
for (ResponsibleParty rp : citation.getCitedResponsibleParties()) {  
    if (rp.getRole() == Role.AUTHOR) {  
        String author = rp.getIndividualName();  
        System.out.println(author);  
    }  
}  

📌 설명
citation.getCitedResponsibleParties()를 호출하여 관련된 모든 담당자(ResponsibleParty) 가져오기
ResponsibleParty 객체에서 역할(Role)을 확인하고, AUTHOR인 경우 이름을 출력


2. 기타 메타데이터 패키지의 활용 방식

📌 기본 원칙
GeoAPI의 메타데이터 인터페이스는 위 예제와 유사한 방식으로 작동
클라이언트 코드가 개별 메타데이터 요소를 가져오기 위해 객체를 분해(disaggregate)하는 방식으로 활용

📌 결론
✔ GeoAPI 메타데이터 패키지는 데이터 요소를 저장하고 읽어오는 기능을 제공하지만 직접 수정할 수 없음
메타데이터 정보를 읽어오는 방식은 위 예제처럼 특정 메서드를 사용하여 개별 요소를 추출하는 방식으로 진행


9.3 표준과의 차이점 (Departures from Standard)

📌 GeoAPI 메타데이터 패키지의 주요 변경 사항
ISO 19115의 MD_CRS 타입을 ISO 19111의 타입으로 대체
ISO 19111의 참조 시스템(Referencing System) 타입은 보다 풍부하고 완전한 의미를 제공
일부 ISO 19115 클래스를 GeoAPI에서 직접 구현하지 않고, 참조 패키지에서 적절한 대체 클래스를 제공


Table 8: Mapping of types from the reference system information package

ISO 19115 TypeGeoAPI Replacement
MD_ReferenceSystemorg.opengis.referencing.ReferenceSystem
MD_CRSorg.opengis.referencing.crs.CoordinateReferenceSystem
MD_EllipsoidParametersorg.opengis.referencing.datum.Ellipsoid
MD_ProjectionParametersorg.opengis.parameter.ParameterValueGroup
MD_ObliqueLineAzimuthorg.opengis.parameter.ParameterValue
MD_ObliqueLinePointorg.opengis.parameter.ParameterValue

📌 GeoAPI의 파라미터(parameter) 패키지와 ISO 19111의 차이점
ISO 19115에서는 특정 명명된 데이터 타입을 정의
GeoAPI는 ISO 19111을 따라 보다 일반적인 방식으로 참조 시스템을 처리
즉, 개별 데이터 타입이 아닌, 지도(Map) 같은 구조로 참조 요소를 관리

📌 ISO 19115-2의 확장 요소 통합 방식 변경
ISO 19115-2 (이미지 및 격자 데이터 확장)에서는 새로운 타입을 생성하여 기존 요소를 보완
GeoAPI는 이러한 요소들을 별도의 새로운 타입으로 만들지 않고, 기존 타입에 직접 통합
이러한 방식은 API의 복잡성을 줄이고, 기존 모델과 자연스럽게 통합될 수 있도록 하기 위함


📌 결론
GeoAPI는 ISO 19115보다 ISO 19111을 따르는 방향으로 참조 시스템을 처리
ISO 19115-2의 일부 요소들은 별도 클래스를 만들지 않고 기존 클래스에 통합
API의 구조를 간결하게 유지하면서도, 보다 유연하고 강력한 참조 시스템 구현 가능


9.4 향후 작업 (Future Work)

📌 GeoAPI 메타데이터 패키지의 향후 계획
향후 개정에서 팩토리(factory) 인터페이스 추가 가능성
이를 통해 현재 정의된 메타데이터 타입을 보다 쉽게 인스턴스화할 수 있도록 지원

📌 현재 상태
팩토리 시스템의 구체적인 설계는 아직 GeoAPI 기여자들 간에 합의되지 않음
따라서, 향후 개정에서 논의 및 조정될 예정

📌 결론
향후 GeoAPI 메타데이터 패키지에 팩토리 패턴 적용 가능성 있음
그러나 현재로서는 이에 대한 명확한 설계 방향이 정해지지 않음
추후 논의와 표준화 과정을 거쳐 결정될 예정