• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

'2011/02'에 해당되는 글 1건

  • 2011.02.27 KML to GPX 변환

KML to GPX 변환

기술자료/ETC 2011. 2. 27. 23:10

ConvertKML2GPX.zip

Google Map 혹은 Google Earth를 사용하면, 현재 찾은 위치값을 별도로 저장하는 방법을 제공합니다. 이 때 사용하는게 KMZ 혹은 KML 입니다. 위치 정보를 XML 형식으로 저장만 한 것이 KML 이고, 이를 압축한 것이 KMZ이더군요. 여기서는 압축해제 기능은 없으므로, KML을 중심으로 바라보도록 하겠습니다.

Google Earth를 통해 특정 위치를 저장하게 다음 대략 다음과 같은 Format의 데이터를 볼 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>기온 거리 입구.kml</name>
    <Style id="sn_ylw-pushpin12">
        <IconStyle>
            <scale>1.1</scale>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
            </Icon>
            <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
        </IconStyle>
    </Style>
    <StyleMap id="msn_ylw-pushpin0">
        <Pair>
            <key>normal</key>
            <styleUrl>#sn_ylw-pushpin12</styleUrl>
        </Pair>
        <Pair>
            <key>highlight</key>
            <styleUrl>#sh_ylw-pushpin6</styleUrl>
        </Pair>
    </StyleMap>
    <Style id="sh_ylw-pushpin6">
        <IconStyle>
            <scale>1.3</scale>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
            </Icon>
            <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
        </IconStyle>
    </Style>
    <Placemark>
        <name>기온 거리 입구</name>
        <LookAt>
            <longitude>135.7768254558997</longitude>
            <latitude>35.00373926533617</latitude>
            <altitude>0</altitude>
            <heading>-0.0001637968873225001</heading>
            <tilt>0</tilt>
            <range>639.2308830322888</range>
            <altitudeMode>relativeToGround</altitudeMode>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
        </LookAt>
        <styleUrl>#msn_ylw-pushpin0</styleUrl>
        <Point>
            <altitudeMode>absolute</altitudeMode>
            <coordinates>135.7771083872684,35.00372287912489,46.1143527964634</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>

이 값을 GPX로 변경해주는 사이트가 있는데, 그 사이트를 통해 변환해 보면, 대략 다음과 같이 표시됩니다.
http://www.gpsvisualizer.com/convert?output

<?xml version="1.0" ?>
- <gpx creator="GPS Visualizer http://www.gpsvisualizer.com/" version="1.0" xmlns="http://www.topografix.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
- <wpt lat="35.003722879" lon="135.777108387">
  <ele>46.1143527964634</ele>
  <name>기온 거리 입구</name>
  <sym>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</sym>
  </wpt>
  </gpx>

상당히 단순해진 모양을 볼 수 있는데, 대략 사용되는 값은 lat, lon, ele 그리고 name과 sym입니다. 굳이 내용을 살펴보면

latitude 라는 값, longitude 라는 값과 함께, element 값으로 구성된 좌표 정보와, 이 좌표에 대한 이름, 그리고 이 위치 값을 표시하기 위한 아이콘 이미지 위치(보통 URL)값으로 변한 것을 볼 수 있습니다.
이 중 latitude, longitude, element 값을 가져 올 때, /Document/Placemark/Point/coordinates 에 담긴
값을 사용하면 됩니다. 그 외에 /Document/Placemark/Point/name 에 있는 값을 name 으로 사용하면 됩니다.
마지막으로 아이콘은 /Document/Style/IconStyle/Icon/href 안의 값을 사용하면 됩니다.

이 작업은 Xml의 XPath를 통해 필요한 데이터를 조회하면 됩니다.
단지 문제는 namespace 부분만 고려해서 구성하면 됩니다.

이 자료의 소스는 여기의 첨부파일로 등록하였습니다. 이 자료는 Visual Studio 2010 으로 되어 있읍니다.
실행하면, 특정 폴더를 선택하면, 그 폴더에 있는 모든 KML 파일들을 읽고 그 안의 이름대로 GPX 파일을 생성하는 것입니다. 자세한 내용은 안의 소스를 참고하시면 됩니다. 또한 이 모든 것은 .NET Framework 2.0 기반으로 구성되어 있어, 큰 문제 없이 실행하실 수 있을 겁니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

  • «
  • 1
  • »
250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2011/02   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28

Visual Studio Tutorial 지름신 매뉴얼 me2dayzm 수 인터파크 moss 좀 SharePoint 것 친구 불만 windows 비스킷 오류 me2photo me2sms Buscuit Google Apps Engine WSS MOSS 2007 개발환경 java 블로그 twi2me Azure 2010 e-book 협업

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바