시각화/프로세싱

▶ Processing :: 프로세싱 배우기 :: api의 위도경도 데이터 불러오기

비주얼라이즈 2014. 4. 1. 01:12



Processing :: 프로세싱 배우기

#2 api의 xml 데이터 수집하기








오늘 소개하고자하는 것은

프로세싱에서 api의 xml데이터를 수집하는 것입니다.



이번 포스팅에서는

서울시 공공데이터포털 사이트의 api를 이용하여

정보를 호출한 뒤, 호출된 xml을 프로세싱에서 불러오는 과정을 소개합니다.









1. api로 데이터 호출하기



순서는 이렇게 진행됩니다.

서울열린데이터광장 - api받기 - api로 데이터호출

   [api 사용방법 게시글 바로가기]  







2. 호출한 데이터 살펴보기






[api로 받아온 xml의 모습]



받아온 데이터를 살펴볼까요?


얻고자하는 위, 경도 데이터는

<row>태그안의 <LAG>,<LAT>태그 속에 있습니다.

이를 잘 기억하고, 프로세싱을 실행해줍니다^^










3. 프로세싱에서 필요한 데이터만 가져오기







XML xml;

xml = loadXML("http:http://openapi.seoul.go.kr:8088/*********/xml/GeoInfoLibraryWGS/1/123/")

( ****는 api key가 들어가는 자리입니다.)

 loadXML()로 데이터를 프로세싱으로 불러옵니다.



데이터를 불러오셨다면

아까 살펴보았던대로 

<row>속 <LAT>,<LNG>태그의 값만 선택해야겠지요?




xml[] children = xml.getChildren("row");

먼저, xml파일 속 <row>태그를 불러옵니다.





그다음으로는, <row>태그 속의

<LAT>, <LNG>값을 불러옵니다.




for (int i = 0; i < children.length; i++) {

XML latElement = children[i].getChild("LAT")

<row>태그가 들어있는 [children]에서

다시 LAT(위도)값만 [latElement]안에 담아줍니다.





여기까지 진행 한 후

결과를 살펴보겠습니다.




결과를 보면 위도만 출력되는 것이아니라

<LAT>위도</LAT>형태로 출력되고 있습니다.





위도 데이터만 출력하기위해

아래와 같이 바꾸어주었습니다.



for (int i = 0; i < children.length; i++) {

XML latElement = children[i].getChild("LAT")

String lat = latElement.getContent();

이렇게 바꾸면 LAT데이터만 출력됩니다.




마찬가지로,

경도(LNG)데이터도 같은 방법으로 수집해줍니다.





XML lngElement = chidlren[i].getChild("LNG")

String lng = lngElement.getContent();


println(lat, lng);

}


for 반복구문을 사용하여 

children[i]의 길이만큼 반복되게하여

모든 도서관의 위경도 데이터값을 받아오게 하였습니다.





이와같이 원하는 형태의

위, 경도값을 받아왔습니다.




이를 이용하면

쉽게 바로바로 데이터를 활용하여

적용해볼 수 있을 것 같습니다^^