EUC-KR로 인코딩된 속성값이 깨진 SHP, DBF 파일 복구하는 프로그램

국내에서 사용되는 거의 대부분의 SHP 파일의 속성 데이터는 EUC-KR로 인코딩되어 있습니다. 이러한 SHP 파일을 PostgreSQL에 테이블로 Importing 하기 위해 Shapefile Import/Export Manager와 같은 툴을 사용하게 되는데요. 가끔 다음과 같은 에러를 출력하고 Importing이 실패하게 됩니다.

물론 위의 Shape Import/Export Manager 툴에서 SHP 파일을 Importing 할때 문자셋을 EUC-KR로 명확히 지정한 경우입니다. 이 경우 DBF 파일에 저장된 한글 문자열은 분명히 EUC-KR로 인코딩되어 있으나 깨졌거나.. 기타 여러가지 이유가 그 원인이 될 수 있습니다. 대부분의 프로그램에서는 데이터가 조금 깨져 있어도 읽는데 있어 위의 경우처럼 문제를 발생하지 않습니다. 왜냐하면 깨진 문자열이 그다지 중요하지 않은 경우가 많기 때문입니다.

이러한 상황에서 옳바르게 SHP 파일을 Importing 해 줄 수 있는 툴을 소개합니다.

매우 단순한 UI를 갖는 이 툴은 문제가 있는 SHP 파일을 문제가 없도록 만들어 주는 툴입니다. 혹 저와 동일한 문제로 인해 작업 시 어려움을 격는 분이 있다면 이 툴을 사용해 보시기 바랍니다. 아래 실행 파일을 첨부합니다.



이 프로그램은 DuraMap-Xr을 사용합니다. 실행 전에 DuraMap-Xr을 설치하셔야 하는데요. 다음 URL에서 소개하는 설치자를 통해 매우 간단히 설치할 수 있답니다.

DuraMap-Xr 설치자

DB Connection 유지를 위한 방안

Java에서 DB에 대한 연결을 미리 맺어두고 사용하는 Connection Pool을 활용하고 있습니다. 그런데 문제는 Connection이 일정 시간 아무런 사용이 없을 경우 서버 단에서 해당 Connection의 연결을 끊는 경우인데요. 이는 서버 단의 DB 설정값을 변경해서 해결할 수 있지만, 여러가지 정책 상 DB 설정값을 변경할 수 없을 때가 있습니다. 예를 들어, DB 관리자가 전에 사귀다가 이별한 여자친구라던지……..

이러한 경우!! 에 Connection Pool을 운영하는 어플리케이션 단에서 해당 Connection에 대해 일정 시간 간격으로 어떤 연산을 주기적으로 호출함으로써 연결을 계속 유지하도록 할 수 있습니다. 이러한 연결 유지는 스레드를 통해 구동되는 것이 적당한데요. 아래의 코드는 이러한 목적으로 이번에 도입한 스레드 코드입니다.

코드는 매우 단순하지만 향후 급할때 기억을 쉽게 더듬을 수 있도록 저장해 둡니다.

package control;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import model.DBConnection;

public class DBConnectionMaintainerThread extends Thread {
    private volatile boolean bGoOn = true;
	
