0

I need construct spatial weight matrix for data which syear=1995 (house$s1995==1)in housedataset in spdeppackage,So I tried writeOGR function as the link suggeust to get shapefile enter link description here.

The shapfile was built successfully,but when I use readShapePoly to read,it gets error.

There is my code:

library(spdep)
library(rgdal)
data(house)
house=house[which(house$s1995==1),]
class(house)
writeOGR(obj=house, dsn="test", layer="house", driver="ESRI Shapefile")
  • does 'test' exist in your working directory? – Sam May 28 at 13:56
  • Yes,this will create test folder in my working directory – Yuki May 28 at 14:02
  • good. Isn't readShapePoly (maptools) now deprecated for 'rgdal::readOGR'? – Sam May 28 at 14:06
  • I also tried rgdal::readOGR, it goes wrong with 'cannot open layer' – Yuki May 28 at 14:16
  • readOGR("./test/house.shp") definitely doesn't work? – Sam May 28 at 14:18
0

The house data is POINTS so readShapePOLY will fail because you are trying to read points into polygons.

This should be obvious from the error message:

> readShapePoly("./test/house.shp")
Error in .Map2PolyDF(Map, IDs = IDvar, proj4string = proj4string, force_ring = force_ring,  : 
  NULL geometry found: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 21
In addition: Warning message:

BUT you haven't shown us your code for reading or the error message, so I'm guessing here.

You can use readShapePoints and get a deprecation warning:

> h2 = readShapePoints("./test/house.shp")
Warning message:
readShapePoints is deprecated; use rgdal::readOGR or sf::st_read 

Or readOGR from rgdal:

> h2 = rgdal::readOGR("./test/house.shp")
OGR data source with driver: ESRI Shapefile 
Source: "/nobackup/rowlings/Downloads/SO/324090/test/house.shp", layer: "house"
with 4130 features
It has 24 fields
> 
  • Thank you,it's very useful!I do try read points into polygons.So if I want to get spatial weight matrix from points,what should I do? – Yuki May 28 at 14:38
  • I found link says'The list of neighbours provided with the data set in spdep is a sphere of influence graph constructed from a triangulation of the point coordinates of the houses after projection to the Ohio North NAD83 (HARN) Lambert Conformal Conical specification (EPSG:2834).' I tried google 'triangulation of point coordinates in r',but nothing found. – Yuki May 28 at 15:05
  • Try asking a new question rather than expecting an answer in these comments to my answer. – Spacedman May 28 at 15:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.