Построение шейп-файла с ошибкой ggplot2

За последние несколько дней я с головой погрузился в использование R для создания карт. Я широко использовал R для моделирования и т. д., но раньше такого рода работы не было. У меня есть некоторые вопросы и проблемы, касающиеся шейп-файлов, того, как они читаются и так далее.

Я загрузил шейп-файлы из Австралийского статистического бюро , там множество файлов с государственными границами, почтовыми индексами, городами и так далее. Шейп-файлы огромны, границы штатов Австралии содержат около 1,8 миллиона координатных точек, другой файл, который я пробовал, — это статистическая область, в которой более 8 миллионов. Я ничего не делал с этим файлом, так как он слишком велик для моей настройки R.

Я прочитал шейп-файл с помощью readShapePolyи преобразовал его вот так

AUS@data$id = rownames(AUS@data)    
AUS.points = fortify(AUS, region="id")
AUS.df = join(AUS.points, AUS@data, by="id")

После того, как я преобразовал файл формы границ штата из SpatialPolygonsDataFrameв обычный фрейм данных, я успешно построил его, но это заняло целую вечность, а детали были слишком велики. Я думал использовать thinnedSpatialPolyдля упрощения, но выдает ошибку:

Error in stopifnot(length(Sr@polygons) == nrow(data)) :trying to get slot "polygons" from an object of a basic class ("NULL") with no slots

С чем гугл мне помочь не может.

Моя следующая стратегия состояла в том, чтобы прочитать его в SAS и использовать proc greduce, который берет файл и создает поле плотности, и вы можете выбрать, насколько плотными будут полигоны.

proc mapimport out=states datafile='\Digital Boundaries\States\Shape file\STE_2011_AUST.shp';
id ste_code11;    run;
proc greduce data = states out = reduced_states;
id ste_code11;    run;

У SAS дерьмовая графика, и я даже не мог построить это для меня, поэтому я экспортировал набор данных и прочитал его обратно в R с новым полем плотности, которое я надеюсь использовать в своих графиках.

Моя проблема сейчас в том, что когда я перехожу к графику в R, я получаю этоMap of Australian State Borders

ggplot(data=states.df, aes(X, Y, group=SEGMENT)) + 
geom_polygon(colour='black', fill='white') + theme_bw()

Я предполагаю, что это потому, что полигоны не в порядке или сломались? Я использовал эту функцию, чтобы попытаться воссоединить свои полигоны, но все равно безуспешно

RegroupElements <- function(df, longcol, idcol){
g <- rep(1, length(df[,longcol]))
if (diff(range(df[,longcol])) > 300) { # check if longitude within group differs more                than 300 deg, ie if element was split
d <- df[,longcol] > mean(range(df[,longcol])) # we use the mean to help us separate the   extreme values
g[!d] <- 1 # some marker for parts that stay in place (we cheat here a little, as we do not take into account concave polygons)
g[d] <- 2 # parts that are moved 
}
g <- paste(df[, idcol], g, sep=".") # attach to id to create unique group variable for   the dataset
df$group.regroup <- g
df
}

### Function to close regrouped polygons
# Takes dataframe, checks if 1st and last longitude value are the same, if not, inserts  first as last and reassigns order variable
ClosePolygons <- function(df, longcol, ordercol){
if (df[1,longcol] != df[nrow(df),longcol]) {
tmp <- df[1,]
df <- rbind(df,tmp)
}
o <- c(1: nrow(df)) # rassign the order variable
df[,ordercol] <- o
df
}  

Итак, наконец, мои вопросы! Как люди справляются с большими чрезмерно подробными шейп-файлами? Почему не работает thinnedspatialpoly (Я хотел бы избежать SAS, если это возможно )? Как мне сделать так, чтобы мой сюжет не выглядел дерьмом?

Наконец-то мои характеристики R:

R version 2.15.1 (2012-06-22)
Platform: x86_64-pc-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] gridExtra_0.9   gpclib_1.5-1    ggmap_2.1       maptools_0.8-16
[5] lattice_0.20-6  rgeos_0.2-7     plyr_1.7.1      stringr_0.6    
[9] ggplot2_0.9.1   sp_0.9-99       shapefiles_0.6  foreign_0.8-50 
[13] fastshp_0.1-0  

loaded via a namespace (and not attached):
[1] colorspace_1.1-1   dichromat_1.2-4    digest_0.5.2       labeling_0.1      
[5] MASS_7.3-18        memoise_0.1        munsell_0.3        png_0.1-4         
[9] proto_0.3-9.2      RColorBrewer_1.0-5 reshape2_1.2.1     RgoogleMaps_1.2.0 
[13] rjson_0.2.8        scales_0.2.1       tools_2.15.1   

8
задан dom_oh 11 July 2012 в 08:04
поделиться