    public void run() {
        DBConnection conn = null;
        Connection rConn = null;
        ResultSet RS = null;
        Statement readStmt = null;
		
        while(bGoOn) {
            try {
                Thread.sleep(10000);
	        	          
                conn = MainEntry.dbMan.getResource("cim");           
                rConn = conn.getRawConnection();
                readStmt =  rConn.createStatement();
    	        RS = readStmt.executeQuery("select 1");   
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if(RS != null) {
                    try {
                        RS.close();
                        if(readStmt != null) readStmt.close();
                        if(conn != null) MainEntry.dbMan.putResource("cim", conn);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

위의 코드는 10초 간격으로 Connection Pool에서 Connection을 꺼내와 가장 간단한 쿼리인 SELECT 1;을 주기적으로 호출해 주고 있습니다. 참고로 Connection Pool의 코드와 섞여 있으니 필요한 코드만 쏙쏙 골라 보시기 바랍니다.

CentOS 7에서 Postgresql 9.6.2, Postgis 2.3.2-1 설치(인터넷 환경)

인터넷이 되는 환경에서 PostgreSQL(9.6.2)와 PostGIS(2.3.2)를 설치하는 절차입니다.

PostgreSQL 9.6.2 설치

1. PostgreSQL과 PostGIS 설치를 위한 yum 저장소 업데이트

rpm -Uvh https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

2. PostgreSQL 설치

yum install postgresql96-server postgresql96

3. 데이터베이스 저장소 생성

./postgresql96-setup initdb

4. PostgreSQL 서비스 실행

systemctl enable postgresql-9.6
systemctl enable postgresql-9.6.service
systemctl start postgresql-9.6.service

5. 방화벽에서 port 5432번 개방

firewall-cmd --zone=public --add-port=5432/tcp

6. 외부에서 DBMS 접근 허용 설정

vi postgresql.conf

아래처럼 편집

listen_addresses = "*"

7. postgres 사용자 암호 설정

su - postgres
psql
\password postgres
\q

8. 이전 사용자로 복귀
su - root

9. 외부 접속을 위한 보안설정 변경

vi pg_hba.conf

아래처럼 편집

local all all peer 문자열을 local all all md5 로 변경
host all all 127.0.0.1/32 ident 문자열을 host all all 0.0.0.0/0 md5 로 변경
host all all ::1/128 ident 문자열을 host all all ::1/128 md5 로 변경

10. PostgreSQL 서비스 재기동

systemctl stop postgresql-9.6.service
systemctl start postgresql-9.6.service

11. [2017-07-08 추가] UUID 확장 기능 설치를 위해 다음 명령이 필요함

systemctl stop postgresql-9.6.service
yum install postgresql96-contrib.x86_64
systemctl start postgresql-9.6.service

PostGIS 설치

yum install epel-release
yum install postgis2_96.x86_64
systemctl restart postgresql-9.6.service

DuraMap-Xr 설치자(Installer)

GIS 엔진인 DuraMap-Xr을 쉽고 간단하게 설치할 수 있는 설치 프로그램입니다. 아래의 파일을 다운로드 받아 실행해 클릭만으로 간단히 DuraMap-Xr을 설치할 수 있습니다.



좀더 자세히 설명 드리면, 먼저 설치 프로그램을 실행하면 다음과 같은 프로그램이 표시됩니다.

처음 설치할 경우 Install 버튼을 클릭해 설치하면 되고, 버전업 등과 같은 업데이트는 Update 버튼을 클릭하면 됩니다. 그리고 깨끗히 제거 하기 위해서 Remove 버튼을 클릭하면 됩니다.

이 설치자는 Windows 10 64Bits에서 정상적인 작동을 확인하였습니다. 설치나 삭제 등에서 문제가 발생할 경우에 대한 기술지원은 댓글을 이용해 주시기 바랍니다.

전력용어

출처 : 전력신문(http://www.epnews.co.kr)

◆ 송변전 분야

△경간(徑間)→지지물간 거리 △지상고(地上高)→전선 높이 △재폐로→(자동)재투입 △쇄정→잠금 △응동→동작 △이면 배선→내부 배선 △뇌써지→낙뢰충격전압 △(발전기)감발→(발전기)출력감소 △(발전기)증발→(발전기)출력증가 △조류(潮流)→전력 흐름 △HVDC 케이블→고압직류송전케이블 △회선긍장(回線亘長→회선길이 △반도(反跳)→되튐 △철탑 도괴→철탑 넘어짐 △밧데리(Battery),축전지→축전지 △블랙아웃(Blackout)→대정전 △제로에너지하우스(zero-energy house)→에너지 자급주택 △가선(架線)→전선 설치 △연선(延線)→전선 펴기 △긴선(緊線)→전선 당기기 △Relay, 보호계전기→보호계전기 △써모비전(Thermo Vision)→열화상 측정기 △방압변(Pressure Relief Device)→과압 방출장치 △MCCB,Auto Breaker→배선용 차단기 △병가→병행 가선 △조상설비→무효전력 보상장치 △CT, 변류기→전류변성기 △MOF→전압전류변성기 △PT→전압변성기 △전선 실장→전선 실제길이 △수트리→수분침투 균열 △어스, Ground→접지 △뇌격→낙뢰 △로드 쉐딩(Load Shedding)→일부 부하차단

◆ 배전 분야

△원방제어(遠方制御)→원격제어(遠隔制御) △인입선(引入線)→고객공급선(顧客供給線) △연접인입선(連接引入線)→이웃고객 공급선 △애자 두부→애자 머리 △긍장(亘長)→선로 길이 △말구(末口), 말구경(末口徑)→윗동, 윗동지름 △지선→지지선 △승주(昇柱)하다→(전주에) 오르다 △재폐로→재투입 △E-type 계기→E형 전력량계 △DM 수동복귀버튼→최대수요전력 초기화 버튼 △건전구간(健全區間)→정상구간(正常區間) △잠바선→점퍼선 △가공지선(架空地線)→공중 낙뢰유도선 △구배(勾配)→기울기 △이도(弛度)→늘어짐(정도) △휴즈→퓨즈 △호광시간(弧光時間)→아크 발생시간 △철탑정부(鐵塔頂部)→철탑꼭대기 △타이(Tie)→연계 △프레샤→시험용 단자 △변대주→변압기주 △단가업체→협력회사 △오계량→계량 오류 △섹셔널라이저(Sectionalizer)→선로구분 자동개폐기 △리클로저, 자동재폐로차단기→자동재투입 차단기 △직결(直結)→직접 연결 △내장(耐張)→장력 견딤 △콘넥타→연결기 △랙크(Rack)→랙 △입상주→케이블 오름전주 △암타이→완철 지지대

◆ 신기술분야

△Smart Meter, 스마트 미터→스마트 전력량계 △BEMS(Building Energy Management System), 건물에너지관리시스템→빌딩에너지관리시스템(BEMS) △PLC(Power Line Communication)→전력선 통신 △ESS(Energy Storage System), 에너지 저장장치, 전력저장장치→에너지 저장장치 △BMS(Battery Management System)→축전지 관리장치 △DR(Demand Response)→수요반응 △CPP(Critical Peak Pricing),피크요금제→피크요금제 △RTP(Real Time Pricing)→실시간 요금제 △EV(Electric Vehicle)→전기차 △Smart Thermostat→스마트 온도조절기 △우드팰릿→압착나무연료 △비회(Fly Ash)→날림재 △저회(Bottom Ash)→바닥재 △개거(開渠)→개방 수로 △그린 프라이스(Green Price)→녹색가격제도 △블레이드(Blade)→날개 △그리드 패리터(Grid Parity)→그리드 평형점 △부하 평준화, Load leveling→부하 평준화 △첨두부하 저감, Peak Shaving→피크부하 저감 △총체적 품질경영, 전사적 품질경영, TQM→전사적 품질경영 △연돌→굴뚝 △연도→연소가스 통로 △Off-taker→생산품구매자 △풍도→공기 통로 △제매장치→그을음 제거장치 △런백(Run Back)→출력 감소 △BOP(Balance Of Plant)→보조설비 △가바나프리(Governor free)→조속기 개방

◆ ICT분야

△AMI(Advanced Metering Infrastructure)→지능형 전력계량시스템 △AMR(Automatic Meter Reading)→원격 검침 △VoIP(Voice over Internet Protocol)→인터넷전화 △HDTV→고화질 텔레비전 △DR(Disaster Recovery)→재해 복구 △GIS(Geographic Information System)→지리정보시스템 △In-house 개발→자체 개발 △SRM(Supplier Relationship Management)→공급자관계관리(SRM) △Batch→일괄 △ISP(Information Strategic Planning)→정보화 전략계획

◆ 전력수급분야

△소내 소비전력→발전소내 소비전력 △PPA(Power Purchase Agreement)→직접구매계약 △절전규제→전력사용규제 △축열→열저장 △축냉→냉기저장 △민간부문 공급능력 활용→민간발전기 활용