2016-01-20 24 views
8

Tôi đang cố gắng đọc bản đồ vector OGR bằng cách sử dụng chức năng readOGR được cung cấp bởi gói rgdal, nhưng tôi gặp một chút rắc rối với tiếng Nga. Tôi đã cung cấp một ví dụ nhỏ về dữ liệu trông như thế nào, các dấu phẩy như ö được thay thế bằng \ 303 \ 266.Mã hóa ngôn ngữ tiếng Đức khi sử dụng readOGR

map <-readOGR("/path/to/data.gdb", layer = "layer") 
[email protected]$name 
# [1] L\303\266rrach 
# [2] Karlsruhe 
# [3] B\303\266blingen 
# [4] ... 

tôi đã cố gắng để xác định một mã hóa trong readOGR function (readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "UTF-8" hoặc readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "LATIN-1"), nhưng có vẻ như nó là bỏ qua các tham số mã hóa hoàn toàn, kể từ khi tôi nhận được kết quả tương tự cho mỗi mã hóa tôi Đã thử. Có ai biết làm thế nào tôi có thể nhận được các chức năng readOGR hoặc R để hiển thị đúng umlauts Đức?

+0

Bạn có trên một máy tính Windows? –

+0

Tôi đang chạy Máy chủ RStudio trên Máy chủ Debian 8. – Daniel

+0

Rất lạ. Tôi đang đọc một tập tin geojson/shp với mã hóa utf8 và màn hình hiển thị trong R là sai lầm. Nếu tôi đọc cùng một dữ liệu thông qua một tập tin csv sử dụng mã hóa utf8 (cả hai xuất khẩu từ QGIS), mọi thứ đều ổn và dandy. Ai đó đưa cho tôi một khẩu súng. –

Trả lời

2

Tôi không hoàn toàn chắc chắn những gì encoding = "UTF-8/LATIN-1/..." có thể làm. Tôi đã mong đợi rằng bạn sẽ chọn một và chỉ một chương trình mã hóa. Trên máy tính của tôi, tôi làm thấy bản dịch của nhân vật bát phân để o-âm sắc:

> 'B\303\266blingen' 
[1] "Böblingen" 
> 'L\303\266rrach' 
[1] "Lörrach" 

Để xem các công ước khác nhau cho các ký tự R, gõ:

?Quotes 
+0

Tôi muốn chỉ ra rằng tôi đã sử dụng mã hóa khác nhau trong khi đọc bản đồ vector OGR. Tôi đã đọc nó một lần với UTF-8, một lần với LATIN-1, vv Đối với câu trả lời của bạn, đó là kinda lạ, tôi nhận được kết quả khác nhau. ''B \ 303 \ 266blingen' #" B \ 303 \ 266blingen "' – Daniel

+0

Bên cạnh mã hóa, cũng cần có các ký tự trong phông chữ đang được sử dụng. Phông chữ được sử dụng trong giao diện điều khiển của bạn dường như không có ánh xạ phù hợp cho o-umlaut. Phông chữ mặc định của tôi là Courier. Bạn cũng nên kiểm tra cài đặt ngôn ngữ của bạn. '? Sys.getlocale' –

+0

Đó là vấn đề. Sys.getlocale() đưa ra thông tin mà hiện tại "C" đã được sử dụng, tôi đã thay đổi nó bằng Sys.setlocale() thành một miền địa phương hỗ trợ UTF-8 và bây giờ ''L \ 303 \ 266rrach'' được hiển thị chính xác như "Lörrach". – Daniel

1

Mã hóa-thông số được bỏ qua, nếu biểu tượng không được đặt thành TRUE.

3

Julian đúng.

file_name <- "../gis_data/bw/AX_KommunalesGebiet.shp" 
shape_kommunal <- readOGR(file_name, layer = "AX_KommunalesGebiet", use_iconv = TRUE, encoding = "UTF-8") 
data_kommunal <- [email protected] 
head(data_kommunal) 

trả về chuỗi một cách chính xác:

GKZ    NAME 
0 08236074   Kämpfelbach 
1 08425052   Grundsheim 
2 08435067   Deggenhausertal 
Các vấn đề liên quan