2010년 2월 26일 금요일

TIN 또는 Terrain 데이터 생성 고려사항

수치표고자료(DEM)을 구축하기 위해 일반적으로 TIN을 구축 후 래스터(DEM)로 변환한다.

지난 시간에 이어 TIN 구축시 고려해야 할 사항을 알아보기로 한다. ArcGIS의 경우 TIN을 구축하여 래스터로 변환할 수도 있지만 GeoDatabase(File GeoDatabase, SDE 등)를 사용할 경우 Terrain 데이터셋을 사용하면 데이터 편집 및 유지관리에 있어 효율적이다.

1. 들어가기 전에
Terrain 데이터셋을 한마디로 표현하자면 Multi-Resolution TIN이다. Terrain 데이터셋은 지오데이터베이스 내의 피쳐로 저장된 측정데이터로부터 구축, 관리된다.
 - 지오데이터베이스에서 관리되는 데이터셋 저장구조
 - 지형을 표현하기 위해 TIN 데이터 구조 사용
 - 다중 해상도를 표현하기 위해 피라미드를 사용
 - 여기에 대해서는 다음차에 부가 설명하기로 한다.

여기에서는 데이터 구축관점에서 TIN 및 Terrain을 같은 의미로 사용하기로 한다.

2. Surface feature type (SFType)
피쳐클래스(Feature Class)는 Terrain 데이터셋을 구축하기 위한 데이터 소스를 제공한다. Terrain 데이터셋 설계시 각각의 데이터 소스(피쳐 클래스)가 어떤 역할을 할 것인지를 결정해야 한다. 이 역할을 Surface Feature Type(SFType)이라 부른다.
여기에는 Mass Points, Breaklines, Polygon 유형이 있다. BreaklinesPolygon은 Hard 및 Soft 조건이 있다. Soft는 지형을 완만(smoothly)하게, Hard는 급격하게(discontinuity) 표현한다.

포인트와 멀티포인트 피쳐클래스는
Mass Points로만 사용될 수 있으며, 폴리라인과 폴리곤은 다음의 역할을 수행할 수 있다.
  - Breaklines
  - Clip polygons
  - Erase polygons
  - Replace polygons
  - Value fill polygons

Mass points
Mass Points는 TIN에서 노드로 사용되는 데이터 소스로 LiDAR와 같은 여러 가지 새로운 센서들은 고해상도의 Terrain 데이터셋을 생성하는데 사용되는 대량의 Mass Points를 취득할 수 있다.
LiDAR로부터 취득되는 LAS와 같은 데이터 파일 포맷은 Multipoint 피쳐 클래스로 지오데이터베이스에 탑재될 수 있으며 Geoprocessing 도구를 사용할 수 있다. 수치지도에서는 표고점을 사용할 수 있다.

Breaklines
Breakline은 일반적으로 능선이나 하천과 같은 자연 지형이나 도로와 같은 인공지물을 표현하는데 사용한다.
아래는 라인을 구성하는 각 버텍스마다 고도값(Z)을 가진 Breakline을 보여주며, TIN을 구성할 때 하나 이상의 Triangle Edge로 변환된다.

Clipping polygons
Clipping Polygon은 Terrain에서 경계를 정의하는데 사용되며, 구축할 지역이 불규칙한 영역일 경우 Clip Polygon을 적용하지 않으면 Convex 모양을 나타낸다.

아래 그림에서 왼쪽은 클립되지 않은 상태이며, 측정 데이터가 없는 지역까지 Terrain이 구축되어 있어 오류가 발생한다. Clip Polygon을 이용하면 연구지역만을 대상으로 구축하거나 수집된 측정지역만을 대상으로 Terrain 데이터셋을 구축할 수 있다.
clip polygon

Erase polygons
Erase Polygon은 Terrain에서 Hole을 정의한다. 이는 측정된 데이터가 없는 지역이나 보간을 원하지 않는 지역을 정의하는데 사용된다. 빈 공간으로 표시되고 분석 시 NoData로 처리한다.

Replace polygons
Replace Polygon은 일정한 높이의 영역을 정의하는데 사용하며, 일반적으로 호수나 평평한 인공구조물을 표현하는데 사용한다. Replace Polygon은 다른 고도값을 가진 데이터가 내부에 있을 경우 이를 무시하고 재정의하는데 최적으로 사용될 수 있다.

