2014-09-28 64 views
2

我需要帮助的R语言从分布式

从我的代码点集创建多边形:

inter1= read.table("C:/inter.csv", header=TRUE) 
inter1$xx<-inter1$long 
inter1$yy<-inter1$lat 
coordinates(inter1) = ~long + lat 
#Plot the results: 
plot(inter1) 

我有这样的情节:http://i.stack.imgur.com/98aTf.png

我现在找每组积分绘制一个多边形,我不知道我必须prceder去那里的过程,谢谢你的帮助

inter.csv:

long lat var1.pred 
1 4.2 19 31.8216045615229 
2 4.3 19 31.913824396486 
3 4.4 19 32.0090783396173 
4 4.5 19 32.1067681024233 
5 4.6 19 32.2061094352961 
6 4.7 19 32.3061148156713 
7 4.8 19 32.4055837134796 
8 4.9 19 32.503104196147 
9 5 19 32.5970697606984 
10 5.1 19 32.6857147918646 
11 5.2 19 32.767170733855 
12 5.3 19 32.8395428348418 
13 5.4 19 32.9010042955024 
14 5.5 19 32.9499
15 5.6 19 32.9848587133105 
16 5.7 19 33.004876178167 
17 5.8 19 33.0094002932703 
18 5.9 19 32.998365567474 
19 6 19 32.9721970820907 
20 6.1 19 32.9317751315546 
21 6.2 19 32.8783669584517 
22 6.3 19 32.8135349988031 
23 6.4 19 32.7390332831422 
24 6.5 19 32.6567036402505 
+0

您的表格是否包含标识每组点的列? – eblondel 2014-09-28 20:07:08

+0

不,观察都在一张表中,如下所示:我编辑了我的帖子 – user26480 2014-09-28 20:19:50

回答

6

就你而言,一种解决方案是通过中间栅格化,然后对其进行多边形化。可以对多边形进行平滑以获得更好的可视化效果。请参见下面的代码

inter1= read.table("inter.csv", header=TRUE) 

#add a category (required for later rasterizing/polygonizing) 
inter1 <- cbind(inter1, cat = rep(1L, nrow(inter1)),stringsAsFactors = FALSE) 

#convert to spatial points 
coordinates(inter1) = ~long + lat 

#gridify your set of points 
gridded(inter1) <- TRUE 

#convert to raster 
r <- raster(inter1) 

#convert raster to polygons 
sp = rasterToPolygons(r, dissolve = T) 

#addition transformation to distinguish well the set of polygons 
polys <- slot([email protected][[1]], "Polygons") 
output <- SpatialPolygons(
    Srl = lapply(1:length(polys), 
       function(x){ 
       p <- polys[[x]] 

       #applying spline.poly function for smoothing polygon edges 
       px <- slot(polys[[x]], "coords")[,1] 
       py <- slot(polys[[x]], "coords")[,2] 
       bz <- spline.poly(slot(polys[[x]], "coords"),100, k=3) 
       bz <- rbind(bz, bz[1,]) 
       slot(p, "coords") <- bz    

       # create Polygons object 
       poly <- Polygons(list(p), ID = x) 
       return(poly) 
       }), 
    proj4string = CRS("+init=epsg:4326") 
) 

#plot 
plot(sp, border = "gray", lwd = 2) #polygonize result 
plot(output, border = "red", add = TRUE) #smoothed polygons 

smoothed_polygons

注意:你有长/纬度坐标(CRS = EPSG:4326),所以我做了这个例子,你可以看到到指定空间的多边形的投影,在其施工期间。如果此时未指定proj4string,则仍可在创建output对象后执行此操作proj4string(output) <- CRS("+init=epsg:4326")

+0

非常感谢您的提议,但是我必须找到一种方法来分离点​​集 否则就是可以从这些点创建栅格? – user26480 2014-09-28 21:07:58

+1

是的,我以为你会有一个专栏,但我已经看到你的评论后。不确定光栅化是可行的。我要检查集群是否有帮助。 – eblondel 2014-09-29 07:22:58

+0

你能否附上一个链接到整个数据集来测试集群?谢谢 – eblondel 2014-09-29 08:36:58