2009년 9월
목표
이 튜토리얼에서는 OGR 오픈소스 라이브러리를 사용하여 GIS 벡터 데이터를 KML로 변환하기 위한 기본사항을 안내합니다. 이러한 라이브러리는 대부분의 GIS 파일과 함께 사용할 수 있지만 이 튜토리얼에서는 ESRI 도형 파일 작업에 중점을 둡니다.
소개
지리 데이터는 웹에서 다양한 형식으로 제공됩니다. KML은 가장 널리 쓰이는 파일 형식 중 하나지만, 다른 여러 파일 형식도 사용됩니다. 대기업, 정부, NGO는 지리 정보 시스템을 사용하여 전문 파일 형식과 함께 지도를 만듭니다. 이러한 애플리케이션은 전문 교육을 받거나, 시간이 어느 정도 걸리는 경우가 많습니다. 독점 광고는 비용이 많이 들 수 있습니다. 반면에 강력하며 전문 지도 작성자에게 풍부한 매핑 도구 모음을 제공합니다.
많은 정부 기관이 공공기관용 GIS 데이터의 일부를 공개합니다. Data.gov, Massachusetts Geographic Information System, DataSF 등의 포털에서는 지역사회 데이터를 쉽게 찾을 수 있습니다. 이 도움말에서는 벡터 데이터, 즉 점, 선, 다각형과 같은 간단한 도형으로 구성된 데이터를 KML로 변환하는 방법을 설명합니다. 이를 통해 다음을 포함한 다양한 유형의 데이터에 액세스할 수 있습니다.
- 필지 건물의 경계를 나타내는 필지 데이터
- 범죄 보고서와 같은 사고 데이터
- 행정 구역, 주, 카운티, 주 등 경계에 대한 데이터
- 도로 데이터(계획된 도로 및 기존 도로 포함)
- 허가가 발급되었음을 나타내는 건설 허가
- 독감 발병 사건에 대한 설명 등의 건강 데이터
Google 어스 프로, shp2KML, KML2KML, Arc2Earth 등 데이터 변환을 위한 훌륭한 애플리케이션이 많이 있습니다. 이 도움말에서는 오픈소스 지리정보 추상화 라이브러리(GDAL) 유틸리티를 사용하여 Google 어스 또는 Google 지도에서 사용할 수 있도록 벡터 데이터를 KML로 변환하고 이러한 라이브러리를 자체 애플리케이션에 통합하는 방법을 설명합니다.
파일 형식 참고사항
이 도움말에서는 ESRI shapefile을 KML로 변환하는 경우 단계별로 설명하지만, GDAL 유틸리티, 특히 OGR은 CSV, PostGRES/PostGIS 데이터베이스 및 다양한 다른 형식을 비롯한 다양한 파일 형식에서 변환할 수 있습니다. 대부분의 주요 데이터 형식이 지원됩니다. 지원되지 않는 형식을 찾았다면 오픈소스 라이브러리이므로 OGR용 드라이버를 작성할 수 있습니다.
도형 파일
ESRI의 가장 많이 사용되는 도형 파일 형식은 가장 일반적인 GIS 데이터 형식 중 하나입니다. 셰이프파일은 기술적으로 .shp 확장자를 가진 단일 파일이지만 .shp만 열 수 없습니다. .dbf 및 .shx 파일이 필요하며, 다양한 목적으로 필요한 다양한 파일도 있습니다. 따라서 도형 파일에 대한 참조는 항상 일종의 압축된 아카이브에 있는 파일 모음을 의미합니다. 이 보관 파일이라고 하면 Google에서는 이 도움말의 나머지 부분에서 shapefile이라는 용어를 사용합니다.
Shapefile에는 도형에 대한 많은 양의 정보가 포함됩니다. 이 가이드에서는 실제 도형, 도형에 관한 메타데이터, 사용된 공간 참조 시스템에 대한 정보, 기타 다양한 데이터를 설명합니다. 이 도움말의 목적상 도형, 메타데이터 및 공간 참조 시스템에 가장 중점을 둡니다.
도형과 메타데이터는 쉬운 개념입니다. 도형은 점, 선 및 다각형이며 KML에서 쉽게 표현할 수 있습니다. 메타데이터는 데이터에 대한 데이터로, 보통 필터링 또는 쿼리 용도로 사용됩니다. 예를 들어, 도로를 설명하는 선에는 도로 유형 (시내 도로, 국도, 회전목마 등), 속도 제한, 도로 기금, 크기 등에 대한 메타데이터가 포함될 수 있습니다.
공간 참조 시스템 (SRS)은 벡터 데이터를 만드는 데 사용되는 좌표계와 투영을 식별하는 데 사용됩니다. KML에서는 WGS84 좌표계에 위도와 경도를 사용합니다. 그러나 지도에서 좌표를 식별하는 다른 방법이 있습니다. 인기 있는 요소로는 Universal Transverse Mercator(횡단 메카토르 도법), 영국 국립 그리드, 주 평면 시스템이 있습니다. 데이터를 KML로 변환하려면 해당 정보를 식별해야 할 수 있습니다. KML은 WGS84만 지원합니다. 일반적으로 셰이프파일은 이러한 정보를 대개 .prj 파일에 포함하여 OGR에서 감지할 수 있습니다. 하지만 SRS를 식별해야 하는 경우도 있습니다. 데이터 소스는 데이터를 다운로드할 때 페이지, 다운로드를 포함하는 Readme 문서 또는 다른 형식으로 데이터 소스에서 어떤 형태로든 제공될 수 있습니다. 일반적으로 이 정도면 충분합니다. 공간 참조 사이트에서는 SRS에 대한 자세한 내용을 확인할 수 있으며 개별 참조 시스템을 조회할 수 있는 참조가 제공됩니다.
Ogr2ogr
GDAL은 벡터 데이터 작업을 위한 강력한 라이브러리 집합을 제공합니다. 특히 ogr2ogr
는 데이터 변환을 위한 강력한 유틸리티입니다. 위에 언급된 애플리케이션 중 일부를 포함하여 많은 애플리케이션에 GDAL/OGR이 통합되어 있습니다.
시작하려면 GDAL을 다운로드 및 설치하세요. 그러면 도형 파일이 필요합니다. 이 튜토리얼에서는 DataSF를 사용해 보세요. 아래 예에서는 여기에서 라이선스에 동의한 후 가져올 수 있는 realtor_neighborhoods
도형 파일을 사용합니다. 파일을 다운로드한 후 기억하기 쉬운 디렉터리에 압축을 풉니다. 명령줄을 열고 데이터를 넣을 디렉터리로 이동합니다. 이제 즐기세요.
ogr2ogr
은 명령줄에서 아주 쉽게 사용할 수 있습니다. realtor_neighborhoods
를 도형 파일에서 KML로 변환하는 방법은 다음과 같습니다.
ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp
명령어의 명령어가 아래에 나와 있습니다.
ogr2ogr
: 핵심 명령어입니다.-f "KML
: 출력 형식을 KML로 설정합니다.-where "NBRHOOD='Telegraph Hill'"
: SQL과 같은 선택적where
절입니다. 기본적으로 메타데이터를 기반으로 데이터를 쿼리할 수 있습니다. 셰이프파일 및 쿼리를 지원하는 기타 파일 형식과 함께 사용할 수 있습니다. 이 경우에는 NBRHOOD 필드를 쿼리하고 Telegraph Hill의 NBRHOOD가 있는 특성만 선택합니다. 이 매개변수를 사용 중지하면ogr2ogr
가 모든 주변 다각형을 제공합니다.realtor_neighborhoods.kml
: 출력 파일 이름입니다. 출력 파일 이름이 먼저 나와야 합니다.realtor_neighborhoods.shp
: 입력 파일 이름입니다. .shp 파일은 전체 도형 파일을 나타냅니다.
아주 간단합니다. 이 명령어는 다음과 같은 KML 파일을 작성합니다.
<?xml version="1.0" encoding="utf-8" ?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document><Folder><name>realtor_neighborhoods</name> <Schema name="realtor_neighborhoods" id="realtor_neighborhoods"> <SimpleField name="Name" type="string"></SimpleField> <SimpleField name="Description" type="string"></SimpleField> <SimpleField name="OBJECTID" type="float"></SimpleField> <SimpleField name="NBRHOOD" type="string"></SimpleField> <SimpleField name="SFAR_DISTR" type="string"></SimpleField> </Schema> <Placemark> <ExtendedData><SchemaData schemaUrl="#realtor_neighborhoods"> <SimpleData name="OBJECTID">81</SimpleData> <SimpleData name="NBRHOOD">Telegraph Hill</SimpleData> <SimpleData name="SFAR_DISTR">District 8 - Northeast</SimpleData> </SchemaData></ExtendedData> <Polygon><outerBoundaryIs><LinearRing><coordinates>-122.41041847319012,37.805924016582715,0 -122.407203813674,37.806324902060979,0 -122.40667792852096,37.803710121958744,0 -122.40348255423899,37.804117462290641,0 -122.40237202127015,37.798540648764529,0 -122.40876046662795,37.797723222540775,0 -122.41041847319012,37.805924016582715,0</coordinates></LinearRing></outerBoundaryIs></Polygon> <Style><LineStyle><color>ff0000ff</color></LineStyle> <PolyStyle><fill>0</fill></PolyStyle></Style> </Placemark> </Folder></Document></kml>
도형 파일의 메타데이터가 보존된 Schema
및 SimpleData
요소를 확인할 수 있습니다. ExtendedData 사용 및 맞춤 데이터 보존에 관한 자세한 내용은 맞춤 데이터 추가에 관한 KML 개발자 가이드 섹션을 확인하세요.
다음 단계
GDAL/OGR은 엄청난 성능을 제공합니다. 가장 간단한 구현 방식에서는 Google 어스, 지도 또는 기타 KML 지원 지리 브라우저에서 사용할 수 있도록 모든 데이터를 KML로 변환할 수 있습니다. 또한 GDAL/OGR 라이브러리를 애플리케이션에 통합하여 GIS 데이터를 KML로 자동 변환하고 전환 출력을 제어할 수 있습니다. 이를 libKML과 결합하여 KML 생성 방식을 더욱 세부적으로 관리할 수 있습니다.