만약 이 영역 내에서 고도값이 일정하다면 Replace Polygon을 사용하는 대신 Breakline을 사용하면 TIN을 구성할 때 속도 및 처리 면에서 효율적이다.

Value fill polygons
Value fill polygon은 Terrain 데이터셋의 Triangle에 정수값(tag value)를 설정하는데 사용된다.
Terrain은 이 triangle의 tag값을 이용하여 사용자 정의 심볼로 렌더링 가능하다.

Hard or soft surface feature types (SFTypes)
위에서 언급했듯이 라인과 폴리곤 피쳐 유형에서 Hard 및 Soft 조건은 그 위치에서의 지형의 평탄하거나 연속적인 지형의 변화를 나타내는데 사용된다. 이 정보는 Natural neighbor 보간법에 영향을 주며, Hard line과 hard Poygon을 제외하고는 지형을 부드럽게 처리한다.
Natural neighbor 보간법은 Terrain을 래스터로 변환, TIN을 래스터로 변환, shape을 보간하는 도구에 사용된다. 매스 포인트를 제외한 모든 SFType은 Hard 또는 Soft 조건을 지원한다.

일반적으로 Hard Breakline은 해안선, 하천, 댐, 건축물 흔적, 도로경계, 도로절토 등에서 사용하며, Soft Breakline은 연구지역 경계, 부드럽고 완만한 능선과 계곡, 데이터가 없는 영역의 경계, 등고선(등고선은 매스 포인트로 사용이 가능함) 등에서 사용한다.

아래 두 그림을 살펴보자. 두 그림 모두
Terrain 으로부터 Natural neighbor 보간을 사용하여 생성한 래스터이다.
단지, 왼쪽은 모든 라인을 soft line으로 추가하여 Terrain을 구성하였으며, 오른쪽 그림은 우상단 모서리에 대각선의 Hard breakline을 추가한 경우이다.
 

3. Types of source data supported in terrain datasets
다음 표는 ArcGIS Desktop Help에 정리되어 있는 Surface Feature Type의 예이다. 정리가 잘 되어 있으므로 한번씩 확인 하기 바랍니다.

Common types of data used to build terrains
 - Photogrammetrically derived mass points
 - Photogrammetrically derived breaklines
 - GPS points
 - Lidar points
 - Sonar
 - Contour lines
 - Points, lines, polygons (mass, break, clip, erase, replace)

Surface feature types in terrain datasets

Surface feature type

Feature class

Z-value source in the feature class

Thematic data type examples

Mass points

(x,y,z locations)

Point

Shape geometry; x,y,z per point

Attribute column holding a z-value for each point

Spot heights

Survey points

GPS points

Multipoint

Shape geometry; x,y,z per point

Attribute column holding one z-value per shape

Lidar points

Sonar points

Line

Shape geometry; x,y,z per vertex

Attribute column holding one z-value per shape

Contours

Polygon

Shape geometry; x,y,z per vertex

Attribute column holding one z-value per shape

Shoreline delineation

Breaklines

(hard or soft)

Line

Shape geometry; x,y,z per vertex

Attribute column holding one z-value per shape

No height source; z-values interpolated for each feature from the surface before being added

Contours

Edge of pavement

Roads

Waterlines (streams, rivers, canals, shorelines)

Polygon

Shape geometry; x,y,z per vertex

Attribute column holding one z-value per shape (such as a shoreline)

No height source; z-values interpolated for each feature from the surface before being added

Lake shoreline

Clipping polygons

(hard or soft)

Polygon

Shape geometry; x,y,z per vertex

Attribute column holding one z-value per shape (such as a shoreline)

No height source; z-values interpolated for each feature from the surface before being added

Study area boundary

Erase polygons

(hard or soft)

Polygon

Shape geometry; x,y,z per vertex

Attribute column holding one z-value per shape

No height source; z-values interpolated for each feature from the surface before being added

Lake shorelines

Obscured areas (dense forest canopy)

Replace polygons

(hard or soft)

Polygon

Shape geometry; x,y,z per vertex

Attribute column holding one z-value for all vertices in each shape

Water bodies

Value Fill

(hard or soft)

Polygon

Shape geometry; x,y,z per vertex

No height source; z-values interpolated for each feature from the surface before being added

Land-use codes


※ 참고문헌
- ArcGIS Desktop Help

2010년 2월 23일 화요일

