10.지오메트리 패키지

📌 GeoAPI 지오메트리 패키지 개요
org.opengis.geometry 네임스페이스를 사용
ISO 19107:2003 (Geographic Information - Spatial Schema) 표준을 기반으로 구현

📌 주요 역할
좌표를 참조 시스템과 결합한 공간 유형 제공
벡터 기반 공간 표현 방식(vector-based spatial representation) 사용
경계를 인식하는 객체 및 위상 데이터 구조(topological data structures) 포함


1. 지오메트리 패키지에서 제공하는 주요 기능

📌 공간 데이터 표현
좌표와 해당 좌표가 속한 참조 시스템을 결합하여 공간 데이터를 표현
지오메트리 객체가 자체적인 경계를 인식할 수 있도록 설계

📌 벡터 기반 공간 표현 방식
GeoAPI는 래스터 기반이 아닌, 벡터 기반 지오메트리 모델을 제공
이를 통해 복잡한 공간 객체를 효과적으로 표현 가능

📌 위상 데이터 구조 포함
지오메트리 객체 간의 포함 관계(containership hierarchy) 모델링 가능
객체가 자체적인 경계를 인식하고, 위상적 관계를 정의할 수 있도록 지원


2. 현재 지원되는 지오메트리 타입

📌 현재 표준에서 정의된 지오메트리 타입은 가장 기본적인 두 가지 유형과 추상 부모 인터페이스 포함
두 개의 구체적인(Concrete) 타입만 제공됨
이 타입들은 공용 생성자(public constructors)를 통해 인스턴스화될 예정

📌 향후 확장 가능성
ISO 19107의 전체 공간 유형이 포함되지 않음
향후 개정에서 추가적인 지오메트리 요소가 확장될 가능성 존재


📌 결론
✔ GeoAPI의 지오메트리 패키지는 ISO 19107을 기반으로 공간 데이터를 벡터 방식으로 표현
✔ 현재는 기본적인 지오메트리 타입과 추상 부모 인터페이스만 제공
향후 개정에서 더 많은 공간 유형이 추가될 가능성이 있음


10.1 정의된 타입 (Defined Types)

📌 GeoAPI에서 정의된 최소한의 지오메트리 타입
GeoAPI는 ISO 19107 (Geographic Information - Spatial Schema) 표준에서
네 가지 최소한의 타입을 정의함.
이 타입들은 참조 시스템(referencing) 패키지에서 필요하기 때문에 포함됨


ISO 19107 TypeGeoAPI Type
GM_Positionorg.opengis.geometry.coordinate.Position
DirectPositionorg.opengis.geometry.DirectPosition
GM_Envelopeorg.opengis.geometry.Envelope

1. DirectPosition 타입

📌 역할
좌표 기준 시스템(CoordinateReferenceSystem, CRS)에서 특정 위치를 나타냄
Position 타입을 확장하므로, 해당 인터페이스도 함께 필요


2. Envelope 타입

📌 역할
각 축(axis)의 최소/최대(extreme) 값을 나타냄
경계 박스(Bounding Rectilinear Box)와 유사하지만 개념적으로 차이가 있음

📌 예제: 시베리아의 경계 문제
경계 박스: 시베리아는 동경 60°에서 서경 170°까지 걸쳐 있음
Envelope: 경계가 -180°에서 180°까지 확장됨

📌 주의사항
ISO 19107에서 Envelope의 ‘코너(corner)‘를 DirectPosition으로 반환하지만, 실제 물리적 위치가 아닐 수 있음
해당 좌표가 CRS(좌표 기준 시스템)의 유효 범위 밖일 수도 있음
따라서, DirectPosition은 단순한 데이터 컨테이너로 인식해야 함


3. MismatchedDimensionException 예외 타입

📌 역할
잘못된 차원(dimension)을 가지는 파라미터가 입력될 경우 예외를 발생시킴
입력된 요소들이 동일한 차원을 가지지 않거나, 적절한 차원이 아닐 때 사용


📌 결론
✔ GeoAPI는 ISO 19107에서 필요한 최소한의 네 가지 타입을 정의
좌표 위치(DirectPosition), 범위(Envelope), 예외 처리(MismatchedDimensionException) 제공
Envelope의 코너 좌표는 물리적 위치가 아닐 수 있으므로 주의해서 사용해야 함


10.2 지오메트리 패키지의 사용법 (Use of the Geometry Packages)

📌 GeoAPI 지오메트리 패키지의 사용 방식
표준 Java 규칙을 따르므로 별도의 추가 설명이 필요 없음
일반적인 Java 객체 사용 방식과 동일하게 활용 가능


10.3 표준과의 차이점 (Departure from Standards)

📌 DirectPositionEnvelope 타입의 위치 변경
ISO 19107에서는 해당 타입들이 coordinate 서브패키지에 포함됨
GeoAPI에서는 이 타입들을 org.opengis.geometry 최상위 패키지로 이동

📌 이유
이 두 타입이 API 전반에서 자주 사용되므로 더 쉽게 접근할 수 있도록 함
ISO 19107에서는 지오메트리 객체를 DirectPosition의 집합으로 간주
즉, DirectPosition이 API 전체에서 광범위하게 사용됨


10.4 향후 작업 (Future Work)

📌 ISO 19107의 추가적인 인터페이스 제공 계획
향후 GeoAPI 개정에서 훨씬 더 많은 인터페이스가 추가될 예정
현재는 GeoAPI 프로젝트에서 정의한 인터페이스들이 실험적인 단계에 있음

📌 기능적 참조 구현(Reference Implementation) 부재
현재 제공된 인터페이스는 실험적인 형태이며, 완전한 기능적 구현이 존재하지 않음
향후 개정에서 실제 구현을 포함할 가능성 있음


📌 결론
✔ GeoAPI의 지오메트리 패키지는 ISO 19107 표준을 따르지만, DirectPositionEnvelope의 위치를 상위 패키지로 이동
향후 개정에서 더 많은 인터페이스가 추가될 예정이지만, 현재는 실험적인 단계
완전한 기능적 구현은 아직 없으며, 향후 개선이 필요함