Basilica android

sharku.egloos.com



안드로이드 위치정보 가져오기 (2) - 구글어스와 연동 by sharku

구글 어스와 연동되게 하겠습니다...

이전 글을 읽고왔다면 추가로 준비해야 할 사항은
구글어스를 다운받는 것입니다


  1. import re, time, sys, os
  2.  
  3. def pars(a):
  4.         f = open(a)
  5.         print '[+] I got a file! '
  6.         l = []
  7.         for line in f:
  8.                 l.append(line.strip())
  9.         d = []
  10.         i = 0
  11.         print '[+] Parsing...'
  12.         for i in l:
  13.                 c = re.findall('[0-9]{13}', i)
  14.                 if c:
  15.                         d.append(time.ctime(int(c[0])/1000))
  16.                 c = re.findall('mLongitude=([0-9]{0,3}.[0-9]{7})', i)
  17.                 if c:
  18.                         d.append(c[0])
  19.                 c = re.findall('mLatitude=([0-9]{0,3}.[0-9]{7})', i)
  20.                 if c:
  21.                         d.append(c[0])
  22.         f.close
  23.         return d
  24.                
  25. def makeKML(d):
  26.         k= 0
  27.         kml = ''
  28.         print '[+] Making \'kml\' file...'
  29.         for i in d :
  30.                 if(k%3 == 0):
  31.                         kml = kml + '<Placemark>\n<name>' + str(i) + '</name>\n<Point>\n<coordinates>'
  32.                 if(k%3 == 1):
  33.                         kml = kml + str(i) + ','
  34.                 if(k%3 == 2):
  35.                         kml = kml + str(i) + '</coordinates>\n</Point>\n</Placemark>\n'
  36.                 k = k + 1
  37.         kml = '<?xml version="1.0" encoding="UTF-8"?>\n<kml xmlns="http://www.opengis.net/kml/2.2">\n<Document>\n' + kml + '</Document>\n</kml>'
  38.         return kml
  39.  
  40. = open('Print.kml','w')
  41. g.write(makeKML(pars(sys.argv[1])))
  42. print '[*] Completed : Print.kml'
  43. g.close()


이렇게 실행하면

이런 결과가 나옵니다..
오류 검사도 없으면서 + , - 구문을 달아놨네요 ㅋ
실패하든 성공하든 저 문장은 뜨게 되어있습니다... ㅋ

텍스트파일만 제대로 된거라면 성공안될리는 없습니다..

그렇다면 
이런 파일이 생성됩니다
저 아이콘은 구글어스와 연동된다는 표시입니다.. ㅎ
열어보시면 대략 어떤 xml 표현식이 사용됐는지 알 수 있습니다..

그리고 저 아이콘을 더블클릭 하게 되면
구글어스가 열리면서 노란색 핀셋모양으로 위치를 표시해줍니다.

이렇게 알아봤구요.. 이 파싱으로 여러가지 연동이 가능합니다..
파싱의 기본적인 틀이 시간, 위도, 경도만 빼내는 것이기에 약간만 수정하면
여러가지 파싱도 가능합니다..
다음번에도 비슷한 무선환경에 대해서 알아보겠습니다..

코드를 자세히보면 if 구문을 많이 사용한 부분이 있습니다
2중 배열로 쓰면 깔끔하게 될것도 같은데
방법을 몰라서 못쓰고 있습니다
아시는분은 조언 부탁려요 ㅋ

덧글

  • 냥초 2013/07/22 16:37 #

    python을 잘 몰라서 그러지만

    for i in d : 가 c언어의 for(i=0; i<d; i++)에 해당하는 코드라면,

    k를 굳이 사용해야 될 필요성이 안느껴집니다!
  • sharku 2013/07/22 23:08 #

    네.. 저기서 i 는 int 형이 아닙니다 ㅎ 조언 감사해요 ㅎ
※ 로그인 사용자만 덧글을 남길 수 있습니다.