수치표고자료(DEM)의 개념 및 구축지침

GIS 관련 카페나 커뮤니티를 보면 GIS 분야에서 등고선을 이용하여 TIN을 구축하고 DEM을 추출하여 여러 분석에 활용하고 있다.

데이터의 정확성을 위해서는 TIN 구축 과정에서 고려해야 할 사항이 많음에도 불구하고 GIS 툴이 제공하는 기능을 그대로 활용하며 별로 신경을 쓰지 않는 것 같다. 앞으로 몇 차에 걸쳐 TIN 구축시 고려해야 할 내용을 살펴볼까 한다.

여기에서는 첫번째로 3차원 지형 시각화의 기초가 되는 수치표고자료에 대한 개념 및 수치표고자료 구축을 위해 기본적으로 참고해야 할 국내 규정 등을 알아보기로 하자.

특히 국토지리정보원 고시자료를 필히 확인하고, 수치지도의 레이어도 한번씩 살펴보자.


① 수치표고자료의 개념
DEM(Digital Elevation Models)
 수치표고모형은 수치 지형 또는 수심측량 데이터에 관한 일반적인 용어로써 DEM(Digital Elevation Models)이라고도 하며 일반적으로 DEM은 식생과 인공지물을 포함하지 않는 지형만의 표고값을 의미하며,
강/호수의 DEM 높이값은 수표면을 나타낸다.

DTM(Digital Terrain Model)
 DEM과 유사한 뜻으로 사용되며, DEM과 비슷하지만 지형을 좀더 정확하게 묘사하기 위해 불규칙적으로 간격을 갖는 불연속선(breakline)이 존재한다는 것이 다르다. DTM의 최종적인 결과는 특정 지형을 명확히 묘사하는 것이며, 등고선은 지형의 실제 형태에 가깝도록 DTM으로부터 생성하곤 한다.

DSM(Digital Surface Model)
 DSM 은 DEM, DTM과 유사한 뜻으로 사용되지만, 지표면의 표고값이 아니라 인공지물(건물 등)과 지형지물(식생 등)의 표고 값을 나타내며 원거리통신관리, 산림관리, 3D 시뮬레이션 등에 이용된다.

② 공간정보의 취득방법
 - 이동형측량시스템을 이용한 3차원 공간정보 및 가시화정보 취득

 - 항공사진을 이용한 3차원 공간정보 및 정사영상 취득

 - 기본지리정보와 수치지도2.0을 이용한 2차원 공간정보(등고선, 표고점 등) 취득
 - 항공레이저측량을 이용한 3차원 공간정보 취득

 
▷ 크게 지상측량, 사진측정학적 방법, 수치지도, RADAR(RAdio Detection And Ranging)/LiDAR(Light Detection And Ranging)/SONAR(SOund NAvigation RAnging) 등의 4가지로 요약할 수 있음

수치표고자료의 구축
 - 취득한 샘플데이터를 이용하여 보간법(Interpolation)을 이용하여 수치표고자료 제작
 - 격자자료는 사용목적 및 점밀도를 고려하여 불규칙삼각망(TIN), 크리깅(Kriging)보간 또는 공삼차보간 등 정확도를 확보할 수 있는 보간방법으로 제작

활용분야
 - 3차원 시각화: 비행, 전투 시뮬레이션, 경관 시뮬레이션 등
 - 지형분석: 경사(Slope), 향(Aspect), 음영기복(Hillshade), 가시권(Viewshed)분석 등
 - 수문분석: 유역분석 등
 - 전파분석 등 활용분야가 다양함

참고: 국토지리정보원 고시자료
기존 수치표고자료구축에관한작업규정(국토지리정보원 내규 제 2002-107호(2002. 12. 24))은 2009년 8월 폐지되었으며 공공측량작업규정, 항공레이저측량작업규정, 3차원국토공간정보구축작업규정에 반영


공공측량작업규정
국토지리정보원 고시 제2009-959호(2009.12.14)
제38조(등고선의 종류 및 간격) 등고선의 표현방법은 다음과 같다.
   ①주곡선 : 지형을 표현하기 위한 기본적인 등고선으로서 실선으로 표현하며, 생략하지 않는 것을 원칙으로 한다.
   ②계곡선 : 등고선의 수치를 판독하기 쉽게 하기 위해서 주곡선 중 5선마다 1선을 강조하여 표현한다.
   ③간곡선 : 지형의 경사가 완만하여 주곡선만으로는 세부 형태나 특징을 표현하기 곤란할 경우에 사용하며, 주곡선 간격의 1/2로 한다.
   ④조곡선 : 지형의 경사가 완만하여 간곡선의 표시만으로는 세부형태나 특징을 표현하기 곤란할 경우에 사용하며, 간곡선 간격의 1/2로 한다.

