标签: r-maptools

通过R中的属性对SpatialPolygonsDataFrame(即删除多边形)进行子集化的简单方法

我想根据@data数据框中的相应属性值从SpatialPolygonsDataFrame对象中删除一些多边形,以便我可以绘制简化/子集化的shapefile.到目前为止,我还没有找到办法做到这一点.

例如,假设我要删除此世界shapefile中面积小于30000的所有多边形.我将如何进行此操作?

或者,同样,我如何删除Antartica?

require(maptools)

getinfo.shape("TM_WORLD_BORDERS_SIMPL-0.3.shp") 
# Shapefile type: Polygon, (5), # of Shapes: 246
world.map <- readShapeSpatial("TM_WORLD_BORDERS_SIMPL-0.3.shp")

class(world.map)
# [1] "SpatialPolygonsDataFrame"
# attr(,"package")
# [1] "sp"

head(world.map@data)
#   FIPS ISO2 ISO3 UN                NAME   AREA  POP2005 REGION SUBREGION     LON     LAT
# 0   AC   AG  ATG 28 Antigua and Barbuda     44    83039     19        29 -61.783  17.078
# 1   AG   DZ  DZA 12             Algeria 238174 32854159      2        15   2.632  28.163
# 2   AJ   AZ  AZE 31          Azerbaijan   8260  8352021    142       145 …
Run Code Online (Sandbox Code Playgroud)

mapping r spatial r-maptools

66
推荐指数
4
解决办法
5万
查看次数

如何在R中创建一个填写了特定国家/地区的世界地图?

我想用R来生成一个非常基本的世界地图,其中一组特定的国家用红色填充,表明它们是疟疾流行国家.

我在数据框中列出了这些国家/地区的列表,但我正在努力将它们叠加在世界地图上.

我已尝试使用该wrld_simpl对象以及包中的joinCountryData2Map方法rworldmap.

我会评论这个答案,以防止增加一个可能多余的问题,但我目前没有足够的声誉,为此道歉.

/sf/answers/637195821/

我很难理解plot()命令的参数- 我想知道是否有一种简单的方法告诉R在wrld_simpl地图上列出我的列表中的所有国家名称而不是使用grepl()等等.

plot(wrld_simpl, 
     col = c(gray(.80), "red")[grepl("^U", wrld_simpl@data$NAME) + 1])
Run Code Online (Sandbox Code Playgroud)

maps r r-maptools rworldmap

21
推荐指数
3
解决办法
2万
查看次数

如何将gpclibPermit()转为TRUE

当我跑步时gpclibPermit(),我得到了答案FALSE.我怎样才能改变它TRUE

r r-maptools

20
推荐指数
2
解决办法
2万
查看次数

使用maptools readShapePoly在R中打开SHP文件时出错

我是新来的R和是继上发现的GGPLOT2包下面的教程在这里.但是,每当我尝试加载基本shapefile时,readShapePoly()函数都会抛出错误.我使用了以下代码:

library("ggplot2")
library("gpclib")
library("maptools")
setwd("~/Documents/R Projects/Intro to ggplot2") 
#Intro to ggplot 2 contains the .shp file and associated data
sport <- readShapePoly("london_sport.shp")
Run Code Online (Sandbox Code Playgroud)

这让我:

Error in getinfo.shape(filen) : Error opening SHP file
Run Code Online (Sandbox Code Playgroud)

我试过省略文件扩展名.我也尝试下载其他.shp文件也会抛出相同的错误.我也尝试使用完整的文件路径调用readShapePoly,这也不起作用.我正在使用R studio(mac OSX),但是使用标准R窗口我得到了同样的错误.我已经尝试过关于以前封闭威胁的建议"在Rstudio中打开SHP文件时出错",但无济于事.

编辑:错误是缺少.dbf文件.感谢@Spacedman的修复.

r shapefile r-maptools

18
推荐指数
2
解决办法
3万
查看次数

将"map"对象转换为"SpatialPolygon"对象

我猜我有一个简单的解决方案,但我遇到了一些麻烦.

我试图转换以下map对象:

