지오 데이터베이스 및 shapefile에서 문자 인코딩 지원


11

많은 속성에 그리스 문자가 포함 된 피처 클래스를 포함하는 여러 지리 데이터베이스가 있습니다. ArcCatalog에서 피쳐 클래스를 형상 파일로 내보내려고하면 특성 파일이 문자 인코딩 문제인 형태 파일 데이터에서 도축됩니다 (이 형태는 모양이 이와 같음 : ?? etr ?? e?). FWtools에서 ogr2ogr을 사용하여 레이어를 MDB에서 KML, shp 등으로 변환 할 때도 마찬가지입니다.

누구나 GIS 데이터 형식에서 인코딩 형식을 다루는 경험이 있습니까?

여기서 실제 목표는 Esri 지오 데이터베이스의 일부 데이터를 Postgres / PostGIS 데이터베이스로 가져 오는 것이지만 깨진 인코딩은 작동하지 않습니다. geoDB에서 shapefile로 내보내고로로드하려고했습니다 shp2pgsql. 그것이 가장 쉬운 길입니까?


2
QGIS를 사용하여 CP1256 옵션으로 shapfile을 가져오고 UTF8로 내보내 유니 코드가 아닌 문제를 피할 수 있습니다

답변:


10

나는 당신이 거기에 있다고 생각합니다. 당신이 사용할 수있는 iconv또 다른 하나의 인코딩 변환하고, 당신은의 일환으로 사용할 수 있습니다 shp2pgsql과정. 예를 들면 다음과 같습니다.

shp2pgsql *postgrestablename* | iconv -f *sourceencoding* -t *targetencoding* | psql -d *yourdatabase*

Linux 환경에서 작업중인 iconv경우 이미 설치되어 있어야합니다. Windows의 경우 Windows 용 LibIconv를 찾았 습니다 . 그러나 iconvWindows에서 사용 한 경험이 없으므로 보증 할 수 없습니다.

도움이 되었기를 바랍니다!


shp2pgsql을 적용하기 전에 문제가 발생합니다. 올바르게 이해하면 shapefile의 속성이 이미 손상되었습니다.
underdark


어두운 곳에서는 맞습니다. shp2pgsql 단계에 도달하기 전에 데이터가 잘못되었습니다.
colemanm

고마워, mwalker ... 그 솔루션은 지금까지 환상적으로 작동했습니다! CodePage 형식을 UTF-8로 변경했으며 shapefile DBF 데이터에 올바른 문자가 표시됩니다. 그리고 QGIS에서 PostGIS shapefile 로더를 사용하면 PostGIS 데이터베이스의 데이터도 정확합니다.
colemanm

6

아랍어 필드가있는 파일 GeoDataBase를 UTF-8 인코딩이있는 shapefile로 변환하는 데 사용 된 프로세스의 세부 사항 아래에서 QGIS와 ArcMap에서 행복하게 열리고 아랍어와 영어가 올바르게 표시됩니다 (확장을 사용하여 내보내거나 읽을 수 없음).

  • 기본 아이디어는 FGDB에서 .dbf (잘못된 인코딩)를 포함하는 쉐이프 파일을 내 보낸 다음 텍스트와 동일한 레이어의 속성 테이블 (UTF-8 인 오른쪽 인코딩)을 내보내고 다른 프로그램을 사용하는 것입니다. shapefile .dbf의 내용을 적절한 UTF-8 데이터 필드로 바꾸고 .dbf를 UTF-8 인코딩으로 저장하십시오. 그런 다음 각 shapefile에 .cpg 파일을 추가하여 ArcGIS에 .dbf의 새 인코딩을 알립니다. 단계 :

1) FGDB의 레이어를 ArcMap에 추가하십시오 (10.1을 사용했지만 나중에 인코딩 비트가 Arc 외부에서 발생하기 때문에 이전 버전에서는 작동하지 않을 이유가 없습니다). 내보내려면 레이어를 마우스 오른쪽 버튼으로 클릭하고 데이터-> 데이터 내보내기를 선택하고 내보내기 대화 상자에서 폴더 버튼을 클릭하여 저장 대화 상자를 표시 한 다음 출력 파일로 Shapefile을 선택하십시오.

1b) 위의 대체 방법 : ArcCatalog에서 FGDB로 이동하여 마우스 오른쪽 버튼을 클릭하고 내보내기-> 셰이프 파일로 (다중)를 선택한 다음 전체 FGCB를 단일 작업으로 전체 셰이프 폴더로 내 보냅니다).

2) 이제 아랍어 스크립트가 있어야하는 곳에 횡설수설 한 셰이프 파일 세트가 있습니다 (내 기계에서는 문자 대신 물음표가 표시되었습니다). Excel에서 열거 나 모양 파일 자체의 .dbf 부분은 아랍어 대신 횡설수설합니다. GIS 프로그램의 표시 문제 일뿐만 아니라 .dbf 파일 자체에는 아라비아 문자가 포함되어 있지 않습니다. 아직 도움이되지 않았습니다.

