2016-01-20 12 views
8

Sto provando a leggere una mappa vettoriale OGR utilizzando la funzione readOGR fornita dal pacchetto rgdal, ma ho un po 'di problemi con le dieresi tedesche. Ho fornito un piccolo esempio di come appaiono i dati, dieresi come ö sono sostituiti con \ 303 \ 266.Codifica delle dieresi tedesche durante l'utilizzo di readOGR

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

Ho cercato di specificare una codifica nella funzione readOGR (readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "UTF-8" o readOGR(dsn = "/path/to/data.gdb", layer = "layer", encoding = "LATIN-1"), ma sembra che ignora il parametro di codifica del tutto, dal momento che sto ottenendo lo stesso risultato per ogni codifica I' ci ho provato Qualcuno sa come posso ottenere la funzione readOGR o R per visualizzare le dieresi tedesche corrette?

+0

Sei su una macchina Windows? –

+0

Sto eseguendo RStudio Server su un server Debian 8. – Daniel

+0

Molto strano. Sto leggendo un file geojson/shp con la codifica utf8 e il display in R è incasinato. Se leggo gli stessi dati attraverso un file csv usando la codifica utf8 (entrambi esportati da QGIS), tutto va bene e dandy. Qualcuno mi dà una pistola. –

risposta

2

Non sono abbastanza sicuro di cosa potrebbe fare encoding = "UTF-8/LATIN-1/...". Mi sarei aspettato che avresti scelto uno e un solo schema di codifica. Sulla mia macchina io vedo la traduzione di quel carattere ottale per l'o-dieresi:

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

per vedere le varie convenzioni per i caratteri R, tipo:

?Quotes 
+0

Volevo indicare che ho usato diverse codifiche durante la lettura della mappa vettoriale OGR. L'ho letto una volta con UTF-8, una volta con LATIN-1, ecc. Per quanto riguarda la tua risposta, è piuttosto strano, ottengo risultati diversi. '' B \ 303 \ 266blingen '# "B \ 303 \ 266blingen" ' – Daniel

+0

Oltre alle codifiche, è anche necessario inserire caratteri nel carattere. Il font utilizzato nel display della tua console non sembra avere le mappature corrette per o-umlaut. Il mio carattere predefinito è Courier. Dovresti anche controllare le impostazioni locali. '? Sys.getlocale' –

+0

Questo era il problema. Sys.getlocale() ha fornito le informazioni che attualmente è stata utilizzata "C", l'ho modificata con Sys.setlocale() in una locale che supporta UTF-8 e ora "L \ 303 \ 266rrach" è correttamente visualizzato come "Lörrach". – Daniel

1

La codifica-parametro viene ignorato, se iconv non è impostato su TRUE.

3

Julian ha ragione.

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) 

restituisce la stringa correttamente:

GKZ    NAME 
0 08236074   Kämpfelbach 
1 08425052   Grundsheim 
2 08435067   Deggenhausertal 
Problemi correlati