require(maps)
usa <- map("state")
Run Code Online (Sandbox Code Playgroud)

SpatialPolygon使用map2SpatialPolygons函数进入对象:

require(maptools)
usa.sp <- map2SpatialPolygons(usa, IDs=usa$names,proj4string=CRS("+proj=longlat"))
Run Code Online (Sandbox Code Playgroud)

我一直收到以下错误:

Error in map2SpatialPolygons(usa, IDs = usa$names, proj4string = CRS("+proj=longlat")) : 
  map and IDs differ in length
Run Code Online (Sandbox Code Playgroud)

经过一些研究,看起来ID的长度为63,并且map在应用函数后对象的长度为169 .NAmat2xyList(cbind(map$x, map$y))(我找不到源代码).

有人有主意吗?这是usa地图对象的结构:

> str(usa)
List of 4
 $ x    : num [1:1705] -88.4 -88.1 -88 -87.9 -87.8 ...
 $ y    : num [1:1705] 30.4 30.4 30.8 30.6 30.3 ...
 $ range: num [1:4] -124.7 -67 25.1 49.4
 $ names: …
Run Code Online (Sandbox Code Playgroud)

maps r r-maptools r-sp

15
推荐指数
2
解决办法
3776
查看次数

在shapefile后面绘制栅格

如何在shapefile对象后面绘制"栅格"对象?两者都可以自己绘制,但是这些点不会覆盖栅格:

require(rgdal)
require(maptools)
require(raster)

myproj = "+proj=utm +zone=12 +north +ellps=WGS84 +units=m"
shp = readShapeSpatial(fn.shp, proj4string = CRS(myproj))
ras = raster(fn.tif)

plot(ras)
plot(shp, bg="transparent", add=TRUE)
Run Code Online (Sandbox Code Playgroud)

r raster r-maptools rgdal

11
推荐指数
1
解决办法
2万
查看次数

当`methods`失败时,如何判断函数调用正在使用什么方法?

不妨让猫从袋子里拿出来,并说当我呼唤plot一个课堂对象时,我已经尝试了大约一天来弄清楚发生了什么SpatialPolygons*.我的直觉是寻找plot.SpatialPolygonsDataFrame,这种方法适用于我见过和遇到的任何其他例子,但这种方式失败了.

快速举例:

美国各州.shp文件在这里.

library(maptools)
us.states<-readShapePoly("cb_2014_us_state_5m.shp")
plot(us.states)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有点邋but但是无论如何 - 关键是对一个简单的调用plot和内心深处R知道调用哪个方法以便为我们提供所有形状的表示.

经过一番搜索后,我尝试了各种SO Q&As提出的其他两种方法,首先是:

> methods(plot)
 [1] plot.aareg*                         plot.acf*                          
 [3] plot,ANY,ANY-method                 plot.cox.zph*                      
 [5] plot.data.frame*                    plot.decomposed.ts*                
 [7] plot.default                        plot.dendrogram*                   
 [9] plot.density*                       plot.ecdf                          
[11] plot.factor*                        plot.formula*                      
[13] plot.function                       plot.hclust*                       
[15] plot.histogram*                     plot.HoltWinters*                  
[17] plot.isoreg*                        plot.lm*                           
[19] plot.medpolish*                     plot.mlm*                          
[21] plot.ppr*                           plot.prcomp*                       
[23] plot.princomp*                      plot.profile.nls*                  
[25] plot.raster*                        plot.shingle*                      
[27] plot,SpatialGrid,missing-method     plot,SpatialLines,missing-method   
[29] plot,Spatial,missing-method         plot,SpatialPixels,missing-method  
[31] plot,SpatialPoints,missing-method   plot,SpatialPolygons,missing-method
[33] plot.spec*                          plot.spline*                       
[35] plot.stepfun                        plot.stl*                          
[37] plot.survfit* …
Run Code Online (Sandbox Code Playgroud)

oop methods r r-maptools

10
推荐指数
2
解决办法
777
查看次数

将Shape文件中的多边形与公共标记ID合并:unionSpatialPolygons

