APK에 데이터 파일 넣어 사용하기

안드로이드 설치 패키지인 APK 파일에는 이미지, 문자열 등과 같은 데이터뿐만 아니라 임이의 데이터 파일도 넣어 사용할 수 있습니다. 이러한 임이의 데이터 파일은 res 폴더의 서브 폴더인 raw를 직접 만들어 넣어주면 됩니다.

이러한 방식으로 데이터 파일을 저장해 두면 다음의 코드를 통해 해당 데이터 파일에 접근할 수 있는 InputStream 객체를 얻을 수 있습니다.

InputStream database_db = 
    map.getContext().getResources().openRawResource(R.raw.database_db);

이제 이 InputStream 객체를 통해 원하는 디렉토리에 해당 데이터 파일을 복사하고 사용할 수 있습니다. 아래의 코드는 InputStream 객체에 담겨진 데이터를 원하는 파일명으로 저장해 주는 함수입니다.

private boolean copy(InputStream in, String fileName) {
    try {
        OutputStream os = new FileOutputStream(fileName);
        byte[] buffer = new byte[1024];
        int bytesRead;
        while((bytesRead = in.read(buffer)) !=-1) {
            os.write(buffer, 0, bytesRead);
        }
	        
        os.flush();
        os.close();
    } catch (IOException e) {
        return false;
    }

    return true;
}

Geocoder-Xr의 OpenAPI Key 발급

좌표를 주소로 변환해 주는 툴인 Geocoder-Xr은 다음, 네이버, 구글의 좌표변환 API를 사용합니다. 간혹 Geocoder-Xr에서 변환이 않된다는 분들이 계셨고, 대부분의 이유는 OpenAPI Key 문제입니다. 기본적으로 Geocoder-Xr에 등록된 Key에 대한 사용량 초과로 인해 발생하는 것으로, 이 문제를 해결하기 위해서는 직접 사용자 개인의 OpenAPI Key를 발급받아 등록을 하시면 됩니다. Geocoder-Xr에서 이 OpenAPI 키를 등록하는 방법은 아래 화면을 참고하시기 바랍니다.

사용자 삽입 이미지
보시는 것처럼 먼저 화면 좌하단의 OpenAPI Key 관리 버튼을 클릭해 표시되는 대화상자에서 자신의 OpenAPI Key를 입력하시면 됩니다. 그럼 이 대화상에서 입력할 수 있는 OpenAPI Key를 발급받기 위해서 다음과 네이버에 대해 간단히 설명을 드리겠습니다.

먼저 기본적으로 다음과 네이버 모두 자신의 ID로 로그인이 되어 있다는 가정 하에 설명합니다. 먼저 다음(Daum)의 경우는 다음 화면을 통해 OpenAPI Key를 발급받을 수 있습니다. 화면을 클릭하면 전체 이미지를 볼 수 있으므로 정확한 URL을 볼 수 있습니다.

사용자 삽입 이미지
그리고 네이버에서 OpenAPI Key를 발급받기 위해서는 아래의 화면을 참고하시기 바랍니다. 화면을 클릭하면 큰 화면으로 표시되어 정확한 URL을 볼 수 있습니다.

사용자 삽입 이미지

블랙포인트의 저작권침해에 대한 법원 판결

작년에 모바일 GIS 엔진인 블랙포인트의 저작권 침해와 관련하여 법정다툼이 있었습니다. 이와 관련하여 다음과 같은 글을 게시한 적이 있습니다.

이에 대한 법정 다툼에 대한 판결이 2014년 1월 23일에 다음과 같이 있었습니다.

사용자 삽입 이미지

사용자 삽입 이미지

“피고는 무단으로 원고의 프로그램을 역분석하였고 그 기술적 보호조치를 무력화하였으며 권리관리정보(원작자를 확인할 수 있는 정보)를 제거 및 변경함으로써 원고의 이 사건 원고 프로그램에 관한 저작권을 침해하였다”

 

피고는 원고의 모바일 GIS 엔진(블랙포인트)에 대한 모든 기술적 보호 조치 제거 및 원작자를 확인할 수 있는 식별 정보(권리관리정보)를 피고의 회사명으로 변경한 후 프로그램의 이름을 변경하고는 이 이름으로 한국저작권위원회에 프로그램 등록을 하였다가 본 저작권침해 소송이 진행되자 바로 프로그램 등록을 말소하는 행위를 하였습니다. 이러한 피고의 행위는 저작권법에서 보호되는 모든 저작권을 총체적으로 말살하는 행위입니다.

프로그램 저작권에 대한 인식이 부족한 국내의 실정에서 프로그램의 역분석 또는 기술적보호조치무력화 또는 권리관리정보의 제거 행위가 명백한 저작권 침해 행위라는 이번 재판의 판례를 통해 프로그램 저작권의 가치에 대한 옳바른 사회적 인식과 건전한 경쟁을 통한 관련 산업의 기술 발전에 조금이라도 기여를 하였으면 합니다.

DBF를 SQLite DB 파일로 만들기

DBF 파일을 엑셀로 불러온 후 첫행에서 FID 라는 이름의 컬럼을 추가합니다. 그리고 이 FID 컬럼의 값을 0부터 시작하여 1씩 증가하도록 지정합니다. 아래가 이와 같은 작업의 예시입니다. 이 FID 컬럼이 필요한 이유는 SHP 파일의 도형와의 1:1 관계키로 사용하기 위함입니다.

그리고 이 파일을 텍스트(탭으로 분리)로 저장합니다. 이 파일을 인코딩은 ANSI로 되어 있는 경우가 있는데 이를 UTF-8로 변환합니다. 저 같은 경우 메모장에서 불러와 UTF-8로 인코딩을 지정하여 저장하였습니다.

SQLite Expert Professional 버전을 실행합니다. [File]-[New Database]를 실행하여 다음과 같이 지정하고 OK 버튼을 클릭합니다.

일반적으로 Database File 안에는 다수의 테이블이 존재하지만 단 하나의 테이블만 존재하며 이 테이블의 이름과 Database File의 이름은 같다라고 약속합니다. 이 부분은 모바일 GIS 엔진인 블랙포인트에서 필요한 약속이므로 블랙포인트를 위한 변환이 아니라면 관계없습니다.

그리고 [Import/Export]-[Import Text File]을 실행하고 다음처럼 앞서 만들어 놓은 텍스트 파일을 지정한 후 Start 버튼을 클릭하여 실행합니다.

테이블이 만들어 졌고 만들어진 필드를 보다 정확하게 조정하기 위해 Design 탭 안의 Fields 탭을 선택하여 Type, Size를 지정합니다. 그리고 필요하다면 Not Null을 체크하도록 하여 Null 값을 경우 기본값을 가지도록 합니다. 이는 Null 일 경우에 발생할 수 있는 예외를 대비할 수 있습니다. 블랙포인트에서는 이런 Not Null 처리가 반드시 필요하며 Type은 Size가 0인 INTEGER, Size가 0이 아닌 CHAR, Size가 0인 FLOAT만이 가능합니다.

그리고 인덱스를 걸기 위해서 Desing 탭 안의 Indexes 탭을 선택하여 인덱스를 추가합니다. 최소한 FID는 인덱스를 걸어주는 것이 좋으며 검색으로 사용하는 필드가 있다면 인덱스를 걸어줍니다.