2016년 3월 7일 월요일

[안드로이드] 공공데이터 기차역 정보 조회 서비스 API 사용 [1]













공공데이터 data.go.kr의 열차 정보 서비스를 조회하여,



해당 역의 이름과 코드를 받아와 (운임 시간, 기차 종료, 가격)


정보 서비스를 구현 하는 것이 목표입니다.




우선 첫 번째로, 기차역의 역이름과 코드 이름을 받아서 설정해 두어야 합니다.



첫 번째로 필요한 것이


Data.go.kr 에서 회원 가입후, API 사용 신청서를 제출 해야합니다.





















사이트에서 열차정보 서비스를 치시면 해당 서비스가 나오게됩니다.





























설명서가 담긴 docx 파일도 잇구요,




활용 신청을 누르시면 아래 그림으로 넘어가게 됩니다.























다음과 같이 신청된 상태로 되게 됩니다.


관리자가 승인을 해줘야 그 다음 부터 api 키를 받아서 쓸 수 있어요~









다음은 설명서 파일의 내용입니다.










api 웹 주소 입력시, 다음과 같은 명령어가 어떤 기능을 하는지에 대한 설명입니다.












다음은 요청에 대한 응답 메세지 입니다~




저런 식으로 정보를 얻을 수 있는 것이지요~





일단 운행 정보를 알려면, 기차역 정보를 알아야합니다.










문서 파일에 있는 지역 코드 번호입니다. 


이 정보를 토대로 지역에 있는 기차역을 조회할 수 있습니다.



운행 정보를 위해 알아야 될 것은


기차역마다 부여된 기차 코드들입니다.


NAT010000 인데,  이런 식으로 부여 된 코드들이 필요합니다.


getCityAcctoTrainSttnList 를 통해서 역 코드 정보를 얻은 다음에


getStrtpntAlocFndTrainInfo 를 통해서 역과 역사이 운행 정보를 요청 하면 됩니다.



우선 역과 역 코드 정보를 작성, 휴대폰 내부에 txt파일을 만든 소스입니다.


그 다음은 내부 txt코드를 통하여 







MainActivity.java
public class MainActivity extends ActionBarActivity {
    private StationInfo fi;
    TrainInfo temp;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        temp = new TrainInfo();
    }

}



TrainInfo.java
public class TrainInfo extends Thread {


    private StationInfo fi;


    TrainInfo()
    {
        path = Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"/TEST_TEXT_WRITE";
//        path = this.m.getFilesDir()+File.separator+"/TEST_TEXT_WRITE";
        run();
    }

