[R-sig-Geo] ring not closed - readShapePoly - read.shape - maptools

Roger Bivand Roger.Bivand at nhh.no
Fri Feb 9 20:30:36 CET 2007


On Fri, 9 Feb 2007 Olsen.Tony at epamail.epa.gov wrote:

> A new package, spsurvey, has function to read ESRI shapefiles -
> read.shape and read.dbf.  The result is an sp spatial object.  The
> functions read point, line, and polygon shapefiles.  package is on CRAN.
> We have encountered all types of issues with shapefiles so may handle
> your problem.

Thanks, the issue here is that the first and final row of the 
shape$verts[from[i]:to[i],] slice are not equal, so Polygon() throws an 
error, because this isn't a ring. Polygon() cannot take a closure 
argument, but the function in spsurvey or that in maptools could. It's 
certainly worth trying, a further alternative is the function in the 
shapefiles package that just uses connections.

Roger

> 
> Tony
> 
> 
> 
>                                                                        
>              Roger Bivand                                              
>              <Roger.Bivand at nh                                          
>              h.no>                                                   To
>              Sent by:                 Susumu Tanimura                  
>              r-sig-geo-bounce         <stanimura-ngs at umin.ac.jp>       
>              s at stat.math.ethz                                        cc
>              .ch                      r-sig-geo at stat.math.ethz.ch,     
>                                       patrick.giraudoux at univ-fcomte.fr 
>                                                                 Subject
>              02/09/2007 10:35         Re: [R-sig-Geo] ring not closed -
>              AM                       readShapePoly - read.shape -     
>                                       maptools                         
>                                                                        
>               Please respond                                           
>                     to                                                 
>              Roger.Bivand at nhh                                          
>                    .no                                                 
>                                                                        
>                                                                        
> 
> 
> 
> 
> On Sat, 10 Feb 2007, Susumu Tanimura wrote:
> 
> > Hi there,
> 
> > The same problem happened to me when I used the shape file that is
> > sold as commercial products.
> 
> > > getinfo.shape("Phu_Yen_Commune_ll_region.shp")
> > Shapefile type: Polygon, (5), # of Shapes: 104
> > a <- read.shape("Phu_Yen_Commune_ll_region.shp")
> > Field name:  1__PERS  changed to:  X1__PERS
> > Field name:  2_PERS  changed to:  X2_PERS
> > Field name:  3_PERS  changed to:  X3_PERS
> >        [snip]
> > Shapefile type: Polygon, (5), # of Shapes: 104
> > > b <- readShapePoly("Phu_Yen_Commune_ll_region.shp",verbose=TRUE)
> > Field name:  1__PERS  changed to:  X1__PERS
> > Field name:  2_PERS  changed to:  X2_PERS
> > Field name:  3_PERS  changed to:  X3_PERS
> >        [snip]
> > Shapefile type: Polygon, (5), # of Shapes: 104
> > Error in validityMethod(object) : ring not closed
> 
> > So, read.shape seems to be OK, but readShapePoly does not.  Since
> > readShapePoly uses internally read.shape and then Map object is passed
> > to .Map2PolyDF(), I tried to find Map2PolyDF or validityMethod in
> > source of maptools and sp package.  However, I could not find them.
> 
> > Dose anybody have better solution?
> 
> Patrick, Susumu,
> 
> Could (either or both) you please make sample files available? I think
> that readOGR() will do the same as readShapePoly(), even though it does
> not use the same intermediate R code (same shapelib code in OGR). The
> internal function .Map2PolyDF can be accessed inside the maptools
> namespace as maptools:::.Map2PolyDF; it calls
> maptools:::.asSpatialPolygonsShapes, calling maptools:::.shp2srsI. This
> calls Polygon() with coords set to the current ring, so if it isn't
> closed, no check is made. It would be possible to pass an argument
> through
> closing unclosed rings if TRUE, default FALSE.
> 
> Best wishes,
> 
> Roger
> 
> 
> > OK... after a check, none of the rings are closed... suppose closing
> was
> > managed automatically by ArcGIS and read.Shape...
> >
> >
> > Patrick Giraudoux a écrit :
> > > Hi,
> > >
> > > I have slept on some data of a project which started in 2003 and
> just
> > > coming back on them today gives the opportunity to compare
> read.shape
> > > (shapefiles were initially imported with this function) and
> > > readShapePoly (the new one sp style). The latter will be much more
> > > interesting for the next step, giving directed handling to overlay
> > > methods.
> > >
> > > Importing one of my shapefile with read.shape ( read as polyshape in
> 
> > > ArcGIS) made (and still makes) no problem. However, when I try to
> > > import it again via readShapePoly, I get this message:
> > >
> > > > UG<-readShapePoly("U:/Documents and Settings/giraudoux/Mes
> > > documents/FC25/NewSIG050317/UG.shp")
> > > Error in validityMethod(object) : ring not closed
> > >
> > > Clear enough: at least one of the polygons is not closed... which is
> 
> > > confirmed by the fact that I can import the shapefile easy with
> > > readShapeLines. I suppose the readShapePoly is more demanding in
> > > validity control than the older read.Shape and ArcGIS: one cannot
> > > complain for that.
> > >
> > > I am not afraid of sorting this out with some lines of programme. I
> > > have however a question before writing it: is there already a
> function
> > > making a check somewhere which could be used to know which one(s) of
> 
> > > the polygons are not closed?
> > >
> > > Patrick
> 
> --
> Susumu Tanimura MSc PhD
> Dept. of Socio-environmental Medicine
> Inst. of Tropical Medicine, Nagasaki University
> TEL +81-95-849-7865 FAX +81-95-849-7867
> e-mail stanimura-ngs at umin.ac.jp
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> 
> 
> --
> Roger Bivand
> Economic Geography Section, Department of Economics, Norwegian School of
> Economics and Business Administration, Helleveien 30, N-5045 Bergen,
> Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
> e-mail: Roger.Bivand at nhh.no
> 
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> 
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no




More information about the R-sig-Geo mailing list