Questions tagged «r»

统计计算语言和软件环境。


5
通过R中的许多多边形提高裁剪,遮罩和提取栅格的速度?
我正在从基于数千个多边形边界的栅格中提取不同土地利用类型的面积和覆​​盖率。我发现,如果我遍历每个单独的多边形并进行裁剪,然后将栅格蒙版减小到特定多边形的大小,则提取功能的运行速度会更快。尽管如此,它的运行速度很慢,我想知道是否有人对提高我的代码效率和速度有任何建议。 我发现与此相关的唯一的事情就是这个响应由Roger Bivand使用谁建议GDAL.open(),并GDAL.close()作为以及getRasterTable()和getRasterData()。我研究了这些内容,但过去在gdal上遇到过麻烦,并且对它的了解不够深,不知道如何实现它。 可重现的示例: library(maptools) ## For wrld_simpl library(raster) ## Example SpatialPolygonsDataFrame data(wrld_simpl) #polygon of world countries bound <- wrld_simpl[1:25,] #name it this to subset to 25 countries and because my loop is set up with that variable ## Example RasterLayer c <- raster(nrow=2e3, ncol=2e3, crs=proj4string(wrld_simpl), xmn=-180, xmx=180, ymn=-90, ymx=90) …

2
在R中连接多边形
我想知道如何使用R代码连接空间多边形? 我正在处理某些区域随时间变化的人口普查数据,我希望将多边形和相应的数据合并在一起,并仅报告合并区域。我正在维护一个具有随人口普查而变化的多边形列表,并计划合并。我想将此区域名称列表用作查找列表,以应用于不同年份的人口普查数据。 我想知道使用什么R函数来合并选定的多边形和相应的数据。我已经用谷歌搜索过,但是结果简直让我感到困惑。


2
找出点簇的质心
在网上搜索时,经常会找到用于查找多边形质心的解决方案。我感兴趣的是找到点簇的质心。加权平均值。如果有人可以提供一些指针,伪代码(甚至更好的是,R包已经解决了这个问题)或如何解决此问题的链接,我将不胜感激。 编辑 融合已经开始(再次)。iant提出了一种平均坐标并将其用于质心的方法。当我在此网页上看到正确的图片时,这正是我的想法。 这是一些简单的R代码,用于绘制下图来说明这一点(×是质心): xcor <- rchisq(10, 3, 2) ycor <- runif(10, min = 1, max = 100) mx <- mean(xcor) my <- mean(ycor) plot(xcor, ycor, pch = 1) points(mx, my, pch = 3) 编辑2 cluster::pam()$medoids返回一组聚类的medoid。这是@Joris Meys无耻地偷来的一个例子: library(cluster) df <- data.frame(X = rnorm(100, 0), Y = rpois(100, 2)) plot(df$X, df$Y) …
27 r  centroids 

9
使用R中的PostGIS数据?
我几乎一直都在使用R,现在我正在使用它进行空间数据挖掘。 我有一个(显然)GIS数据的PostGIS数据库。 如果我想进行统计空间分析和绘图,则是以下更好的方法: 将表格导出为shapefile或; 直接工作到数据库?
27 postgis  postgresql  r 

2
R将SF对象转换回SpatialPolygonsDataFrame
如何将sf对象转换回SpatialPolygonsDataFrame? 我正在运行R 3.4.0和SF版本0.4.1。该SF文件中提到的as_Spatial功能,但这不是提供我的安装(出于某种原因)。
27 r  sf 

7
各种栅格数据格式的速度
我在查找不同栅格文件格式的任何讨论或比较基准测试时遇到麻烦(例如,用于R中的数据分析)。是否有人对为什么特定格式可能更快或更慢有任何见解?还是应该使差异最小? 具体来说,我感兴趣的是将栅格(例如GEOTIFF文件)转换为其他格式(例如netCDF)是否值得为了加快读取/写入和其他操作的速度。

1
如何更改SpatialPolygons对象的多边形填充颜色和边框颜色?
我有要绘制的SpatialPolygons或SpatialPolygonsDataFrames。如何使用R中的三种绘图系统(基本图形,点阵图形和ggplot2)更改颜色? 示例数据: library(sp) Srs1 = Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))), "s1") Srs2 = Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "s2") SpDF <- SpatialPolygonsDataFrame( SpatialPolygons(list(Srs1,Srs2)), data.frame( z=1:2, row.names=c("s1","s2") ) ) spplot(SpDF, zcol="z")
25 polygon  r 

1
获取TopologyException:输入几何1无效,这是由于R中的自相交导致的?
由无效的多边形几何形状引起的“ TopologyException:输入几何1无效”自相交错误已得到广泛讨论。但是,我没有在网络上找到仅依赖于R功能的便捷解决方案。 例如,我已经设法从map("state", ...)遵循Josh O'Brien 在这里的好答案的输出中创建一个“ SpatialPolygons”对象。 library(maps) library(maptools) map_states = map("state", fill = TRUE, plot = FALSE) IDs = sapply(strsplit(map_states$names, ":"), "[[", 1) spydf_states = map2SpatialPolygons(map_states, IDs = IDs, proj4string = CRS("+init=epsg:4326")) plot(spydf_states) 现在,这种广泛应用的数据集的问题在于自相交发生在以下给定的点。 rgeos::gIsValid(spydf_states) [1] FALSE Warning message: In RGEOSUnaryPredFunc(spgeom, byid, "rgeos_isvalid") : Self-intersection at or near point …