제52조(수치표고모델 제작) 항공레이저 측량을 이용한 수치표고모델 제작방법 및 기준은 국토지리정보원장이 고시한 항공레이저측량작업규정을 적용한다.

제54조(수동독취)
   7. 등고선, 표고점, 삼각점, 수준점에는 표고값을 정확히 입력한다.

항공레이저측량작업규정
국토지리정보원 고시 2009-916호
(2009.12.14)
제43조(격자자료의 제작) 격자자료는 사용목적 및 점밀도를 고려하여 불규칙삼각망, 크리깅(Kriging)보간 또는 공삼차보간 등 제44조에 규정된 정확도를 확보할 수 있는 보간방법으로 제작하여야 한다.

제46조(수치표고모델 오류 확인 및 수정) 수치표고모델로 음영기복도를 생성하여 화면상에서 육안으로 검사하고 오류를 확인하여 수정한다.

제48조(수치표고모델의 기록) ①수치표고모델의 좌표는 미터(m) 단위로 하고, 소수 2자리(소수점 3자리에서 반올림)까지 표시하여야 한다.
  ②생성된 수치표고모델은 발주처가 정하는 축척의 수치지도 도엽단위로 분할하여 저장하고, 도곽보다 50m 크게 제작한다.
제44조(수치표고모델 규격 및 정확도) 수치표고모델의 격자 규격에 따른 평면 및 수직 위치 정확도의 한계는 다음 각 호와 같다. 다만, 수치표고모델의 활용분야 및 제작목적에 따라 정확도를 별도로 정할 수 있다.
  1. 평면위치 정확도 : H(비행고도)/1,000
  2. 수직위치 정확도
 

 격자규격 수치지도축척 RMSE 최대오차
 1m×1m 1/1,000 0.5m이내 0.75m이내
 2m×2m 1/2,500 0.7m이내 1m이내
 5m×5m 1/5,000 1.0m이내 1.5m이내
 비 고   


3차원국토공간정보구축작업규정
국토지리정보원 고시 제2009- 951호
(2009.12.14)
제12조(기초자료 취득) ①3차원 국토공간정보 구축을 위한 자료 취득방법은 각 호와 같다.
  1. 기본지리정보와 수치지도2.0을 이용한 2차원 공간정보 취득
  2. 항공레이저측량을 이용한 3차원 공간정보 취득
  3. 항공사진을 이용한 3차원 공간정보 및 정사영상 취득
  4. 이동형측량시스템을 이용한 3차원 공간정보 및 가시화정보 취득
  5. 디지털카메라를 이용한 가시화정보 취득
  6. 건축물관리대장, 한국토지정보시스템, 토지종합정보망, 새주소 데이터 등을 이용한 3차원 공간정보의 속성정보 취득
  7. 속성정보 취득 및 현지보완측량을 위한 현지조사
  8. 기존에 제작된 수치표고모델, 정사영상 및 영상정보를 이용한 자료의 취득
  9. 그 밖에 국토지리정보원장이 필요하다고 인정하는 방법

제18조(3차원 지형데이터 편집방법) ①“항공레이저측량 작업규정”에 따라 제작된 수치표고모델을 사용하는 것을 원칙으로 한다.
  ②수치지도 축척에 따른 수치표고모델의 격자간격은 다음 표와 같다.
 

 수치지도 축척 수치표고자료 격자간격
 1:1,000 1m×1m
 1:2,500 2m×2m
 1:5,000 5m×5m

  ③도로, 철도, 교통시설물, 호안, 제방 및 건물 등의 바닥면이 지형과 일치하도록 1:1,000 수치지도 또는 정사영상 등에서 불연속선(breakline)을 추출하여 수정 및 편집을 수행하여야 한다.

수치지도레이어(표준코드및 심볼)
국토지리정보원 수치지도 레이어는 일반적으로 철도, 하천, 도로, 건물, 지류, 시설물, 지형, 행정및도곽경계, 주기로 구분된다. 각 축척별 레이어 및 코드를 한번 살펴보고 특히 등고선, 표고점, 도곽경계, 도로, 하천 등의 주요 레이어는 확인해 두도록 한다(추후 TIN 생성시 활용).

