본문 바로가기
기타등등

ODK - Open Data Kit - 오픈 데이터 킷 사용법

by java개발자 2015. 9. 8.

ODK - Open Data Kit

오픈 데이터 킷

 

출처 : https://opendatakit.org/use/

 

개요:

설문 조사 시스템이다. 설문조사를 종이가 아닌 스마트폰으로 한다.

1.스마트폰에서 앱을 다운로드 받고,

2.앱에서 설문지를 다운로드 받고,

3.앱에서 설문지 작성

4.앱에서 서버에 작성된 설문지 전송

5.서버에서 각 설문지를 모아서 통계 분석을 할 수 있다.

 

*그런데 문제가 있다. 본인이 만든 설문지를 웹서버에 올려야 하는데, 그러한 웹서버를 ODK에서는 제공해주지 않는다. 직접 구축해야 한다.

ODK에서 제공해주는 것은 설문조사 앱(안드로이드앱 - ODK Collect)과 설문지를 만드는 방법, 웹서버를 구축하는 방법이다.

 

상세:

ODK는 크게 3가지로 나뉜다.

1.Build 또는 XLSForm : 설문지 양식

2.Collect : 설문조사 행위

3.Aggregate : 설문조사 결과 통계 분석

 

 

 

준비물:

1.Build 또는 XLSForm : 설문지를 만들어야 한다. (두가지 방법 하나 선택)

           Build : http://build.opendatakit.org 에 들어가서 GUI로 설문지를 만들 수 있다.

           XLSForm : 관련 규칙을 이용해서 EXCEL 프로그램으로 엑셀파일 설문지를 만들 수 있다. 관련 규칙은 http://xlsform.org/ 참고

                         만들어진 xls 파일을 xml로 변환한다.

                         https://opendatakit.org/downloads/download-info/xlsform-for-windows/ 참고

                         (만들어진 *.xls파일을 xlsform.exe 위로 드래그앤드롭 하면 *.xml파일로 변환해준다. Conversion complete 가 나오면 성공이다.)

                         변환된 xml파일을 Aggregate 서버에 업로드해서 사용자가 다운로드 받을 수 있게 한다.

           *익숙해지면 XLSForm이 좀더 생산적이지 않을까 싶다. (Build는 안해봄)

2.Collect : 가장 간단하다. 안드로이드 마켓 들어가서 ODK Collect 를 다운로드 받고, 실행.

                     2-1 설문지 다운로드

                     작성한 설문지를 다운로드 받아야 하는데,

                     기본설정으로는 https://opendatakit.appspot.com 가 되어 있으므로, 내가 만든 Aggregate 서버 주소로 변경해줘야 한다.

                     앱에서, 메뉴버튼 > general settings > server settings - platform > ODK Aggregate 확인

                     > configure platform settings > URL을 나의 Aggregate 서버 주소로 변경. name, password는 나의 Aggregate 화면 로그인 계정으로 지정.

                     앱의 메인 화면 > Get Blank Form > 나의 Aggregate 서버에 업로드된 양식 리스트가 보임. 다운로드!!

                     2-2 Fill Blank Form에서 설문지 양식 작성

                     2-3 Send Finalized Form 에서 작성완료된 설문지를 나의 Aggregate 서버에 전송

3.Aggregate : 서버를 만들어서 작성된 설문지 양식을 올릴 수 있다. 설문지 결과를 받아서 통계를 분석 할 수 있다.

           설치 - 가장 복잡하다. 웹서버를 설치해야 한다. 전공자, 개발자가 아니면 좀처럼 이해하기 힘든 부분일 수도 있다.

           다양한 방법이 있다.(윈도우 기준)

                     https://opendatakit.org/downloads/ 참고

                     방법1.개인 PC Tomcat 서버, MySQL 또는 PostgreSQL database server 를 구축할 수 있는 사람

                                ODK Aggregate windows-installer.exe 를 이용하면 배포할 수 있는 *.war 파일을 생성해 준다.

                                > 해봤는데 화면 접근시 에러-_-;;

                     방법2.구글앱엔진에 배포할 수도 있다. (장점 : 개인PC에 설치하지 않아도 됨. 어디에서나 접근 가능, 무료?, 단점 : 아마 용량 제한이 있을듯...)

                                ODK Aggregate windows-installer.exe 를 이용해서 관련 정보만 입력하면 알아서 다 해준다.

                                > 해봤는데 구글앱엔진 접근 인정 불가 에러-_-;;;

                                          >> 구글앱엔진에 배포할 동안에는 권한인증 레벨을 낮춰야 한다.

                                           참고

                                          https://opendatakit.org/use/aggregate/

                                          바로가기 https://www.google.com/settings/security/lesssecureapps

                                          구글앱엔진 사용시 주의점(트래픽 감소) : https://opendatakit.org/use/aggregate/deployment-planning/

                                ODK Aggregate windows-installer.exe 를 설치할때 user name이 나중에 관리 페이지에서 로그인 id이며, 비밀번호는 aggregate 이다.

                                *구글 앱엔진(Google App Engine)

                                          – Bandwidth : 1GB

                                          – Datastore : 50,000 Read/write/small

                                          – Blobstore : 5GB

                                          1계정당 할당되는 용량이며, 1유저당 10계정까지 운용이 가능하였다.

                                          출처 : http://becreativelab.com/archives/19944

                                          과금정보 : http://uiandwe.tistory.com/898

                                          https://cloud.google.com/appengine/docs/developers-console/?hl=ko#billing

                     방법3.VM 가상머신 이용(개인 PC를 이용하지만, 추가적인 설치 없이 한번에 가능한 방법)

                                ODK Aggregate VM 를 다운로드 받으면 *.ova 파일 나온다.

                                오라클의 virtualBox 또는 VMWARE 를 설치하고, 이 프로그램에서 *.ova를 기동시키면 된다.

 

