Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R读取ESRI形状文件时出错_R_Gdal_Rgdal - Fatal编程技术网

使用R读取ESRI形状文件时出错

使用R读取ESRI形状文件时出错,r,gdal,rgdal,R,Gdal,Rgdal,我正在尝试使用rgdal库读取shapefile,但运气不佳 当我尝试使用以下语法导入时: geo <- readOGR("/path/to/layer","layer") 我如何着手诊断和解决问题?非常感谢 TL;DR:可能是自相交或重叠的几何体,这是多边形形状文件中的环/孔问题 首先,通过在提示符中输入不带参数的函数名,查看readOGR的源代码。对源代码的查找表明错误中的代码和消息不在该函数中 使用,我找到了readOGR调用的函数列表: 这表明它需要某种x,y坐标来处理多边形中的

我正在尝试使用rgdal库读取shapefile,但运气不佳

当我尝试使用以下语法导入时:

geo <- readOGR("/path/to/layer","layer")
我如何着手诊断和解决问题?非常感谢

TL;DR:可能是自相交或重叠的几何体,这是多边形形状文件中的环/孔问题

首先,通过在提示符中输入不带参数的函数名,查看readOGR的源代码。对源代码的查找表明错误中的代码和消息不在该函数中

使用,我找到了readOGR调用的函数列表:

这表明它需要某种x,y坐标来处理多边形中的孔/环。回到helpPolygons类,我们看到一个参数labpt,它是:

数值类的对象;一对x,y坐标表示一个标签 点,最大环组件的标签点

现在我们可以给出一个关于错误原因的假设:它与多边形中环/孔的处理有关,在创建多边形对象时,它需要标签点来正确处理环/孔。但是,它找到的标签点不是有限的,并且会触发错误

最后,有一点值得注意:

属于多边形对象的多边形对象不应 相互重叠,或应完全作为湖泊或岛屿纳入 湖泊。它们不应该是自相交的


这表明您可能遇到了错误几何体的问题,即重叠或自相交。例如,您可以使用QGis中的工具来检查和修复几何体。

这里应该问这个问题:。您可以在Linux/Mac中最简单的命令行上运行ogrinfo-so/path/to/layer吗?形状文件可能有一些无限的坐标。。。检查该命令的数据块输出。你在这里和那里交叉发布。请移除其中一根立柱。合理范围为:-179.147340、17.881242-179.778465、71.390482
Error in stopifnot(is.list(srl)) : infinite label point
 [1] "-"                        ":"                        "!"                        "!="                       ".Call"                   
 [6] "("                        "["                        "[["                       "{"                        "&&"                      
[11] "%in%"                     "+"                        "<"                        "<-"                       "<="                      
[16] "=="                       ">"                        "||"                       "$"                        "all.equal"               
[21] "any"                      "as.character"             "as.integer"               "as.logical"               "attr"                    
[26] "attributes"               "c"                        "cat"                      "cbind"                    "class"                   
[31] "comment"                  "CRS"                      "data.frame"               "do.call"                  "for"                     
[36] "function"                 "gc"                       "geometry"                 "getCPLConfigOption"       "getGDALVersionInfo"      
[41] "iconv"                    "identical"                "if"                       "ifelse"                   "integer"                 
[46] "is.character"             "is.na"                    "is.null"                  "isTRUE"                   "lapply"                  
[51] "length"                   "Line"                     "Lines"                    "list"                     "make.names"              
[56] "match"                    "match.arg"                "max"                      "message"                  "missing"                 
[61] "names"                    "nchar"                    "nrow"                     "ogrFIDs"                  "ogrInfo"                 
[66] "paste"                    "Polygon"                  "Polygons"                 "print"                    "rbind"                   
[71] "return"                   "rm"                       "sapply"                   "seq"                      "seq_along"               
[76] "setCPLConfigOption"       "slot"                     "sort"                     "SpatialLines"             "SpatialLinesDataFrame"   
[81] "SpatialPointsDataFrame"   "SpatialPolygons"          "SpatialPolygonsDataFrame" "stop"                     "stopifnot"               
[86] "strsplit"                 "sum"                      "suppressMessages"         "switch"                   "table"                   
[91] "try"                      "unique"                   "vector"                   "warning"                  "which" 
SET_STRING_ELT(VECTOR_ELT(dimnames, 1), 0, COPY_TO_USER_STRING("x"));
SET_STRING_ELT(VECTOR_ELT(dimnames, 1), 1, COPY_TO_USER_STRING("y"));