3) ArcMap의 FGDB에서 레이어의 속성 테이블을 엽니 다. 표는 영어와 아랍어가 모두 올바르게 표시되어 열립니다 (먼저 FGDB가 사용 된 이유). 속성 테이블 창의 테이블 옵션 메뉴에서 내보내기를 선택하고 데이터 내보내기 대화 상자에서 출력 폴더 단추를 클릭하여 텍스트 파일을 출력 유형으로 선택하는 데이터 저장 대화 상자로 이동하십시오. 이제 영어와 아랍어가 올바르게 인코딩 된 UTF-8로 인코딩 된 쉼표 구분 기호와 함께 메모장에서 열리는 텍스트 파일이 있습니다 (이 시점에서 아랍어는 메모장에 올바르게 표시되어야 함).

이제 해당 정보를 shapefile의 .dbf 부분으로 가져 오십시오!

4) .dbf 파일을 쉽게 열고 조작하고 저장하여 shapefile의 .dbf 파일을 여는 무료 오픈 소스 Excel 복제 본인 LibreOffice Calc를 엽니 다.

그건 그렇고,이 경우 나는 이데올로기 적 이유로 MS Office 대신 LibreOffice를 사용하지 않지만 단순히 Excel에서 .dbf 파일을 저장하는 방법을 알 수 없기 때문에 Calc에서 쉽게 수행 할 수 있습니다. Calc에서 .dbf 파일을 열고 수정 한 후 저장을 누르면 기본 옵션 인 반면, Excel에서는 실제로 파일을 "현재 형식으로 저장할 수 없습니다"라고 말하고 "최신 형식으로 저장"할 수 있도록 도와줍니다 (.dbf에 대한 옵션이 나타나지 않습니다). 작업을 수행하기 위해 Excel 용 확장 프로그램 / 플러그인이 있습니다 (

Calc의 .dbf 파일은 여전히 ​​아랍어 대신 횡설수설을 보여줍니다. Alonside와 동일한 shapefile의 속성 테이블에서 내 보낸 .csv를 열어서 열기 대화 상자에서 UTF-8을 인코딩 (및 쉼표를 구분 기호)으로 지정하십시오. 텍스트 파일은 아랍어가 올바르게 표시된 두 번째 Calc 스프레드 시트에서 열어야하며 .dbf와 동일한 열과 시작 부분의 OBJECTID 열을 포함해야합니다. 올바른 아랍어를 포함하는 .csv의 열을 .dbf에 복사하여 붙여 넣습니다 (시간을 절약하기 위해 가장 왼쪽의 ID 열을 제외하고 실제로 전체 테이블을 복사하여 붙여 넣었습니다. 정보는 동일합니다). LibreOffice의 수정 된 .dbf에서 저장을 누르십시오 (실제로 .dbf와 같은 이상한 형식을 사용할 것인지 묻습니다. 그렇습니다).

FGDB에서 shapefile의 모든 .dbf 구성 요소에 대해이 프로세스를 반복하여 모든 횡설수설 한 열을 아랍어 문자열로 바꿉니다.

5) 아랍어 열을 붙여 넣은 상태에서 .dbf 부분을 다시 저장하면 QGIS에서 모양 파일을 열 수 있으며 가져 오기 벡터에서 UTF-8을 인코딩으로 지정하면 두 언어 모두에서 제대로 작동합니다. 파일 대화 상자. 그러나 ArcGIS는 인코딩을 자동으로 인식하지 못하거나 모양 파일을 프로젝트에 추가 할 때 선택할 수 없기 때문에 ArcGIS (또는 적어도 모든 버전에서는 아님)에서는 여전히 제대로 작동하지 않습니다. Arc는 코드 파일 변환 (.cpg) 파일이라고하는 쉐이프 파일에 별도의 구성 요소가 있어야 읽을 인코딩을 지시합니다.

6) 텍스트 편집기 (메모장, 나노 또는 기타 단어 (Word 또는 다른 워드 프로세서 제외))를 사용하여 "UTF-8"문자 5 개만 포함 된 텍스트 파일을 만듭니다. 각 셰이프 파일에 대해 .cpg로 저장합니다 (다른 이름으로 저장 대화 상자에서 셰이프 파일의 조각을 클릭 한 다음 확장명을 지우고 .cpg를 추가하면됩니다). 여러 부분 모양 파일). .cpg 확장자는 Arc에게이 파일이 .dbf 파일의 인코딩에 대한 정보가 들어있는 파일임을 알려줍니다. 동일한 이름이지만 다른 확장 형제와 함께 모양 파일에 번들로 묶이면 모양 파일의 인코딩은 이제 ArcGIS에서 자동으로 인식됩니다.

7) 짜잔. 이제 원본 파일 GeoDataBase에있는 그대로 정확하게 말할 수있는 한 영어와 아랍어 문자열을 모두 포함하는 shapefile이 있습니다. 설치시 ArcMap과 QGIS 모두에서 열리고 두 경우 모두 두 언어의 문자열이 맵 레이블을 포함하여 올바르게 표시됩니다.

