요즘 시애틀에 Windows Live Platform 교육 다녀온 이야기를 열혈 포스팅 중인데요.
사진이 많은 관계로 티스토리 에디터에서 직접 포스팅 안하고, Windows Live Writer를
이용해서 포스팅하고 있습니다.

사진 추가도 탐색기에서 드래그앤 드랍으로 그냥 넣으면 되고,
보여주기 기본 사이즈도 옵션으로 정해 놓고 사용가능해서 손이 덜 가네요.

미처 회전 안해 놓은 사진은 Writer에서 직접 회전시키는 것도 가능하네요.


세피아 톤 처리 등의 간단한 이펙트도 가능하고, 워터마크 삽입도 가능하답니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Windows Live Writer

코멘트를 남겨 주세요. (Write your message and submit)

잘~ 다녀오겠습니다.

Posted 2008/02/16 00:54 by 길버트

저는 16일 오후 비행기로

Windows Live 관련 교육을 받으러 마이크로소프트 본사로 떠납니다.


교육의 정식 명칭은 [Microsoft Windows Live Platform Partner Airlift]이구요

Ben Williams란 분이 모든 세션을 진행합니다. 스테미너가 대단하시네요!

교육과정의 일부는 1.0이긴 해도 실버라이트와 관련되어 있습니다.

그리고 Live서비스니, 당연히 버추얼 어스도 포함되어 있습니다.

교육 과정의 Agenda를 첨부합니다. 관심이 있으신 분은 참고 하십시오.


교육 다녀와서 배운 것을 많이 알릴 수 있었으면 좋겠습니다.

또 그만큼 알찬 교육이 되었으면 하는 바램 또한 있습니다.

(하지만 영어로 교육 받는 거라서 다소 부담은...)



실버라이트 카페 쥔장 '패러다임'님 세션이 정말 괜찮은 세션이라는 소문이 파다하네요.

한층 업그레이드 된 '공도님' 세션도 정말 기대되구요.

2008년 새로운 시삽을 맡으신 오일석님의 '플래시 개발자의 눈으로 본(?) 실버라이트' 세션도

정말 괜찮다고 하니, 시간되시는 분들은 꼭 참석해 보시길 바랍니다.


이번 세미나 저도 정말 가고 싶은 세미나인데, 아쉽습니다.

다시 돌아와서 건강한 모습으로 뵙겠습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Silverlight, Virtual Earth, Windows Live 교육, 훈스닷넷 세미나

  1. 비밀댓글 입니다

    | 2008/02/16 22:39 | PERMALINK | EDIT | REPLY |
  2. BlogIcon 길버트

    응~ 잘다녀올게~ ^^

    | 2008/02/17 23:08 | PERMALINK | EDIT |
코멘트를 남겨 주세요. (Write your message and submit)

Windows Live Writer를 이용한 첫 포스트

Posted 2008/01/24 21:12 by 길버트

Editor 자체는 웹상의 그것들보다 덜 리치한 듯한 느낌입니다.
글자 색 바꾸는 아이콘이 외부로 노출되어 있지 않은 것은 왜일까요?
그건 좀 불편하네요. 이제 시작이니 점점 개선이 되겠지요!

눈에 띄는 기능은 단연 지도삽입기능.
버추얼 어스의 맵이 들어갑니다.
Road, Aerial 타입의 맵만 가능하고 Hybrid 타입의 맵을 지원하지 않네요. 아쉽습니다!


보고 계시는 곳은 제가 다음 달에 교육 받으러 갈,

Microsoft Campus입니다. 워싱턴주 시애틀에 있습니다.


표넣는 기능 편한데 이쁘진 않네요.

1 2 3
4 5 6
7 8 9

맞춤법 검사 기능도 있고.


위 사진이 Windows Live Writer를 사용하고 있는 모습입니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Microsoft Campus, Virtual Earth, Windows Live Writer, 버추얼어스

  1. 건태

    아직 쓰기 좀 그렇더라.^^

    | 2008/01/25 19:27 | PERMALINK | EDIT | REPLY |
  2. BlogIcon 이과장

    후덜덜 너무너무 부러버여 ㅜ.ㅜ

    나.. 나도 교육쫌... -_-;;

    | 2008/01/28 12:36 | PERMALINK | EDIT | REPLY |