3
如何加快R中多边形的绘制速度?
我想在描绘一些变量的栅格图像上绘制北美的国界,然后使用R在轮廓上方覆盖轮廓。我已经成功使用基本图形和点阵进行了此操作,但似乎绘制过程是太慢了!我还没有在ggplot2中完成此操作,但是我怀疑它在速度方面会更好。 我将数据保存在从grib文件创建的netcdf文件中。现在,我下载了加拿大,美国和墨西哥的国家边界,这些边界可以从GADM的RData文件中获得,这些文件作为SpatialPolygonsDataFrame对象读入R。 这是一些代码: # Load packages library(raster) #library(ncdf) # If you cannot install ncdf4 library(ncdf4) # Read in the file, get the 13th layer # fn <- 'path_to_file' r <- raster(fn, band=13) # Set the projection and extent p4 <- "+proj=lcc +lat_1=50.0 +lat_2=50.0 +units=km +x_0=32.46341 +y_0=32.46341 +lon_0=-107 +lat_0=1.0" projection(r) <- …
24 polygon  r 


2
使用R计算地图上与另一个重叠多边形相交的多个多边形的面积
我从军械测量局下载了一个shapefile,该文件提供了英国一个县的选举区(分区)边界。我已经成功地使用R加载了shapefile,并ggplot2按照此问题中的描述绘制了各种地图。一切都很好。 现在,我想创建一个任意形状的新多边形,将其添加到地图上,然后计算居住在该形状下的区域中的人口,该区域可能覆盖或部分覆盖多个分区。我有每个选举分区的人口,我可以简化假设,即每个病房的人口是均匀分布的。这表明了以下步骤。 1)在地图上覆盖部分覆盖多个选举区的新形状。出于辩论的原因,假设有3个分区。看起来像这样。[编辑:除了在下面的图形中,跨度为5格而不是3格] 2)计算与覆盖的多边形相交的这三个分区中每个分区的面积百分比。 3)通过获得覆盖形状覆盖的每个分区的面积百分比,然后乘以每个分区的人口,估算人口。 我想我可能可以解决如何创建多边形并将其覆盖在地图上的问题,即使用对此问题和其他问题的有用答案将其添加到现有数据框中。让我担心的一点是,要计算出覆盖形状所覆盖的每个分区的百分比。数据框中的lat和long列是那些奇怪的Ordnance Survey OpenData数据(Eastings和Northings等)。 所以我的第一个问题是:如何使用这些数据查找定义选举区划边界的多边形的面积(或面积的子集)?因为即使该数据帧的一个有意义的子集都很大,所以我习惯于dput创建一个500k的文件(可以从此处复制和粘贴或下载该文件),而不是在此问题中发布它。使用以下内容创建了构成以上图像基础的地图: require(ggplot2) ggplot(smalldf, aes(x = long, y = lat, group = group)) + geom_polygon(colour = "grey50", size = 1, aes(fill = smalldf$bin)) 我的第二个问题是:我在使用正确的工具吗?目前,我正在使用readShapePoly从maptools包装中读取shapefile的文件。然后fortify,我使用来创建大约130k行的数据框,适用于ggplot。如果有一个针对此类过程的有用工具,也许我应该使用其他软件包?
22 shapefile  r 

4
正确的方法来绑定具有相同多边形ID的SpatialPolygonsDataFrames?
ID重叠时,将SPDF绑定在一起的正确习惯用法是什么?请注意,在这里(通常是这样),ID基本上是没有意义的,所以我不能仅使rbind忽略它们就很烦人了。 library(sp) library(UScensus2000) library(UScensus2000tract) data(state) # for state names states <- gsub( " ", "_", tolower(state.name) ) datanames <- paste(states,"tract", sep=".") data( list=datanames ) lst <- lapply(datanames,get) nation <- do.call( rbind, lst ) Error in validObject(res) : invalid class “SpatialPolygons” object: non-unique Polygons ID slot values # This non-exported function …
22 polygon  r 

2
在R中不使用shapefile的情况下实例化空间多边形
因此,我们在R中读取shapefile的通常方法是通过maptools包,如下所示: sfdata <- readShapeSpatial("/path/to/my/shapefile.shp", proj4string=CRS("+proj=longlat")) 但是,我有一个用例,其中没有shapefile.shp,而是有一系列多边形坐标 16.484375 59.736328125,17.4951171875 55.1220703125,24.74609375 55.0341796875,22.5927734375 61.142578125,16.484375 59.736328125 及其对应的投影 coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 如何直接从该数据“实例化” sfdata(将是“多边形对象”)?(无需以round回的方式使用这些数据创建shapefile,然后从新创建的shapefile中读取)
22 shapefile  polygon  r 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.