    int ctCode[] = {11,21,22,23,24,25,26,31,32,33,34,35,36,37,38}; // 지역 코드 정보 조회
    private ArrayList connectServer(int citycode) {

        ArrayList list = new ArrayList();
        if(android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

        }
        try {

            String key = "할당 받은 키 값을 입력하시면 됩니다.";

            URL url = new URL("http://openapi.tago.go.kr/openapi/service/TrainInfoService/getCtyAcctoTrainSttnList?ServiceKey=" + key +
                    "&cityCode="+citycode);

            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

            XmlPullParser parser = factory.newPullParser();

            parser.setInput(url.openStream(), null);

            int parserEvent = parser.getEventType();
            while (parserEvent != XmlPullParser.END_DOCUMENT) {
                if(parserEvent == XmlPullParser.START_TAG) {

                    String tagName = parser.getName();

                    if(tagName.equals("nodeid")) {
                        fi = new StationInfo();

                        fi.setStationCode(parser.nextText());

                        parserEvent = parser.next();
                        tagName = parser.getName();
                    } if(tagName.equals("nodename")) {
                        fi.setStationName(parser.nextText());
                        list.add(fi);
                    }
                }
                parserEvent = parser.next();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return list;
    }


    @Override
    public void run() {
        super.run();
        for(int i = 0; i < ctCode.length; i++) {
            ArrayList temp = connectServer(ctCode[i]);
            for(int j = 0; j < temp.size(); j++)
            {
                onTexStationNameWriting(temp.get(j));
                onTexStationCodetWriting(temp.get(j));
            }
        }
    }

    private String path;
    private void onTexStationNameWriting(StationInfo temp) {
        File file;
        file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        file = new File(path + File.separator + "InfoTrainStation" + ".txt");
        try {
            BufferedWriter buw = new BufferedWriter(new FileWriter(file,true));


            buw.write(temp.getStationName());
            buw.newLine();
            buw.close();
        } catch (IOException e) {

        }
    }


    private void onTexStationCodetWriting(StationInfo temp) {
        File file;
        file = new File(path);
        if (!file.exists()) {
            file.mkdirs();
        }
        file = new File(path + File.separator + "InfoTrainStationCode" + ".txt");
        try {
            BufferedWriter buw = new BufferedWriter(new FileWriter(file,true));


            buw.write(temp.getStationCode());
            buw.newLine();
            buw.close();
        } catch (IOException e) {

        }
    }
}


StationInfo.java
public class StationInfo {
    String stationCode;
    String stationName;


    public String getStationCode() {
        return stationCode;
    }

    public void setStationCode(String stationCode) {
        this.stationCode = stationCode;
    }

    public String getStationName() {
        return stationName;
    }

    public void setStationName(String stationName) {
        this.stationName = stationName;
    }
}

xml의 경우에는 딱히 작성한 것이 없어서 적지 않겠습니다.



아래는 이 정보를 토대로, 정렬을 통해 Text를 만든 정보 입니다.




다음 포스팅에선 이 텍스트 정보를 토대로



운임 정보까지 조회하는 것으로 구성하겠습니다.




InfoTrainStation.txt
서울
남영
용산(서울)
노량진
대방
신길
영등포
신도림
구로
가산디지털
독산
시흥
중랑
망우
구일
개봉
오류동
온수
신촌
가좌
수색
효창
서강
이촌
서빙고
한남
옥수
응봉
왕십리
청량리
회기
외대앞
신이문
석계
성북
월계
녹천
창동
방학
도봉
도봉산
신공덕
화랑대
이문
선릉
한티
도곡
개포동
대모산입구
수서
복정
남태령
화명
구포
사상
부산진
부산
범일
부전
거제
남문구
동래
안락
재송
수영
우일
해운대
송정
기장
일광
좌천
월내
주례
가야
우암
신선대
대구
동대구
고모
가천
동촌
금강
반야월
인천공항
부개
부평
백운
동암
간석
주안
도화
제물포
도원
동인천
인천
임곡
하남
북송정
송정리-광주
효천
서광주
동송정신호
광주
극락강
신탄진
회덕
대전조차장
대전
세천
서대전
가수원
흑석리
원정
서생
남창
덕하
태화강
효문
호계
온산
장생포
울산항
울산
석수
관악
안양
명학
금정
군포
의왕
성균관대
화서
수원
세류
병점
오산
송탄
서정리
평택
도농
덕소
팔당
능내
양수
신원
국수
아신
양평
원덕
용문
지평
석불
구둔
매곡
양동
판대
역곡
소사
부천
중동
송내
화전
강매
행신
능곡
대곡
곡산
백마
일산
탄현
운정
금릉
금촌
월롱
파주
문산
운천
임진강
도라산
망월사
회룡
의정부
의정북부
주내
덕정
지행
동두천
동안
소요산
초성리
한탄강
전곡
연천
신망리
대광리
신탄리
퇴계원
사릉
금곡
평내호평
마석
대성리
청평
상천
가평
대정
원릉
삼릉
벽제
일영
장흥
온릉
송추
산본
수리산
대야미
반월
상록수
한대앞
중앙
고잔
공단
안산
신길온천
정왕
오이도
범계
평촌동
인덕원
과천청사
과천
대공원
경마공원
선바위
경원대
이매
태평
모란
야탑
서현
수내
정자
미금
오리
지축
삼송
원당
화정
백석
마두
정발산
주엽
대화
광명
고양기지
간현
동화
만종
원주
유교
반곡
금교
치악
창교
신림
경강
백양리
강촌
김유정
남춘천
춘천
동점
철암
백산
통리
심포리
흥전
나한정
도계
고사리
하고사리
마차리
신기
상정
미로
도경리
동해
묵호
망상해
망상
옥계
정동진
안인
강릉
별어곡
선평
정선
나전
아우라지
구절리
추암
삼척해변
삼척
쌍용
연당
청령포
영월
탄부
연하
석항
예미
함백
조동
자미원
증산
사북
고한
추전
태백
문곡
동백산
묵호항
삼화
부강
매포
옥천
이원
지탄
심천
각계
영동
황간
추풍령
연교
구학
봉양
제천조차장
제천
고명
삼곡
도담
단양
단성
죽령
오송
청주
오근장
청주공항
내수
증평
도안
보천
음성
소이
주덕
달천
충주
목행
동량
삼탄
공전
장락
송학
입석리
청주오송
성환
직산
두정
천안
소정리
전의
전동
서창
조치원
내판
계룡
신도
개태사
연산
부황
논산
채운
강경
아산
모산
온양온천
신창
학성
선장
도고온천
신례원
예산
오가
삽교
화양
홍성
신성
광천
원죽
청소
주포
주교
대천
남포
웅천
간치
주산
판교
기동
장항
서천
삼산
장항
춘장대
연무대
천안아산
용동
함열
다산
황등
익산
부용
와룡
김제
감곡
신태인
초강
정읍
천원
노령
동익산
춘포
삼례
동산
송천
전주
아중
신리
죽림온천
관촌
임실
오류
봉천
오수
서도
산성
남원
주생
옹정
금지
오산리
임피
대야
개정
군산화물
옥구
북전주
백양사
신흥리
안평
장성
옥정
노안
나주
다시
고막원
함평
무안
몽탄
일로
임성리
동목포
목포
곡성
압록
구례구
봉덕
괴목
개운
동운
동순천
순천
성산
율촌
신풍
덕양
여천
미평
만성
여수EXPO
흥국사
적량
초남
황길
태금
광양항
진상
옥곡
골약
광양
평화
원창
구룡
벌교
조성
예당
득량
보성
광곡
명봉
도림
이양
입교
석정리
능주
만수
화순
앵남
남평
신암
직지사
김천
대신
아포
구미
사곡
약목
왜관
연화
신동
지천
경산
삼성
남성현
청도
신거
희방사
풍기
안정
북영주
영주
문수
승문
평은
옹천
마사
이하
서지
안동
무릉
운산
단촌
업동
의성
비봉
탑리
우보
화본
봉림
갑현
신녕
화산
북영천
영천
송포
임포
아화
건천
모량
율동
서경주
두원
옥산
청리
상주
백원
함창
점촌
용궁
개포
예천
어등
주평
진남
신현
마성
문경
가은
문단
봉화
거촌
봉성
법전
춘양
녹동
임기
현동
분천
양원
승부
석포
모화
입실
죽동
불국사
동방
경주
나원
청령
사방
안강
양자동
부조
효자
양학동
포항
괴동
청천
하양
금호
봉정
김천구미
신경주
상동
밀양
미전
삼랑진
원동
물금
신창원
남창원
성주사
경화
진해
통해
낙동강
한림정
신진영
진영
진례
덕산
창원중앙
창원
마산
중리
산인
함안
군북
원북
평촌
반성
진성
갈촌
남문산
개양
진주
유수
완사
다솔사
북천
양보
횡천
하동










InfoTrainStationCode.txt
NAT010000
NAT010017
NAT010032
NAT010058
NAT010073
NAT010081
NAT010091
NAT010106
NAT010117
NAT010141
NAT010161
NAT010173
NAT020032
NAT020046
NAT060040
NAT060050
NAT060063
NAT060085
NAT110031
NAT110058
NAT110082
NAT120018
NAT120044
NAT130019
NAT130036
NAT130055
NAT130070
NAT130089
NAT130104
NAT130126
NAT130140
NAT130149
NAT130157
NAT130171
NAT130182
NAT130193
NAT130207
NAT130218
NAT130234
NAT130247
NAT130259
NAT140021
NAT140044
NAT160023
NAT230058
NAT230068
NAT230075
NAT230088
NAT230094
NAT230124
NAT230156
NAT940311
NAT014244
NAT014281
NAT014331
NAT014427
NAT014445
NAT750021
NAT750046
NAT750078
NAT750091
NAT750106
NAT750119
NAT750136
NAT750161
NAT750176
NAT750189
NAT750254
NAT750329
NAT750359
NAT750412
NAT750446
NAT840019
NAT840051
NAT870024
NAT870061
NAT013239
NAT013271
NAT013327
NAT013343
NAT830031
NAT830043
NAT830085
NAT000901
NAT060160
NAT060175
NAT060189
NAT060207
NAT060219
NAT060231
NAT060241
NAT060251
NAT060265
NAT060277
NAT060296
NAT031747
NAT031812
NAT031840
NAT031857
NAT882904
NAT882936
NAT882979
NAT883012
NAT883086
NAT011524
NAT011580
NAT011621
NAT011668
NAT011742
NAT030057
NAT030118
NAT030173
NAT030207
NAT750475
NAT750560
NAT750653
NAT750726
NAT750760
NAT750822
NAT760086
NAT770055
NAT780046
NATH13717
NAT010196
NAT010215
NAT010239
NAT010261
NAT010275
NAT010297
NAT010339
NAT010368
NAT010394
NAT010415
NAT010444
NAT010487
NAT010570
NAT010648
NAT010670
NAT010754
NAT020117
NAT020178
NAT020243
NAT020293
NAT020346
NAT020393
NAT020430
NAT020471
NAT020524
NAT020585
NAT020641
NAT020677
NAT020717
NAT020760
NAT020803
NAT020845
NAT020884
NAT060095
NAT060110
NAT060121
NAT060138
NAT060148
NAT110116
NAT110139
NAT110147
NAT110165
NAT110180
NAT110196
NAT110213
NAT110249
NAT110265
NAT110300
NAT110337
NAT110351
NAT110392
NAT110407
NAT110460
NAT110497
NAT110520
NAT110557
NAT130282
NAT130296
NAT130312
NAT130324
NAT130354
NAT130437
NAT130482
NAT130503
NAT130531
NAT130556
NAT130597
NAT130627
NAT130652
NAT130738
NAT130774
NAT130844
NAT130888
NAT140098
NAT140133
NAT140163
NAT140214
NAT140277
NAT140362
NAT140436
NAT140488
NAT140576
NAT150028
NAT150057
NAT150078
NAT150120
NAT150167
NAT150191
NAT150194
NAT150231
NAT210023
NAT210034
NAT210060
NAT210080
NAT210117
NAT210132
NAT210148
NAT210162
NAT210177
NAT210195
NAT210217
NAT210246
NAT210260
NAT220026
NAT220039
NAT220055
NAT220085
NAT220095
NAT220105
NAT220114
NAT220124
NAT230180
NAT230181
NAT230190
NAT230199
NAT230222
NAT230253
NAT230264
NAT230280
NAT230298
NAT230309
NAT240000
NAT240017
NAT240067
NAT240093
NAT240139
NAT240153
NAT240162
NAT240178
NAT240192
NATH10219
NATHE0018
NAT020954
NAT020986
NAT021033
NAT021082
NAT021141
NAT021175
NAT021215
NAT021273
NAT021326
NAT021357
NAT140622
NAT140681
NAT140701
NAT140787
NAT140840
NAT140873
NAT600830
NAT600870
NAT600913
NAT600957
NAT601034
NAT601074
NAT601089
NAT601122
NAT601169
NAT601186
NAT601221
NAT601275
NAT601327
NAT601377
NAT601410
NAT601485
NAT601545
NAT601602
NAT601605
NAT601660
NAT601774
NAT601845
NAT601936
NAT610064
NAT610137
NAT610226
NAT610326
NAT610387
NAT610459
NAT630064
NAT630078
NAT630129
NAT650177
NAT650253
NAT650310
NAT650341
NAT650368
NAT650417
NAT650484
NAT650515
NAT650567
NAT650611
NAT650655
NAT650722
NAT650782
NAT650828
NAT650918
NAT650978
NAT651008
NAT651053
NAT680051
NAT690064
NAT011403
NAT011449
NAT011833
NAT011916
NAT011972
NAT012016
NAT012054
NAT012124
NAT012270
NAT012355
NAT021393
NAT021438
NAT021478
NAT021526
NAT021549
NAT021586
NAT021644
NAT021723
NAT021784
NAT021832
NAT021914
NAT050044
NAT050114
NAT050215
NAT050244
NAT050288
NAT050366
NAT050428
NAT050515
NAT050596
NAT050641
NAT050719
NAT050789
NAT050827
NAT050881
NAT050927
NAT051006
NAT051064
NAT650050
NAT650098
NAT650131
NATH11245
NAT010848
NAT010902
NAT010940
NAT010971
NAT011079
NAT011154
NAT011231
NAT011266
NAT011298
NAT011354
NAT030254
NAT030280
NAT030347
NAT030396
NAT030445
NAT030508
NAT030575
NAT030607
NAT080045
NAT080092
NAT080147
NAT080216
NAT080263
NAT080282
NAT080309
NAT080353
NAT080402
NAT080439
NAT080492
NAT080565
NAT080622
NAT080666
NAT080749
NAT080789
NAT080827
NAT080870
NAT080889
NAT080952
NAT080997
NAT081098
NAT081134
NAT081149
NAT081240
NAT081297
NAT081318
NAT081343
NAT081360
NAT081431
NAT200146
NAT340090
NATH10960
NAT030667
NAT030718
NAT030754
NAT030812
NAT030879
NAT030953
NAT030985
NAT031056
NAT031124
NAT031179
NAT031235
NAT031314
NAT031374
NAT031416
NAT040024
NAT040076
NAT040133
NAT040173
NAT040208
NAT040257
NAT040281
NAT040352
NAT040409
NAT040496
NAT040536
NAT040590
NAT040626
NAT040667
NAT040741
NAT040820
NAT040868
NAT040940
NAT040975
NAT041008
NAT320034
NAT320078
NAT320130
NAT320177
NAT320231
NAT330116
NAT410017
NAT031486
NAT031543
NAT031601
NAT031638
NAT031696
NAT031953
NAT031998
NAT032099
NAT032131
NAT032212
NAT032273
NAT032313
NAT032422
NAT032489
NAT032536
NAT032563
NAT041072
NAT041196
NAT041285
NAT041337
NAT041386
NAT041480
NAT041530
NAT041578
NAT041595
NAT041646
NAT041710
NAT041763
NAT041819
NAT041866
NAT041910
NAT041949
NAT041993
NAT510050
NAT510104
NAT520064
NAT520129
NAT520190
NAT530027
NAT881538
NAT881584
NAT881638
NAT881708
NAT881762
NAT881918
NAT881965
NAT882034
NAT882141
NAT882194
NAT882237
NAT882328
NAT882377
NAT882416
NAT882503
NAT882544
NAT882594
NAT882630
NAT882666
NAT882706
NAT882755
NAT882809
NAT882847
NAT012415
NAT012470
NAT012546
NAT012643
NAT012700
NAT012775
NAT012821
NAT012903
NAT012968
NAT013030
NAT013067
NAT013141
NAT013395
NAT013466
NAT013542
NAT013629
NAT013685
NAT021992
NAT022053
NAT022115
NAT022161
NAT022188
NAT022238
NAT022263
NAT022306
NAT022373
NAT022425
NAT022469
NAT022495
NAT022557
NAT022631
NAT022699
NAT022754
NAT022801
NAT022844
NAT022907
NAT022961
NAT023047
NAT023127
NAT023181
NAT023229
NAT023279
NAT023343
NAT023424
NAT023449
NAT023501
NAT023542
NAT023601
NAT023660
NAT023699
NAT023745
NAT023821
NAT300128
NAT300200
NAT300271
NAT300360
NAT300444
NAT300558
NAT300600
NAT300669
NAT300733
NAT300850
NAT301016
NAT310071
NAT310128
NAT310154
NAT310174
NAT310223
NAT350119
NAT600090
NAT600147
NAT600202
NAT600257
NAT600327
NAT600379
NAT600427
NAT600476
NAT600527
NAT600593
NAT600655
NAT600692
NAT600768
NAT750894
NAT750933
NAT750972
NAT751013
NAT751058
NAT751123
NAT751174
NAT751211
NAT751238
NAT751296
NAT751325
NAT751354
NAT751418
NAT751446
NAT751458
NAT790056
NAT830140
NAT830200
NAT830249
NAT830291
NATH12383
NATH13421
NAT013747
NAT013841
NAT013952
NAT013967
NAT014058
NAT014150
NAT810048
NAT810092
NAT810128
NAT810169
NAT810195
NAT810212
NAT880017
NAT880099
NAT880140
NAT880177
NAT880179
NAT880228
NAT880281
NAT880310
NAT880345
NAT880408
NAT880480
NAT880520
NAT880608
NAT880644
NAT880702
NAT880766
NAT880825
NAT880855
NAT880915
NAT880967
NAT881014
NAT881116
NAT881168
NAT881224
NAT881269
NAT881323
NAT881386
NAT881460

댓글 없음:

댓글 쓰기