○ 1:1,000 주요 레이어 코드

펼쳐두기..

○ 1:5,000 및 1:25,000 주요 레이어 코드

펼쳐두기..


수치지형도2.0지형지물속성목록표

※ 참고문헌
- 국토지리정보원
- 국가GIS 교육센터

2010년 2월 22일 월요일

[ArcObjects]다양한 Geometry 버퍼(Buffer) 연산들

벡터 공간정보의 근린연산(proximity analysis)을 수행하기 위해서는 Geometry에 대한 Buffer 연산이 필수적이다. 버퍼 연산을 이용하여 공간상에서 주어진 지점과 주변객체들의 탐색 및 관계를 파악할 수 있다.
지난 시간의 Geometry Union에 이어 Geometry의 Buffer 연산에 대해 알아보기로 한다. Geometry의 버퍼연산은 다음 그림을 통해 이해하도록 하자.

※ 그림출처: VIVID Solution, 2004, JTS Topology Suite Developer’s Guide, pp.7-8

▣ ArcObjects에서의 Buffer제공 인터페이스 개요
ITopologicalOperator의 Buffer Method
 - ArcObjects에서 가장 기본적인 Buffer 기능
 - End cap style, Buffer side 등의 옵션을 사용자가 정의할 수 없음
 - 여기에서 참조: ITopologicalOperator

IBufferConstruction Interface
 - ArcGIS 9.3 버전에서 새로 추가된 인터페이스
 - IBufferConstructionProperties 인터페이스로 다양한 버퍼 옵션(EndOption, SideOption, ExplodeBuffers, OutsideOnly, GenerateCurves, UnionOverlappingBuffers, DensifyDeviation) 제공
 - 다수의 Geometry를 효율적으로 버퍼링
 - 개별 Geometry별로 서로다른 버퍼거리를 사용하여 버퍼링 가능
 -
Polyline 버퍼는 left, right 버퍼 가능
 - Polygon의 경우 Polygon의 Interior ring은 버퍼연산시 제외 가능
 - 여러 Geometry 버퍼시 겹치는(Overlap) 지역의 Dissolve 적용 여부 설정 가능
 -
geographic coordinate system을 사용하는 Geometry의 경우에 True geodesic 가능
 - Geometyr 유형이 다른 여러 Geometry를 동시에 버퍼 가능
 - 하나의 Geometry에 대해 동시에 다중 버퍼 가능
 - ARCTMPDIR(일반적으로 System의 Temp 폴더)내 임시 파일 생성 및 버퍼링 후 제거
 - 여기에서 참조: IBufferConstruction

IGeometryBridge의 ConstructBuffers Method
 - 하나의 Geometry에 대해 동시에 다중 버퍼를 생성하며 ITopologicalOperator의 Buffer를 각각 호출하는 것보다 효율적
 - 여기에서 참조: IGeometryBridge
ITopologicalOperator
다음 예는 포인트(0,0)에서 100의 거리만큼 버퍼를 수행하는 코드로 Buffer의 일반적인 사용법이다.

IPoint basePoint = new ESRI.ArcGIS.Geometry.PointClass();
basePoint.PutCoords(0, 0);
ITopologicalOperator topoOpt = (ITopologicalOperator)basePoint;
IPolygon bufferPolygon = (IPolygon)topoOpt.Buffer(100.0);
IArea baseArea = (IArea)bufferPolygon;
System.Diagnostics.Debug.WriteLine(baseArea.Area);
IBufferConstruction
다음 예는 위 ITopologicalOperator의 결과와 동일한 결과를 반환한다.

IPoint basePoint = new ESRI.ArcGIS.Geometry.PointClass();
basePoint.PutCoords(0, 0);

IBufferConstruction bufferConstruction = new BufferConstruction()
IPolygon bufferPolygon = (IPolygon)bufferConstruction.Buffer(basePoint, 100.0);

IArea baseArea = (IArea)bufferPolygon;
System.Diagnostics.Debug.WriteLine(baseArea.Area);
다음 예는 FeatureClass에서 ObjectID가 1, 2, 3인 피쳐로 Geometrybag을 생성 후 다중 버퍼 후 면적을 확인하는 코드이다. IBufferConstructionProperties 인터페이스의 멤버 적용을 확인하면 된다.
IFeatureClass featureClass = GetFeatureClass();