我试图从形状文件中读取并将多边形与公共标记ID合并.

library(rgdal)
library(maptools)
if (!require(gpclib)) install.packages("gpclib", type="source")
gpclibPermit()

usa <- readOGR(dsn = "./path_to_data/", layer="the_name_of_shape_file")
usaIDs <- usa$segment_ID
isTRUE(gpclibPermitStatus())
usaUnion <- unionSpatialPolygons(usa, usaIDs)
Run Code Online (Sandbox Code Playgroud)

当我尝试绘制合并的多边形时:

for(i in c(1:length(names(usaUnion)))){
  print(i)
  myPol <- usaUnion@polygons[[i]]@Polygons[[1]]@coords
  polygon(myPol, pch = 2, cex = 0.3, col = i)
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

所有合并的段看起来都很好,除了那些在密歇根州周围以非常奇怪的方式发生合并的那些段,这样特定段的结果区域只给出如下的小多边形.

i = 10
usaUnion@polygons[[i]]@Polygons[[1]]@coords
Run Code Online (Sandbox Code Playgroud)

输出:

          [,1]     [,2] 
 [1,] -88.62533 48.03317
 [2,] -88.90155 47.96025
 [3,] -89.02862 47.85066
 [4,] -89.13988 47.82408
 [5,] -89.19292 47.84461
 [6,] -89.20179 47.88386
 [7,] -89.15610 47.93923
 [8,] -88.49753 48.17380
 [9,] -88.62533 48.03317
Run Code Online (Sandbox Code Playgroud)

原来是一个北方小岛:

在此输入图像描述

我怀疑问题是由于某种原因,该unionSpatialPolygons功能不喜欢地理上分离的多边形[密歇根州的左侧和右侧],但我还没有找到解决方案. …

plot r r-maptools rgdal

9
推荐指数
1
解决办法
272
查看次数

无需使用gpclib工具即可将空间多边形转换为常规数据框

我在R中使用空间数据进行商业应用,并希望使用ggplot2进行数据可视化.如果您在https://github.com/hadley/ggplot2/wiki/plotting-polygon-shapefiles上运行Hadley的示例,您会发现为了运行该fortify命令,您需要启用gpclib工具的使用gpclibPermit().

我正在寻找一种有效的方法(不涉及手动入侵S4对象)来执行与此相同的操作fortify,即获取空间多边形对象并将其转换为常规数据框,其中行条目包含纬度和纵坐标和多边形id.

还有其他人解决了这个吗?

gis r ggplot2 s4 r-maptools

7
推荐指数
1
解决办法
3889
查看次数

R:从日落开始计算的天数

我正在分析由几个环境变量组成的复杂数据集中的时间模式以及来自各种动物物种的活动数据.这些数据已通过多个实验设置收集,每个设置的数据每分钟存储一次.该项目已经运行了几年,所以我的数据集相当大.

我的一个数据集的前几行看起来像这样:

> head(setup_01)
DateTime                Film_number unused PIR Wheel Temperature LightOld LightDay LightNight LightUV IDnumbers    error mouse shrew vole rat frog rest extra_info odour
1 2015-03-10 12:27:10                  x   0       0       13.40  1471.34    -0.97    1331.29  700.42           no error     0     0    0   0    0    0                1
2 2015-03-10 12:28:10                  x   0       0       13.43  1471.38    -1.07    1291.11  731.32           no error     0     0    0   0    0    0                1
3 2015-03-10 12:29:10                  x   0       0       13.31  1471.24    -1.08    1368.57 1016.02           no error     0     0    0 …
Run Code Online (Sandbox Code Playgroud)

datetime r time-series lubridate r-maptools

7
推荐指数
1
解决办法
655
查看次数

标签 统计

r ×10

r-maptools ×10

maps ×2

rgdal ×2

datetime ×1

ggplot2 ×1

gis ×1

lubridate ×1

mapping ×1

methods ×1

oop ×1

plot ×1

r-sp ×1

raster ×1

rworldmap ×1

s4 ×1

shapefile ×1

spatial ×1

time-series ×1