在R中读取和绘制esri形状文件

Jan*_*nvb 15 plot r vector esri geospatial

我在将.shp(esri形状文件)读入R中时遇到了困难.我在R中尝试了几个选项,并尝试将ArcMap中的形状文件转换为正确读取形状文件但尚未生效的内容.(在ArcMap中,我更正了几何体,从单个多边形转换为多边形等,这可能不是必需的或相关的)

它可能与我的形状文件包含'区域'(多边形)而不是'多边形'这一事实有关...

如何在R中正确读取该类型的形状文件以进行绘图?(它看起来像ArcMap中的普通形状)

在ArcMap中,形状文件如下所示:http: //bfast.r-forge.r-project.org/arcmapshape.jpg

(显示其他多边形内包含多边形的形状文件)

在R中它看起来像这样: 在此输入图像描述

(显示错误填充某些多边形的形状文件)

我在R中使用了以下代码:

require(maptools)
require(rgdal)

newproj <- "+proj=utm +zone=55 +south +ellps=GRS80 +units=m"
shape<- readShapeSpatial(pdir, proj4string = CRS(newproj),repair=TRUE,force_ring=T,verbose=TRUE) # without any errors
plot(shape, col="gray",border="blue", axes=TRUE)

# via rgdal
folder <- c("spatial")
lyr <- c("clipped_forest_mga")
shp <- readOGR(dsn=folder,layer=lyr)
plot(shp, col="gray",border="blue", axes=TRUE)
Run Code Online (Sandbox Code Playgroud)

两个plot()命令都给出相同的R结果.没有错误发生.只有以下消息

OGR data source with driver: ESRI Shapefile 
Source: "P:/Victoria_DSE/BFAST_spatial/vector/PLM_excl_fire03_09_GDA94LL/mgaz94z55/clipped_EG", layer: "clipped_forest_mga"
with 1 features and 4 fields
Feature type: wkbMultiPolygon with 2 dimensions
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题?

Eti*_*ine 11

一月,

您的shapefile可能已正确读取.绘图更可能不正确.尝试使用spplot()而不是plot():

spplot(shp, col.regions="gray", col="blue")
Run Code Online (Sandbox Code Playgroud)

如果你的shapefile有多个列(很可能),添加zcol = 1(或任何其他列),这样你只得到一个面板

spplot(shp, zcol=1, col.regions="gray", col="blue")
Run Code Online (Sandbox Code Playgroud)

如果你真的想使用绘图,你必须为背景设置一个颜色,否则它将打印透明的孔.所以设置pbg ="white".尝试:

plot(shp, col="gray", border="blue", axes=TRUE, pbg="white")
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我认为Dirk所指的列表是R-sig-Geo,你可以找到许多答案,并提出许多与sig相关的问题.

  • 非常清楚的答案!这两种方案都有效 谢谢你的帮助.我发现了一些非常方便的网页和其他R示例来绘制包含网格和矢量数据的空间地图:http://geography.uoregon.edu/GeogR/examples/maps_examples02.htm http://r-spatial.sourceforge.net/gallery /干杯,Jan (2认同)