IGeometryCollection geometryBag = new GeometryBagClass();
IGeometryBag inputGeometries = (IGeometryBag)geometryBag;
inputGeometries.SpatialReference = ((IGeoDataset)featureClass).SpatialReference;
object missingObj = Type.Missing;

IFeatureCursor afCursor = featureClass.GetFeatures(new int[] {1, 2, 3}, true);
IFeature aFeature = null;
while ((aFeature = afCursor.NextFeature()) != null)
{
    geometryBag.AddGeometry(aFeature.ShapeCopy, ref missingObj, ref missingObj);
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(afCursor);

//ConstructBuffer 
IBufferConstruction ipBufCon = new BufferConstructionClass();

IBufferConstructionProperties ipBufConProp = (IBufferConstructionProperties)ipBufCon;
//defaults = esriBufferRound
ipBufConProp.EndOption = esriBufferConstructionEndEnum.esriBufferRound;  
//defaults = esriBufferFull
ipBufConProp.SideOption = esriBufferConstructionSideEnum.esriBufferFull; 
//defaults = false
ipBufConProp.ExplodeBuffers = false; 
//defaults = false
ipBufConProp.OutsideOnly = false; 
//defaults = true
ipBufConProp.GenerateCurves = true; 
//defaults = false
ipBufConProp.UnionOverlappingBuffers = false;
//The maximum distance between a line connecting two buffer curve points and the true curve 
//defaults to -1, indicating 1000 * xy tolerance of spatial reference of input geometries
ipBufConProp.DensifyDeviation = -1;  

IGeometryCollection bufferResults = new GeometryBagClass();
ipBufCon.ConstructBuffers((IEnumGeometry)inputGeometries, 1000, bufferResults);

for (int k = 0; k < bufferResults.GeometryCount; k++)
{
    IArea ipArea = (IArea)bufferResults.get_Geometry(k);

    System.Diagnostics.Debug.WriteLine(ipArea.Area);
}
System.Runtime.InteropServices.Marshal.ReleaseComObject(ipBufCon);
IGeometryBridge
다음 예는 sourceGeometry를 100 ~ 500(미터 단위 가정)까지 100미터 간격으로 다중 버퍼 수행 후 면적을 확인하는 코드이다.
IGeometry sourceGeometry = GetGeometry();

ITopologicalOperator2 ipInputTopoOpt = (ITopologicalOperator2)sourceGeometry;

double[] distanceArray = new double[] {100, 200, 300, 400, 500};

IGeometryBridge ipGeomBridge = new GeometryEnvironmentClass();
IEnumGeometry ipEnumGeom = ipGeomBridge.ConstructBuffers(ipInputTopoOpt, ref distanceArray);
ipEnumGeom.Reset();

IArea ipArea = (IArea)ipEnumGeom.Next();
while (ipArea != null)
{
    System.Diagnostics.Debug.WriteLine(ipArea.Area);
    ipArea = (IArea)ipEnumGeom.Next();
}
▣ JTS Topology SuiteJTS에 보면 GeometryCollection에서 Buffer 메쏘드 호출할 때 0값을 설정하면 Union과 같은 결과를 얻을 수 있는데, ArcObjects의 IBufferConstruction은 이러한 처리는 못하나보다..

참고: Using union to combine a Collection of Geometry

JTS Topology Suite란?
Java 기반의 2D Geometry API로 Geometry들에 대한 공간관계 및 처리기능을 제공하며, JTS의 특징은 다음과 같다:

 * Open Geospatial Consortium Simple Features Specification for SQL 수용
 * 빠르고 견고한 2D 기반 공간관련 알고리즘 구현 및 제공
 * 100% 순수 JavaTM로 구현
 * LGPL 라이센스를 따르는 Open Source 라이브러리
 * GEOS(Geometry Engine, Open Source, JTS의 C++ 포팅), NTS(Net Topology Suite, JTS의 .NET C# 포팅) 등 Open Source GIS 엔진에서 대부분 활용하는 핵심 Geometry Engine


JTS에 대한 더 많은 정보는 여기에서 확인하면 된다.
* VIVID Solution: JTS Topology Suite
* Tsusiat Software: JTS Topology Suite