在rasterToPolygons
包中使用raster
时,符合公式标准的每个单元格都会成为自己的多边形:
library(raster)
r <- raster(nrow=18, ncol=36)
r[] <- runif(ncell(r)) * 10
r[r>8] <- NA
pol <- rasterToPolygons(r, fun=function(x){x>6})
plot(pol)
然而,我希望每个具有相邻边或角的多边形都是一个较大多边形的一部分,从而减少了多边形的总数。有没有办法实现这个目标?
答案 0 :(得分:0)
OLD ANSWER:
您可以使用参数library(raster)
r <- raster(nrow=18, ncol=36)
r[] <- sample(2, ncell(r), replace=TRUE)
pol <- rasterToPolygons(r, dissolve=TRUE)
plot(pol)
library(raster)
r <- raster(nrow=18, ncol=36)
r[] <- runif(ncell(r)) * 10
r[r>8] <- NA
新答案
如果你不关心这些值,你可以做这样的事情
您的示例数据
NA
将您想要的所有值单元格设置为一个值,将所有其他值设置为x <- reclassify(r, rbind(c(-Inf, 6, NA), c(6, Inf, 1)))
pol <- rasterToPolygons(x, dissolve=TRUE)
pols <- disaggregate(pol)
pols
#class : SpatialPolygonsDataFrame
#features : 80
请注意,pol现在只有1个(多)多边形。如果要分离未连接的部分,可以执行
$sql = "SELECT * FROM users_gor WHERE usrg_usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users_gor = $rows[0];
$sql = "SELECT * FROM users_vgr WHERE usrv_usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users_vgr = $rows[0];
$sql = "SELECT * FROM users WHERE usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users = $rows[0];
$sql = "SELECT * FROM vlog-ops WHERE vlop_usr_id ".$db->quote($user_info['usr_id'])." LIMIT 1";
$rows = $db->select($sql);
$users = $rows[0];
$sql = "SELECT usr_name AS vlop_usr_name FROM users WHERE usr_id = ".$db->quote($user_info['usr_id'])." LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$sql = "SELECT usr_name FROM users WHERE usr_id='".$db->quote($user_info['usr_id'])." LIMIT 1";
$creator = $db->select1($sql);
$users = $rows[0];
$query = "SELECT u.usr_name, g.usrg_orgname, v.vlop_usr_id FROM users u
JOIN vlog-ops v on u.usr_id = v.vlop_usr_id
JOIN users_gor g on u.usr_id = g.usrg_usr_id";
请注意,对角线的adjecent多边形是彼此分开的,因为它们不能用于有效的单个多边形(它将是自相交的)。
答案 1 :(得分:-1)
这可以通过使用poly2nb
包中的spdep
函数来定义每个多边形的邻居,使用下面创建的函数创建区域分配的向量,使用{{1}从spCbind
包中绑定maptools
到regions
,然后使用pol
中的regions
函数最终解散unionSpatialPolygons
。创建函数的基本结构是maptools
至少有一个多边形的邻居被分配给一个组if
赋予多边形,并且该组的邻居then
将多边形和邻居分配给新组
else