Bên dưới chi tiết về quy trình tôi đã sử dụng để chuyển đổi Tệp GeoDataBase với các trường tiếng Ả Rập thành shapefiles với mã hóa UTF-8 mở vui vẻ trong cả QGIS và ArcMap hiển thị chính xác cả tiếng Ả Rập và tiếng Anh (không sử dụng tiện ích mở rộng để xuất hoặc đọc):
- Ý tưởng cơ bản là: từ FGDB xuất một shapefile bao gồm .dbf (mã hóa sai), sau đó xuất Bảng thuộc tính của cùng một lớp với văn bản (trong mã hóa đúng, là UTF-8) và sử dụng một chương trình khác để thay thế nội dung của shapefile .dbf bằng các trường dữ liệu UTF-8 thích hợp và lưu .dbf bằng mã hóa UTF-8. Sau đó thêm tệp .cpg vào mỗi shapefile để thông báo cho ArcGIS về mã hóa mới của .dbf. Các bước:
1) Thêm các lớp từ FGDB vào ArcMap (Tôi đã sử dụng 10.1, nhưng hoàn toàn không có lý do gì để nó không hoạt động trong các phiên bản trước, vì bit mã hóa xảy ra sau, bên ngoài Arc). Để xuất, nhấp chuột phải vào một lớp và chọn Dữ liệu-> Xuất dữ liệu, nhấp vào nút thư mục trong hộp thoại xuất để hiển thị hộp thoại Lưu và chọn Shapefile làm định dạng đầu ra.
1b) Phương pháp thay thế cho phương pháp trên: điều hướng đến FGDB trong ArcCatalog, nhấp chuột phải vào nó, chọn Xuất -> Để Shapefile (nhiều) và xuất toàn bộ FGCB dưới dạng một thư mục chứa đầy shapefile trong một thao tác).
2) Bây giờ bạn có một tập hợp các shapefile với chữ vô nghĩa trong đó chữ viết Ả Rập sẽ có (trên máy của tôi, nó hiển thị các dấu hỏi thay cho các ký tự). Các phần .dbf của chính các shapefiles, được mở trong Excel hoặc bất cứ thứ gì, có tiếng vô nghĩa thay vì tiếng Ả Rập; Đây không chỉ là vấn đề hiển thị trong chương trình GIS, mà chính các tệp .dbf không chứa các ký tự tiếng Ả Rập. Không hữu ích nào cả.
3) Trong ArcMap, mở Bảng thuộc tính của một lớp từ FGDB. Bảng mở ra với cả tiếng Anh và tiếng Ả Rập hiển thị đúng (đó là lý do FGDB được sử dụng ở vị trí đầu tiên). Trong menu Tùy chọn bảng của cửa sổ Bảng thuộc tính, chọn Xuất và trong hộp thoại Xuất dữ liệu, nhấp vào nút thư mục đầu ra để đến hộp thoại Lưu dữ liệu nơi bạn chọn Tệp văn bản làm loại đầu ra. Bây giờ bạn có một tệp văn bản sẽ mở trong Notepad bằng dấu phân cách dấu phẩy, được mã hóa dưới dạng UTF-8, với cả tiếng Anh và tiếng Ả Rập được mã hóa chính xác (tại thời điểm này, tiếng Ả Rập nên hiển thị đúng trong Notepad).
Bây giờ để có được thông tin đó vào các phần .dbf của các shapefiles!
4) Mở LibreScript Calc, một bản sao Excel miễn phí và mã nguồn mở để mở, thao tác và lưu tệp .dbf một cách dễ dàng, để mở tệp .dbf của một shapefile.
Nhân tiện, trong trường hợp này, tôi không sử dụng LibreOffice thay vì MS Office vì lý do ý thức hệ, mà đơn giản là vì tôi không thể tìm ra cách làm cho Excel lưu tệp .dbf, dễ dàng trong Calc, thực tế đó là tùy chọn mặc định khi nhấn Save sau khi đã mở và sửa đổi tệp .dbf trong Calc, trong khi Excel thực sự nói rằng tệp "không thể được lưu ở định dạng hiện tại" và không cung cấp một cách hữu ích để "lưu nó dưới định dạng mới nhất" (không có tùy chọn cho .dbf đi lên). Có các tiện ích mở rộng / plugin cho Excel có ý định thực hiện công việc (
Tệp .dbf trong Calc vẫn hiển thị tiếng vô nghĩa thay cho tiếng Ả Rập. Ngoài ra, hãy mở .csv mà bạn đã xuất từ bảng thuộc tính của cùng một shapefile, đảm bảo bạn chỉ định UTF-8 là mã hóa (và dấu phẩy là dấu phân cách) trong đoạn hội thoại mở. Các tệp văn bản sẽ mở trong bảng tính Calc thứ hai với tiếng Ả Rập được hiển thị chính xác và chúng phải chứa các cột giống như .dbf cộng với cột OBRIID ở đầu. Sao chép-dán các cột từ .csv có chứa tiếng Ả Rập phù hợp vào .dbf (Tôi thực sự chỉ sao chép-dán toàn bộ bảng ngoại trừ cột ID ngoài cùng bên trái để tiết kiệm thời gian; dù sao thông tin cũng giống hệt nhau). Nhấn Save trong .dbf đã sửa đổi trong LibreScript (nó sẽ hỏi bạn có thực sự muốn sử dụng định dạng kỳ lạ như .dbf hay không, vâng, bạn làm thế).
Lặp lại quy trình này cho tất cả các thành phần .dbf của các shapefiles từ FGDB, thay thế tất cả các cột vô nghĩa bằng các chuỗi Ả Rập.
5) Ngay sau khi bạn đã lưu lại các phần .dbf với các cột tiếng Ả Rập được dán vào, bạn có thể mở các shapefile trong QGIS và chúng sẽ hoạt động chính xác trong cả hai ngôn ngữ, với điều kiện bạn chỉ định UTF-8 là mã hóa trong Nhập Vector Hộp thoại tập tin. Tuy nhiên, chúng vẫn không hoạt động chính xác trong ArcGIS (hoặc ít nhất là không phải trong tất cả các phiên bản) vì ArcGIS không tự động nhận dạng mã hóa hoặc cho phép bạn chọn nó khi bạn thêm shapefile vào dự án. Arc cần một thành phần riêng cho shapefile, được gọi là tệp Chuyển đổi trang mã (.cpg), để hướng dẫn nó mã hóa để đọc.
6) Sử dụng trình soạn thảo văn bản (notepad, nano hoặc bất cứ thứ gì, nhưng không phải Word hoặc bất kỳ trình xử lý văn bản nào khác) để tạo tệp văn bản chỉ chứa năm ký tự "UTF-8". Lưu nó dưới dạng .cpg cho mỗi shapefile (Tôi chỉ cần nhấp vào một phần của shapefile trong đoạn hội thoại Save As, sau đó xóa phần mở rộng và thêm .cpg), trong cùng thư mục với shapefile (về cơ bản nó trở thành một phần khác củaHi các shapefile đa phần). Phần mở rộng .cpg cho Arc biết rằng đây là tệp chứa thông tin về mã hóa của tệp .dbf; một khi nó được đưa vào shapefile cùng với các anh chị em cùng tên nhưng khác nhau, mã hóa của shapefile giờ được ArcGIS tự động nhận ra.
7) Voila. Bây giờ bạn có các shapefile chứa cả chuỗi tiếng Anh và tiếng Ả Rập, theo như tôi có thể nói chính xác như chúng có trong File GeoDataBase ban đầu. Chúng mở trong các bản cài đặt của tôi cả ArcMap và QGIS và trong cả hai trường hợp, các chuỗi trong cả hai ngôn ngữ đều hiển thị chính xác bao gồm cả trong nhãn bản đồ.
Hãy cẩn thận:
Không phải tất cả các bản sao của ArcGIS dường như xuất bảng thuộc tính dưới dạng tệp văn bản được điền đúng (trên ít nhất một máy tính, cố gắng xuất bảng thuộc tính sang tệp văn bản dẫn đến một tệp chỉ có các tiêu đề, không phải các dòng dữ liệu. KHÔNG phải là hành vi đúng đắn của Arc (tất nhiên là nó có thể xuất Bảng thuộc tính dưới dạng văn bản), nhưng nó có thể xuất hiện đối với một số người dùng. Điều này làm cho các bước còn lại không thể thực hiện được.
Dường như ArcGIS sẽ không lưu các shapefile mới với mã hóa UTF-8. Điều này sẽ chỉ ảnh hưởng đến người dùng muốn tạo các shapefile mới từ dữ liệu, chứ không phải những người chỉ muốn hiển thị, sửa đổi và sử dụng chúng để tạo bản đồ. Cách giải quyết có vẻ liên quan đến việc gây rối với sổ đăng ký Windows của bạn như được nêu chi tiết tại đây: ( http://support.esri.com/cn/ledgeledridease/techarticles/detail/21106 ). Tôi đã không phải đối phó với nó bởi vì cả ArcGIS và QGIS của tôi dường như đều vui vẻ nhận ra các shapefile mà tôi đã lưu bằng quy trình trên và tôi có thể sửa đổi các mục hình học và bảng hoặc thậm chí thêm đa giác mới với nhiều văn bản tiếng Ả Rập hơn mà không gặp vấn đề rõ ràng nào ( mặc dù Arc dường như không muốn lưu các shapefile mới bằng mã hóa UTF-8, nhưng có vẻ như họ sẵn sàng cập nhật / lưu lại chúng).
Tôi giả định rằng chức năng của LibreOffice giống với Windows như trên máy tính của tôi. Tôi sử dụng GNU / Linux cho hầu hết các công việc của mình và chỉ khởi động vào Windows nếu tôi cần sử dụng ArcGIS hoặc Autocad cho một số tác vụ khác, vì vậy tôi đã sửa đổi tệp .dbf trong Libreoffice chạy trên Fedora. Tôi cho rằng nó hoạt động theo cách tương tự trên Windows, nhưng tôi không thể kiểm tra rằng nếu không cài đặt LibreOffice trên phân vùng Windows của tôi và kết nối Internet hiện tại của tôi hơi chậm đối với các tải xuống không cần thiết. Có các plugin cho Excel cho phép bạn lưu các tệp .dbf trong một mã hóa đã chọn (ví dụ: exceltodbf.sourceforge.net/), nhưng tôi chưa thử chúng. Có thể có nhiều cách khác để thao túng và lưu .dbf, nhưng tôi đã không xem xét chúng sau khi tìm ra cách dễ dàng hợp lý để làm điều đó với LibreOffice.
Toàn bộ vấn đề dường như có thể tránh được nếu bạn trả tiền cho tiện ích mở rộng Bản đồ sản xuất trong ArcGIS, cho phép bạn chuyển đổi trực tiếp FGDB thành shapefiles bằng mã hóa UTF-8 theo trang này: http://resource.arcgis.com/en/help /main/10.1/index.html#//0103000001m1000000 . Tại sao chức năng khá cơ bản này (Unicode đã xuất hiện được một thời gian và có rất nhiều ngôn ngữ khác ngoài tiếng Anh) chỉ dành cho những khách hàng trả thêm tiền là câu hỏi dành cho ESRI.