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
상당히 단순해진 모양을 볼 수 있는데, 대략 사용되는 값은 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 기반으로 구성되어 있어, 큰 문제 없이 실행하실 수 있을 겁니다.
![](https://t1.daumcdn.net/cfile/tistory/202085484D6A5B700A)