코멘트를 남겨 주세요. (Write your message and submit)

카페에 어떤 분의 질문에 답변 글로 올린 글인데 블로그로 옮겨왔습니다.

경도, 위도 (GPS 정보 따위)를 알고 있을 때, 그것을 지도 이미지 상의 어떤 위치에
매핑을 하기 위해서는

일단
1) 사용하시려고하는 소스, 즉 맵타일 이미지가 어떤 기준을 가지고 만들어졌느냐?
2) 그리고 어떤 도법에 의해서 그려진 지도인가?
를 아셔야 합니다.

버추얼 어스(이하 VE)를 예로 들어 설명해 보겠습니다.


- VE 맵타일 하나는 256 pixel x 256 pixel로 이루어져 있습니다.

- VE 맵 중심점은 위도 0도, 경도 0도입니다.


현재 화면의 지도상태를 ZoomStep 2단계라고 가정하면, 지도이미지는 4x4의 타일로 구성되어 있습니다.

(VE의 ZoomStep 1단계는 세계지도를 2x2의 타일로 표현한 것입니다. VE는 19단계의 ZoomStep을 지원합니다.)

이때 전체 맵 크기는 가로, 세로 256 pixel * 4 = 1024 pixel 입니다.

간단히 생각해 보면.

가로 1024pixel을 경도 360도( -180(=서경180) ~ 180(=동경180)로 나눠쓰고 있고,

세로 1024pixel을 위도 180도(90 (북반구) ~ -90 (남반구))로 나눠쓰고 있다고 생각할 수 있습니다.


이 지도 위에 인천 공항의 위치를 점으로 찍으려면 어떻게 하면 될까요?

먼저, 인천 공항의 경도와 위도를 알아야 합니다.

경도는 126도 36분 30초 입니다.
(편의를 위해 '도' 단위로 나타내겠습니다. 126 + 36 * 1/60 + 30 * 1/3600 =  126.6083도)

위도는 37도 28분 20초 입니다.
(편의를 위해 '도' 단위로 나타내겠습니다. 37 + 28 * 1/60 + 20 * 1/3600 =  37.4722도)


또, 지도의 중심이 경도 0, 위도 0 이고,
지도의 왼쪽이 경도 -180, 오른쪽이 180
지도의 위쪽이 위도 90, 아래쪽이 -90이라는 조건에 의해,
변환식은 아래와 같을 것입니다.

X = W *  (180 + 경도) / 360
Y = H *  (90 - 위도) / 180


X : 지도 이미지 상의 X좌표
Y : 지도 이미지 상의 Y좌표
W : 지도 이미지의 전체 폭
H : 지도 이미지의 전체 높이

위 공식에 따라서 계산을 해보면,

X = 872.130275555556 pixel = 872 (소수점 이하 반올림)

Y = 298.824817777778 pixel = 299 (소수점 이하 반올림)


하지만 간과하면 안 되는 점이 하나 있습니다.

아까도 말씀드렸듯이 어떤 도법으로 그려진 것인지가 중요합니다.


- VE는 메르카토르 도법으로 그려진 지도 입니다.


여기서 새로 고려해야만 하는 사실은 지도이미지가 실제로는 위도 85.05도 ~ -85.05도까지의 범위를 그려놓은 것이라는 점입니다.

즉, 지도이미지 상의 좌표(512, 0)는 경도 0도 위도 85.05도 입니다.
게다가 Y방향으로는 선형관계(Linear)를 갖지 않습니다.

변환식의 수정이 필요하겠죠?
변환식을 수정하고 재계산 해보시면 다른 값이 나올 것입니다.

변환식이 어떻게 바뀌어야 하는지는,
자세한 내용은 http://gilverlight.net/2693를 참조하십시오.


이 정도 생각해 보시면,

어떤 타일이 얼마만큼의 경도, 위도 범위를 표현하는지, 

    LeftTop(경도1, 위도1), RightBottom(경도2, 위도2)

어떤 지점(경도, 위도)이 어떤 타일 위에 존재하는지 계산하는 것은 쉬울 것입니다.

지도이미지 상 좌표가 X = 872, Y = 299라고 가정하면

왼쪽 맨위의 맵타일이 (0, 0)의 인덱스를 갖는 2차원 배열로 가정해서 생각해보면,

아래와 같이 인덱스를 구할 수 있을 겁니다.

XIndex = Math.Floor( X / 단위 맵타일 폭 )

YIndex = Math.Floor( Y / 단위 맵타일 높이 )

Math.Floor(872 / 256) = 3

Math.Floor(299 / 256) = 1

(3, 1)에 해당하는 맵타일 위가 되겠군요.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : GIS, gps, maps.live.com, Windows Live, 메르카토르도법, 버추얼어스

코멘트를 남겨 주세요. (Write your message and submit)

Windows Live 이벤트, 경품이 혼다 시빅 등등

Posted 2008/01/24 15:06 by 길버트
사용자 삽입 이미지

마이크로소프트가 윈도우 라이브 홍보를 꽤 오래 전부터 해오고 있었군요.
시빅이나 LCD TV 등의 고가 경품도 많이 거는 등 투자를 많이 하네요.

위 그림을 클릭하시거나 아래 링크를 클릭하시면
행사 상세 페이지로 이동하실 수 있습니다.

http://windowslive.msn.co.kr/mktg/?authkey=WinLive12121103318160669


이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : LCDTV, Windows Live, 경품이벤트, 시빅

코멘트를 남겨 주세요. (Write your message and submit)

Windows Live 교육을 받으러 가게되었습니다.

Posted 2008/01/24 10:42 by 길버트
Windows Live ID

마이크로소프트의 지원을 받아 2월 3째주에 미국 시애틀에 있는 마이크로소프트 본사로
Windows Live 관련 교육을 다녀오게 되었습니다.

Windows Live 서비스 중 특히 Virtual Earth 쪽에 관심을 가지고 있었는데요.
이런 좋은 기회를 주신 김대우 과장님께 감사를 드립니다.

아 더불어 교육 같이 다녀올 넥슨의 이준홍씨와 함께
훈스닷넷에서 Windows Live 부문 2008년도 시삽으로 활동하게 되었습니다.

교육을 다녀온 후에는 준홍씨랑 MSDN 세미나도 해야하는 의무도 있지만,
덕분에 2008년은 어느 해보다 활기 찰 것 같습니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : Virtual Earth, Windows Live

코멘트를 남겨 주세요. (Write your message and submit)
Web Service URL

http://www.webservicex.com/airport.asmx



Method

제공하는 4개의 메서드는 다음과 같습니다.

getAirportInformationByAirportCode - Airport Code를 이용한 정보 열람

getAirportInformationByCityOrAirportName - 공항이름을 이용한 정보 열람

GetAirportInformationByCountry - 국가명을 이용한 정보 열람

getAirportInformationByISOCountryCode - ISO 3166 의 Country Code에 따른 정보 열람.


Example1

인천공항의 Airport Code는 JCN입니다.

JCN을 입력하여 getAirportInformationByAirportCode 메서드를 호출한 결과는 다음과 같습니다.

<string>
<NewDataSet>
  <Table>
    <AirportCode>JCN</AirportCode>
    <CityOrAirportName>INCHEON HLPT</CityOrAirportName>
    <Country>Korea (South)</Country>
    <CountryAbbrviation>KR</CountryAbbrviation>
    <CountryCode>778</CountryCode>
    <GMTOffset>-9</GMTOffset>
    <RunwayLengthFeet>0</RunwayLengthFeet>
    <RunwayElevationFeet>0</RunwayElevationFeet>
    <LatitudeDegree>37</LatitudeDegree>
    <LatitudeMinute>28</LatitudeMinute>
    <LatitudeSecond>20</LatitudeSecond>
    <LatitudeNpeerS>N</LatitudeNpeerS>
    <LongitudeDegree>126</LongitudeDegree>
    <LongitudeMinute>36</LongitudeMinute>
    <LongitudeSeconds>30</LongitudeSeconds>
    <LongitudeEperW>E</LongitudeEperW>
  </Table>
  <Table>
    <AirportCode>JCN</AirportCode>
    <CityOrAirportName>INCHEON HLPT</CityOrAirportName>
    <Country>Korea (South)</Country>
    <CountryAbbrviation>KR</CountryAbbrviation>
    <CountryCode>778</CountryCode>
    <GMTOffset>-9</GMTOffset>
    <RunwayLengthFeet>0</RunwayLengthFeet>
    <RunwayElevationFeet>0</RunwayElevationFeet>
    <LatitudeDegree>37</LatitudeDegree>
    <LatitudeMinute>28</LatitudeMinute>
    <LatitudeSecond>20</LatitudeSecond>
    <LatitudeNpeerS>N</LatitudeNpeerS>
    <LongitudeDegree>126</LongitudeDegree>
    <LongitudeMinute>36</LongitudeMinute>
    <LongitudeSeconds>30</LongitudeSeconds>
    <LongitudeEperW>E</LongitudeEperW>
  </Table>
</NewDataSet>
</string>

Example2

ISO 3166 에 따르면 대한민국의 국가 코드는 KR, KOR, 410입니다.
앞에서 부터 두자표시, 세자표시, 숫자로 표시할 때입니다.

참고 : ISO 3166 Codes (Countries)

두자표시를 사용하면 네번째 메서드를 이용하실 수 있습니다.
getAirportInformationByISOCountryCode

아래는 호출 결과입니다.
양이 너무 많아서 일단 가려 놓도록 하겠습니다.
한국 내의 모든 공항이 출력됩니다.

more..


이올린에 북마크하기(0) 이올린에 추천하기(0)

Tag : maps.live.com, Virtual Earth, 버추얼어스, 웹서비스

코멘트를 남겨 주세요. (Write your message and submit)

Virtual Earth의 지도 이미지들을 이용한 실버라이트 어플리케이션을 만들기 위해서
요즘 한참 공부하고 있습니다.

며칠 전에는 어느 정도 구현이 끝나서, 서울을 화면에 띄워 보려고,
경도 127도(E), 위도 37도 3분 을 입력했더니, 한반도 북부가 화면 중심에 뜨는 겁니다.
위도를 20도 정도로 입력을 했더니, 그제서야 서울이 보이는 겁니다.

엥? 왜이럴까?
지도 이미지 상에서의 위치가 위도와 정비례 한다고 가정하고 구현했기 때문에 맞지가 않는 거였습니다.

구글링으로 Virtual Earth가 사용한 도법이 'mercator projection'이라는 것을 알아냈습니다.

사용자 삽입 이미지

Wiki에서 찾은 자료로 이 문제를 해결할 수 있었습니다.
원문 : http://en.wikipedia.org/wiki/Mercator_projection

중간의 계산은 생략하고,
지도의 수직적 위치 y와 위도 φ (파이) 사이에는 다음과 같은 관계가 있습니다.

y = ln(tan(φ) + sec(φ))    .... (1)

φ = tan-¹(sinh(y))           .... (2)


(1)번 식을 C# 코드로 표현하면, 아래와 같습니다.

// dVerticalPosition = PI ~ - PI
double dRad = AngleToRadian(dLatitude);
double dVerticalPosition = Math.Log(Math.Tan(dRad) + 1 / Math.Cos(dRad));  
   


dLatitude : 위도 [단위 : 도]
dRad : 위도 [단위 : Radian]


(2)번 식은 아래와 같습니다.

double dRad = Math.Atan(Math.Sinh(dVerticalPosition));
double dLatitude = RadianToAngle(dRad);

dLatitude : 위도 [단위 : 도]
dRad : 위도 [단위 : Radian]


이때 알아두셔야 할 점은 위도가 90나 -90일 때는 엄청나게 큰 dVerticalPosition 값을 가지게 되어,
90일 때는 Infinity(무한대), -90일 때는 -Infinity(-무한대)를 가지게 됩니다.

따라서 어느 정도 제한이 있어야 하는데요.

위도의 최대 값은 y value가 π 값을 가질 때인,
dVerticalPosition = +/- 85.0511287798066로 한다고 합니다.


버추얼어스에서 보여주는 지도의 꼭대기 부분은 위도가 90도가 아니라
85.0511287798066도 였던 것입니다.


위에서 계산한 dVerticalPosition(π ~ -π)은 다음과 같이 사용할 수 있습니다.
지도 이미지 높이가 MAP_HEIGHT라 가정하면

dPosY =  (1 -