The Shapefile implementation contains many fields, and all of them are currently public. Probably many of them could be private. Below is a list of fields with a guess of whether users are likely to want this information, and how he could obtain it.
- FileCode: currently used only in Shapefile.toString() implementation without explanation.
- FileLength: currently used only in Shapefile.toString() implementation. Potentially useful to the Shapefile reader itself, but unlikely to be useful to external user since getting a useful meaning from a file length require knowledge of the file format structure.
- Version: currently used only in Shapefile.toString() implementation. Not clear if it is the file format version or the dataset version. In the former case, this is an important information for the Shapefile reader but less for other users. In the later case, it could be an ISO metadata property.
- dbf: a pointer to the underlying Database object. May be a dangerous things to expose. If nevertheless we really want to give direct access to the DBF database, maybe we should return a JDBC Connection instead.
- xmin, ymin, xmax, ymax: the spatial extent of the data. Could be made accessible through the ISO 19115 GeographicBoundingBox element. However it is unclear if those elements are always expressed in a geographic CRS or if they can be in a projected CRS.
- zmin, zmax: the vertical extent of the data. Could be made accessible through the ISO 19115 VerticalExtent element. However the VerticalCRS of that extent is currently unknown.
- main, mmax: the javadoc does not said what those values are.
- FeatureMap: the set of Feature is indeed important, but maybe we should return them through some kind of iterator (or a JDK8 Stream ?) for fetching data on-demand (in a later implementation, not necessarily now) rather than loading all of them at Shapefile construction time.
- ShapeType: currently used only in Shapefile.toString() implementation. Tells whether the geometries are points, polygons, etc.