QGIS에서 DXF 파일을 불러올 때 한글이 포함된 텍스트(TEXT) 또는 레이어(LAYER)를 변환하면서 한글 속성이 깨지는 경우 해결하는 방법이며, 한글 윈도우를 기준으로 함
ESRI Shapefile의 경우 [Layer] --> [Add Vector Layer...] 메뉴 실행 후 다음 그림과 같이 EUC-KR을 선택하면 정상적으로 한글이 처리되지만, DXF 파일의 경우 현재 버전에서는 이 설정이 적용되지 않는다.
QGIS에서 DXF를 불러올 때 GDAL/OGR 라이브러리를 사용하므로 QGIS 시작할 때 환경설정을 추가하면 오류를 해결할 수 있다.
1. DXF 파일의 인코딩 확인
일반적으로 DXF 파일은 한글윈도우를 사용하여 CAD에서 저장하는 경우 파일의 헤더에 아래와 같이 $DWGCODEPAGE 속성이 ANSI_949로 저장되는 듯 하다(확인 필요)
$DWGCODEPAGE
3
ANSI_949
9
GDAL/OGR 드라이버에서 DXF 파일은 ANSI_1252 / Win1252 인코딩을 기본값으로 사용하며 ,파일 헤더의 $DWGCODEPAGE 속성 또는 GDAL/OGR 드라이버의 DXF_ENCODING 환경설정을 이용하여 인코딩을 설정할 수 있다.
현재 버전의 QGIS에서는DXF 파일의 $DWGCODEPAGE 속성 변경만으로는 정상적으로 한글을 불러올 수 없으며, DXF_ENCODING 전역환경 설정을 통해서 문제를 해결할 수 있다.
우선 불러오고자 하는 DXF 파일의 인코딩을 확인해야 한다.
- Notepad++(http://notepad-plus-plus.org/)를 설치하고 DXF 파일을 불러온다
- 우 하단의 인코딩 타입을 확인하면 다음과 같이
- ANSI 인 경우 : EUC-KR 또는 CP949
- ANSI as UTF-8인 경우 : UTF-8
2. 환경설정
QGIS 바로가기 아이콘의 등록정보를 확인 후 다음과 같이 qgis-dev.bat 파일을 Notepad++에서 불러온다. 이하 [QGIS Weekly]는 설치된 QGIS 버전에 따라 다를 수 있으며, 아래는 2013년 8월 말 기준 QGIS Weekly version(http://qgis.org/downloads/weekly/)을 설치한 경우
예) C:\Program Files\QGIS Weekly\bin\qgis-dev.bat
정식버전의 경우 qgis.bat 파일이 될 것이다.
set GDAL_FILENAME_IS_UTF8=YES 다음 라인에 DXF_ENCODING 정보를 추가한다.
DXF 인코딩이 UTF-8인 경우 : set DXF_ENCODING=UTF-8
DXF 인코딩이 ANSI 인 경우 : set DXF_ENCODING=EUC-KR
3. 불러오기
이제 QGIS를 새로 실행한 후 [Layer] --> [Add Vector Layer...] 메뉴를 실행 후 파일 유형을 All files (*) (*.*) 또는 AutoCAD DXF [OGR] (*.dxf *.DXF) 를 선택하고 DXF 파일을 불러온다.
DXF의 원본 좌표체계를 선택 후 불러올 타입(Point[TEXT], LineString, Polygon)을 선택한다.
다음과 같이 Point를 Text 필드로 라벨을 설정하면 한글이 표시된다.
다음 화면은 환경 설정 후 정상적으로 한글이 표시된 지도이다.
이제 불러온 DXF 파일 레이어를 선택 후 오른쪽 마우스를 눌러 [Save As...] 메뉴를 실행 후 Shapefile로 저장하면 된다.
4. QGIS에 내장된 ogr2ogr 사용하는 경우
여러개의 DXF 파일을 Shapefile로 변환하는 경우에는 Command 창에서 ogr2ogr 명령어를 사용하면 된다.
ogr2ogr -f "ESRI Shapefile" h_point.shp -overwrite 33607068.dxf -where "OGR_GEOMETRY='POINT'"
ogr2ogr -f "ESRI Shapefile" h_linestring.shp -overwrite 33607068.dxf -where "OGR_GEOMETRY='LINESTRING'"
ogr2ogr -f "ESRI Shapefile" h_polygon.shp -overwrite 33607068.dxf -where "OGR_GEOMETRY='POLYGON'"
만약 변환하는 중에 다음과 같은 경고가 발생하는 경우가 있다.
C:\Program Files\QGIS Weekly\bin>ogr2ogr -where "OGR_GEOMETRY='POINT'" -f "ESRI Shapefile" h_point.shp 33607068.dxf
Warning 6: Normalized/laundered field name: 'ExtendedEntity' to 'ExtendedEn'
Warning 6: Normalized/laundered field name: 'EntityHandle' to 'EntityHand'
Warning 1: One or several characters couldn't be converted correctly from UTF-8 to ISO-8859-1.
This warning will not be emitted anymore
위와 같은 경고가 발생하는 경우 DXF파일을 열어서 $DWGCODEPAGE 속성을 삭제한 후 재시도하면 해결된다.
$DWGCODEPAGE
3
ANSI_949
9
5. 참고
- http://trac.osgeo.org/gdal/wiki/ConfigOptions
- http://www.gdal.org/ogr/drv_dxf.html
댓글 없음:
댓글 쓰기