*ODK설문지로 할 수 있는 것들:

           출력(화면에 보여줄 수 있는 데이터 또는 첨부)   : 문자(텍스트, 숫자), 날짜, 이미지, 소리, 영상

           입력(수집가능한 정보) : 텍스트, 정수, 실수, 체크박스, 라디오버튼, 날짜, 시간, 카메라 촬영, 녹화, 녹음, 파일(이미지,영상,소리), 현재 위치, 바코드(추가작업필요)

           추가기능 

: 다국어지원(엑셀내에서 구분가능), 반복 작업, 특정 항목 skip 기능(이전 대답에 따른 분기처리가능), 입력 데이터 범위 정할 수 있음, 기본값 입력 가능, 필수값 체크 가능(입력하지 않으면 다음으로 넘어가지 않음), 변수를 이용한 계산

 

 

 

<설문지 양식 만들기>

 

출처 : http://xlsform.org

sample_xlsform.xls 과 함께 보면 이해가 쉬움. https://opendatakit.org/wp-content/uploads/2013/06/sample_xlsform.xls

 

(엑셀 가로줄 항목)

type : 데이터 타입구분(숫자/문자...) -> 밑에 (엑셀 세로줄 항목)에서 자세히 설명함

name : 데이터를 저장할 변수명

label : 화면상단 굵은 글씨로 표시됨

hint : 화면상단 가는 글씨로 표시됨(label 밑에 출력됨)

constraint : 입력할 수 있는 데이터 범위를 지정할 수 있다. (정규식 비슷)

           )

           . <= ${a_integer}             설명 : a_integer 변수에 저장한 값보다 작거나 같아야 한다. (아마 이전 단계에서 a_integer에 다른 숫자값을 저장했나 보다)

           not(selected(., 'yes') and selected (., 'no'))      설명 : yes 또는 no를 선택해야 한다.

constraint_message : constraint로 지정한 데이터 범위를 벗어났을 때 보여줄 메시지(메시지는 안드로이드 toast 형식으로 보여진다.-잠깐 보였다 사라지는 경고창)

required : yes 로 지정하면, 해당 항목은 필수라는 것을 의미. 선택 또는 입력을 하지 않으면 다음으로 진행할 수 없다는 경고메시지 나옴.

appearance : 보여지는 형식...보통 group 지정시 사용한다.

default : 기본값

relevant : 이전 항목의 변수값을 이용해서 현재 항목을 처리할 수 있는 조건식

           )

           selected(${skip_example}, 'no')                     설명 : skip_example 값을 이용해서 현재 항목을 보여줄지 말지... 결정

read_only :

calculation : 저장한 변수들의 값을 계산해서 변수에 저장한다.

           ) type calculate인 경우

           ${a_integer}+${a_decimal}

hint::chinese : 언어를 중국어로 변경하면 보이나 보다.(다국어 지원)

label::chinese :

image : label  hint 사이에 이미지 첨부 가능

audio : 우측 상단에 오디오버튼을 만들어서 클릭하면, 오디오가 나오도록 할 수 있다.(xml 설문지 업로드시에 관련 미디어 파일들도 같이 없로드 해야 한다.)

image::english :

media::audio::chinese :