주의 사항 :

  • ArcGIS의 모든 사본이 속성 테이블을 적절하게 채워진 텍스트 파일로 내보내는 것처럼 보이지는 않습니다 (적어도 한 대의 컴퓨터에서 속성 테이블을 텍스트 파일로 내보내려고하면 데이터 라인이 아닌 헤더 만있는 파일이 생성됩니다). Arc의 올바른 동작은 아니지만 (물론 속성 테이블을 텍스트로 내보낼 수 있어야 함) 일부 사용자에게는 나타날 수 있으므로 나머지 단계는 불가능합니다.

  • ArcGIS가 UTF-8 인코딩으로 새 모양 파일을 저장하는 것처럼 보이지 않습니다. 이는 데이터를 표시, 수정 및 사용하여 맵을 작성하려는 사용자가 아니라 데이터에서 새 모양 파일을 작성하려는 사용자에게만 영향을줍니다. 해결 방법은 여기에 자세히 설명 된대로 Windows 레지스트리를 엉망으로 만드는 것 같습니다 ( http://support.esri.com/cn/knowledgebase/techarticles/detail/21106 ). ArcGIS와 QGIS는 위의 프로세스를 사용하여 저장 한 shapefile을 행복하게 인식하는 것처럼 보였으므로 지오메트리와 테이블 항목을 수정하거나 명백한 문제없이 더 많은 아랍어 텍스트로 새 다각형을 추가 할 수 있기 때문에 처리하지 않아도됩니다 ( Arc는 UTF-8 인코딩으로 새로운 쉐이프 파일을 저장하고 싶지는 않지만 업데이트 / 복원하려는 것 같습니다).

  • LibreOffice의 기능이 Windows의 컴퓨터와 동일하다고 가정합니다. 대부분의 작업에 GNU / Linux를 사용하고 일부 작업이나 다른 작업에 ArcGIS 또는 Autocad를 사용해야하는 경우에만 Windows로 부팅하므로 Fedora에서 실행되는 Libreoffice의 .dbf 파일을 수정했습니다. Windows에서 동일한 방식으로 작동한다고 가정하지만 Windows 파티션에 LibreOffice를 설치하지 않으면 테스트 할 수 없으며 현재 인터넷 연결이 불필요하게 다운로드하는 데 약간 느립니다. 선택한 인코딩 (예 : Exceltodbf.sourceforge.net/)으로 .dbf 파일을 저장할 수있는 Excel 용 플러그인이 있지만 시도하지 않았습니다. .dbf를 조작하고 저장하는 다른 방법이있을 수도 있지만 LibreOffice를 사용하여 합리적으로 쉬운 방법을 찾은 후에는 그 방법을 살펴 보지 않았습니다.

  • ArcGIS에서 Production Mapping 확장을 지불하면이 문제에 따라 UTF-8 인코딩을 사용하여 FGDB를 shapefile로 직접 변환 할 수 있습니다. http://resources.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000 . 이 기본 기능 (유니 코드는 한동안 사용되었으며 영어 이외의 많은 언어가 존재하는 이유)이 추가 비용을 지불하는 고객에게만 제공되는 이유는 ESRI에 대한 질문입니다.


0

먼저 입력 데이터의 인코딩이 무엇인지 파악해야 데이터를 적절한 인코딩으로 변환하는 방법을 도구에 알릴 수 있습니다. Access가있는 경우 테이블을 MDB에서 직접 텍스트로 내보내고 출력 인코딩을 UTF8로 설정하려고합니다. ArcGIS에서 내 보낸 쉐이프 파일을 열면 인코딩이 올바르게 설정 되었습니까? DBF 는 코드 페이지를 지원하며 OGR이 변환을 위해 올바른 페이지를 선택하지 못할 수 있습니다.

입력 스트림을 명시 적으로 설정하기 위해 OGR 드라이버의 일부로 사용되는 MDBtools강제 하는 방법도 있지만 다른 방법을 먼저 시도해보십시오.


0

차라리 ArcGIS 방식으로 갈 것입니다. 여기 의 지시에 따라 ArcGIS에서 인코딩을 UTF-8로 설정 하십시오 . 그런 다음 피처 클래스를 ShapeFile로 내 보냅니다. 이제 각 레이어마다 추가 CPG (code page file) 파일을 얻게됩니다. 문자열이 "UTF-8"인 텍스트 파일이며 모든 데이터는 자동으로 UTF-8로 인코딩됩니다.

다른 인코딩을 사용하려면 지침을 참조하십시오.

중요한 것은이 할당을 마친 후에이 값을 "UTF-8"과 같이 유지하면이 설정을 기본값으로 변경해야합니다. 이후 ArcGIS는 "UTF-8"인코딩을 사용하여 모든 ShapeFile을 내 보냅니다.

희망이 당신을 도울 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.