SQLite에서 몇 가지 SQL 문 정리

SQLite에서 몇가지 필요한 SQL 문을 찾아 정리해 봅니다. 기존의 SHP 파일의 속성 정보를 DBF 파일을 통해 사용했으나 몇가지 중요한 이유로 인해 SHP 파일의 속성을 DBF 파일이 아닌 SQLite로 대체하고자 함인데요. SQLite의 DB가 갖는 다음과 같은 장점을 갖고자 함입니다.

  • DB가 단 하나의 파일로 구성되어 있어서 SHP 파일과 함께 쉽게 전달이 가능함
  • SQL문의 WHERE 절을 통한 다양한 검색 조건을 줄 수 있음
  • Index를 걸어 빠른 검색이 가능함
  • 속성 값을 SQL의 UPDATE 문을 통해 쉽게 할 수 있음

SQLite의 DB 파일을 DBF 파일 대신 사용하기 위해 기본적으로 파악해야할 SQL 문은 다음과 같습니다. 먼저 SQLite 파일에 존재하는 테이블의 이름을 얻기 위한 SQL 문입니다.

SELECT name FROM sqlite_master WHERE type = 'table'

위의 SQL문의 실행 결과에 대한 예는 아래 그림과 같습니다.

사용자 삽입 이미지

다음은 특정 테이블을 구성하는 필드의 이름과 타입을 얻는 SQL 문입니다.

pragma table_info(TL_SCCO_EMD)

사실 위는 명령은 SQL 문이 아닙니다. 여튼 위의 결과에 대한 예는 아래와 같습니다.

사용자 삽입 이미지

그리고 해당 테이블의 레코드 개수를 얻는 SQL문은 다음과 같습니다.

SELECT COUNT(*) FROM TL_SCCO_EMD

위의 SQL 문의 결과에 대한 예는 다음과 같습니다.

사용자 삽입 이미지

도로명 주소 나침반 앱 릴리즈

2014년부터는 관공서에서 의무적으로 도로명 주소를 사용해야 합니다. 기존의 익숙한 주소체계가 아닌 도로명 주소가 처음에는 어색하고 불편할 수 밖에 없습니다. 하지만 이 도로명 주소에는 분명 좋은 장점이 있습니다. 특히 도로명을 알고 있으면 보다 쉽게 내가 가고자 하는 목적지에 찾아갈 수 있다는 장점이 있습니다. 이러한 도로명의 장점을 십분 활용하기 위해 도로명 주소 나침반 앱을 릴리즈하였습니다. 가고자 하는 목적지의 ‘도로명 주소’만 알면 쉽고 빠르게 찾아갈 수 있는 앱입니다.

사용자 삽입 이미지

구글의 플레이스토어에서 ‘도로명 주소 나침반’이라고 검색해 사용해 보시기 바랍니다. 도로명 주소 나침반의 기능은 다음과 같습니다.

  • 현재 내 위치에서 가장 가까운 도로명 주소와 함께 나침반을 표시해 줌
  • 도로명 주소로 지정된 목적지까지의 선을 참조하여 걷다보면 빠르고 정확하게 목적지에 도착
  • 내가 이동한 경로를 kml로 저장할 수 있는 GPS Logger 기능

사용자 삽입 이미지

도로명 데이터는 안전행정부에서 제공하는 새주소 데이터를 사용하였습니다. GIS 분야에서 일을 함에도 길치인지라 늘 어디갈때 해매고는 하는 제가 직접 이 앱을 이용해 재밌고 정확하게 목적지를 찾아갈 수 있었습니다.

속성값으로 SHP 파일 데이터 분류 가공

SHP 파일의 속성값에 따라 불필요한 데이터는 제거할 필요가 있어 ExpressionsSHP 툴을 사용한 예를 정리해 봅니다. ExpressionsSHP 툴은 다음 URL을 통해 다운로드 받을 수 있습니다.

http://www.gisdeveloper.co.kr/entry/정규표현식을-이용한-SHP-추출-ExpressionsSHP

제가 하고자 하는 것은 해당 SHP 파일 중 특정 필드의 값이 빈문자값을 가지는 것은 제거였습니다.

“빈문자열로 시작하지 않는다”는 조건에 대한 정규표현식은 다음과 같습니다.

^\S

예를 들어 제가 처리하고자 하는 SHP 파일의 속성값을 살펴보면 아래와 같았습니다. NOBJNM_MB_ 필드에 대해서 빈문자열이 보입니다.

사용자 삽입 이미지
위의 데이터를  ExpressionsSHP 툴에서 SHP 파일로 입력하고 공백으로 시작하지 않음을 의미하는 정규표현식 조건 지정한 화면은 아래와 같습니다.

사용자 삽입 이미지
위와 같이 입력값을 지정하고 실행하면 결과 SHP 파일에 대한 분류가 되는 것을 알 수 있습니다.

사용자 삽입 이미지

[Java] 한글 문자열에서 초성 얻기

예를 들어, ‘대한민국’의 첫자인 ‘대’의 초성을 얻는 코드입니다. ‘대’의 초성은 ‘ㄷ’입니다. 아래의 함수 코드는 ‘대한민국’과 같은 문자열을 인자로 받아 그 결과로 ‘ㄷ’ 문자열을 반환하는 함수입니다.

String getInitialSound(String text) {
    String[] chs = { 
        "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", 
        "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", 
        "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", 
        "ㅋ", "ㅌ", "ㅍ", "ㅎ" 
    };
		
    if(text.length() > 0) {
        char chName = text.charAt(0);
        if(chName >= 0xAC00)
        {
            int uniVal = chName - 0xAC00;
            int cho = ((uniVal - (uniVal % 28))/28)/21;

            return chs[cho];
        }
    }
   		
    return null; 
}

위의 함수를 간단히 테스트하는 코드 예는 아래와 같습니다.

System.out.println(getInitialSound("자바"));

결과는 ‘ㅈ’입니다.

XrReverseGeocoder ㅡ 좌표를 새주소로 변환하는 툴

좌표를 새주소로 변환하는 툴입니다. SHP 파일을 구성하는 포인트의 좌표에 대한 새주소(도로명주소)를 필드값으로 추가하여 새로운 SHP 파일을 생성해 줍니다. SHP 파일의 좌표계는 GPS 좌표, 즉 WGS94 경위도 좌표계여야 하며 포인트(Point) 타입이여야 합니다. 아래는 이 프로그램의 실행 화면입니다.

사용자 삽입 이미지

이 프로그램을 이용하여 포인트 좌표에 대해 변환된 주소는 새로운 SHP 파일의 속성값으로 저장되며 아래는 그 결과에 대한 예입니다.

사용자 삽입 이미지

이 프로그램은 DuraMap-Xr 컴포넌트를 필요로 합니다. 만약 이전에 DuraMap-Xr을 설치하지 않았다면 DuraMap-Xr의 설치를 위해 아래의 프로그램을 다운로드 받아 실행하시기 바랍니다.



아래는 이 프로그램에 대한 다운로드입니다. 다운로드 받아 원하는 폴더에 압축을 풀고 별도의 설치 없이 바로 실행할 수 있습니다.