media::video : 우측 상단에 비디오 버튼을 만들어서 클릭하면, 비디오가 나오도록 할 수 있다.(오디오와 병행 가능)

           미디어 파일 위치

           sdcard0/odk/forms/[폼이름]-media/*.*

           sdcard0/odk/forms/sample-media/audio_test.wav

           sdcard0/odk/forms/sample-media/test_mov.wav

 

 

type(엑셀 세로줄 항목)

integer                                 [입력]Integer (i.e., whole number) input.

                                          정수 키패드가 나온다

decimal                                 [입력]Decimal input.

                                          실수 키패드가 나온다.(소수점 포함)

text                                      [입력]Free text response.

select_one [options]                 [입력, 라디오버튼]Multiple choice question; only one answer can be selected.

                                                     appearance compact를 지정하면, 단순한 모양으로 나온다. ! 텍스트만..(별로 안 이쁨... 공간은 절약해줌)

select_multiple [options]            [입력, 체크박스]Multiple choice question; multiple answers can be selected.

note                                     [출력]Display a note on the screen, takes no input.

                                          입력을 받을 수 없고, 단순한 출력용

geopoint                               [입력]Collect a single GPS coordinates.

                                          현재 위치 측정 하도록 유도

geotrace                                Record a line of two or more GPS coordinates.

geoshape                               Record a polygon of multiple GPS coordinates; the last point is the same as the first point.

date                                     [입력]Date input.

                                          년월일 날짜선택

time                                     [입력]Time input.

                                          24시 시분 선택

dateTime                               [입력]Accepts a date and a time input.

                                          상단에는 날짜, 하단에는 시간 선택하도록 출력

image                                   Take a picture.

                                          카메라/이미지파일 선택 화면

audio                                    Take an audio recording.

                                          녹음/사운드파일선택/재생 화면

video                                    Take a video recording.

                                          녹화/동영상파일선택/재생 화면

barcode                                Scan a barcode, requires the barcode scanner app to be installed.

                                          바코드 스캐너 앱이 없으면, 안된다고 경고창 나온다.

calculate                                [계산]Perform a calculation; see the Calculation section below.

                                          계산과정 수행

acknowledge                          [입력]Acknowledge prompt that sets value to “OK” if selected.

                                          사용자의 동의를 구하는 행위. 체크박스가 하나 나오고, 체크하면, OK라는 데이터가 들어옴.

그외...

begin repeat                           for의 시작.

                                          alert 창이 나오고, group add 할지 말지 선택이 나온다.(do not add, add group)

                                          프로그래밍의 for(while) 구문과 비슷하다.

                                          add를 선택하면, begin end 사이에 있는 항목이 나온다.

                                          do not add를 선택하면 종료된다.

end repeat                             for의 끝.

begin group                          그룹 지정 시작

                                          별거 없다. 단지 화면상에 가로줄 그어서 구분해줄 뿐이다.

                                          appearance field-list롤 지정하면 가로줄로 나오는듯...

                                          appearance table-list롤 지정하면 테이블로 나온다. 그룹내의 항목들이 같은 형식으로 있어야 효과를 볼듯...)

                                          appearance field-list롤 지정하고,

                                                     첫번째 select_one [options] appearance label로 하면 선택할 수 없이 표시만 된고,

                                                     두번째 select_one [options] appearance list-nolabel로 하면, 기존처럼 선택 할 수 있다.

                                                     (label list-nolabel은 세트로 가야할 듯??)

end group                             그룹의 지정 끝

select_one yes_no                   Yes 또는 No가 보기로 나옴.(1개만 선택 가능) - 엑셀의 choices 시트에서 지정하였음(자동은 아님)

select_multiple yes_no             yes no 모두 선택 가능 - 엑셀의 choices 시트에서 지정하였음(자동은 아님)

                                          appearance minimal로 하면 팝업창으로 나옴.

select_multiple a_b                  a b를 선택할 수 있게 나옴.(a.jpg, b.jpg 를 찾아서 보여줄려고 시도함 - 엑셀의 choices 시트에서 지정하였음(자동은 아님)

 

label -만 표시하면, 변수에 값이 저장되는 듯.(디바이스 정보 출력용)

           start : (년월일, 아마 조사 시작한 날인듯)

           end : (년월일)

           today : (년월일, 오늘)

           deviceid : 디바이스 id

           simserial : 심카드 시리얼번호?

           phonenumber : 전화번호

 

 

 

 

 

'기타등등' 카테고리의 다른 글

사복음서 연결고리  (0) 2019.04.09
bitwig 시작하기  (0) 2019.02.15
nektar impact gx61 후기  (0) 2019.02.15