Wikipedia, of all things, has the ESRI shape file spec: http://en.wikipedia.org/wiki/Shapefile#Shapefile_shape_format_.28.shp.29 According to that there should be *four* values for POINTZ types -- not three nor two. So, try splicing in this code round line 448 and see if it gets you any joy: else if (recordType == POINTZ) { Coordinate pt = new Coordinate(byteBuf.getDouble(), byteBuf.getDouble(), byteBuf.getDouble()); // The next byte is the "measure" value which we don't use; // but read in anyway to check with debugger. double measure = byteBuf.getDouble(); geom = geomFactory.createPoint(pt); } // ... rest of else if block You might have to update isSupported() to let it know that POINTZ types are OK. -- [log in to unmask]