shpdump - dumps as text and/or validates the content of an ESRI shapefile
shpdump [-
validate]
shp_file
Prints the contents of the shapefile
shp_file to standard output in
textual format. Shapefiles actually consist of two files with the same
basename and extensions
.shp and
.shx (or
.SHP and
.SHX) containing the shape data and shape index respectively. The files
to open are determined by first stripping any filename extension from
shp_file and attempting to open the files
shp_file.shp or
shp_file.SHP, and
shp_file.shx or
shp_file.SHX for the respective data and index files.
Output consists of a header giving number and type of shapes in the file and the
bounds for the minimum and maximum
X,
Y,
Z, and
M
values appearing in the shapes. The header is followed by the geometric data
for each shape in the file. All shapes in the file should be of the same type,
except that
NullShape typed shapes may be intermixed with any other
type. The header has the form
-
-
Shapefile Type: type # of Shapes: count
File Bounds: (minX,minY,minZ,minM)
to (maxX,maxY,maxZ,maxM)
-
See section
SHAPE TYPES below for the list of possible shape types.
Next for each shape in the file a header giving it's
shape_index, it's
type
type, number of vertices
nVertices, number of parts
nParts, and bounding box is given, followed by the vertex data of each
part.
-
-
Shape: shape_index (type) nVertices=nVertices, nParts=nParts
Bounds: (minX,minY,minZ,minM)
to (maxX,maxY,maxZ,maxM)
vertices of the first part
+ vertices of the second part...
+ vertices of the last part
-
The
shape_index of a shape is the number of the shape starting from zero
in the shape file. Each vertex has the form
-
-
(X,Y,Z,M)
-
If there are multiple parts then the type of the part is appended appended to
first vertex of each part, and the first vertex of the second and following
parts is preceded by a plus (
+) sign. The part type is
Ring for
all shape types except
MultiPatch where it is the type of a surface
patch. See below for the description of possible part types.
Each type of shape except
MultiPatch typed shapes comes in three
flavours: The normal unsuffixed type, where points lie in
X/Y-space; a
type with suffix
M where points lie in
X/Y-space and
additionally have a
measure value in
M-space; and finally a type
with suffix
Z where points lie in
X/Y/Z-space and also have a
measure value in
M-space.
- NullShape
- A shape without data. Shapes of this type may be intermixed
with other shapes and are sometimes used to represented deleted or missing
geometric data for a shape.
-
Point or PointZ or PointM
- A single point.
-
Arc or ArcZ or ArcM
- Piecewise linear paths. Shapes of this type may consist of
multiple parts which may or may not intersect and/or connect. Arcs are
called PolyLines in the shapefile specification.
-
Polygon or PolygonZ or PolygonM
- Polygon shapes consist of one or more parts, called
rings, that each define a closed path. Rings must contain at least
four vertices with the first and last vertices being equal, and must not
self-intersect. For shapes of type Polygon, the rings define a
polygon with optional holes by giving the vertices of inner rings a
counterclockwise orientation and the vertices of outer rings a clockwise
orientation. Intersection and orientation is always computed in
X/Y-space and never in X/Y/M-space.
-
MultiPoint or MultiPointZ or
MultiPointM
- A set of points.
- MultiPatch
- A MultiPatch represents one or more surfaces in
X/Y/Z-space, and consists of a number of parts called it's
surface patches. Each surface patch describes a either a
surface or a hole in another surface, depending on the type of the patch.
Patches may share a common boundary but may not otherwise intersect. The
type of a patch may be one of
-
TriangleStrip: A set of connected triangles. The
first three points define the first triangle and every following point
defines a new triangle using the new point and the two previous
points.
-
TriangleFan: A set of connected triangles. The first
three points define the first triangle and every following point defines a
new triangle using the previous point, the current point, and the first
point, thus forming a fan of triangles around the first point.
-
OuterRing: The outer ring of a sequence of rings
defining a polygon with holes. All following parts of type
InnerRing are taken to be the holes of the polygon. The sequence of
rings ends with the first non- InnerRing typed part or the part of
the shape, whichever comes first.
-
InnerRing: An inner ring in a sequence of rings
defining a polygon with holes. This type of part may only follow an
OuterRing or other InnerRing typed parts.
-
FirstRing: The first in a sequence of rings defining
a polygon of unspecified type. The following parts of type Ring
defines the other rings in the polygon. This type of part is used when the
innerness or outerness of a polygon isn't known or applicable. The
sequence of rings defining the polygon ends with the first non-
Ring typed part or the last part of the shape, whichever comes
first.
-
Ring: A ring in a sequence of rings defining a
polygon of unspecified type. It may only follow a FirstRing or
other Ring typed parts.
-
UknownPartType: This type is returned for parts
whose type isn't recognised.
- UnknownShapeType
- This type is returned for shapes whose type isn't
recognised.
- -validate
- count the number of objects that have invalid ring
ordenings
- Performs validation on the orientation of inner and outer
rings in Polygon, PolygonZ, and PolygonM objects.
According to the shapefile specification outer rings should be given a
clockwise orientation, and inner rings that define holes a
counterclockwise orientation. If some rings of a shape are oriented the
wrong way around then the following message is output after dumping that
shape:
-
count rings wound in the wrong direction.
- In addition the total number of shapes with problem rings
is output after the last shape has been dumped:
-
count object has invalid ring orderings.
- shp_file
- the name of an existing shapefile.
- 0
- Successful program execution.
- 1
- No shapefile shp_file was given or it couldn't be
opened.
$ shpdump shapefile.shp
Shapefile Type: Arc # of Shapes: 3
File Bounds: ( 3531586.750, 7253086.100,0,0)
to ( 3536417.463, 7778375.875,0,0)
Shape:0 (Arc) nVertices=2, nParts=1
Bounds:( 3536397.797, 7253086.100, 0, 0)
to ( 3536417.463, 7253163.597, 0, 0)
( 3536397.797, 7253163.597, 0, 0) Ring
( 3536417.463, 7253086.100, 0, 0)
Shape:1 (Arc) nVertices=3, nParts=1
Bounds:( 3458966.390, 7373335.808, 0, 0)
to ( 3459141.856, 7373474.681, 0, 0)
( 3458966.390, 7373474.681, 0, 0) Ring
( 3458979.042, 7373466.273, 0, 0)
( 3459141.856, 7373335.808, 0, 0)
Shape:2 (Arc) nVertices=7, nParts=1
Bounds:( 3531586.750, 7777880.500, 0, 0)
to ( 3532930.206, 7778375.875, 0, 0)
( 3531586.750, 7777880.500, 0, 0) Ring
( 3532228.265, 7778072.455, 0, 0)
( 3532310.897, 7778119.445, 0, 0)
( 3532367.866, 7778144.877, 0, 0)
( 3532440.559, 7778168.920, 0, 0)
( 3532506.504, 7778190.785, 0, 0)
( 3532930.206, 7778375.875, 0, 0)
$
The following diagnostics may be issued on stdout:
Unable to open:
shp_file
shpdump is part of shapelib, maintained by Frank Warmerdam. This guide
was created by Eduardo Patoo Kanegae and converted to manpage by Johan Van de
Wauw. It was further enhanced with the man page written by Joonas Pihlaja
(
[email protected]).
The
-validate option supports only one outer ring in a polygonal
shape and assumes that the first ring in a shape is the outer ring. It doesn't
support polygons inside
MultiPatch shapes. The
X and
Y
coordinates of a point are printed to three decimal places only.
dbfadd(1),
dbfcat(1),
dbfcreate(1),
dbfdump(1),
dbfinfo(1),
shpadd(1),
shpcat(1),
shpcentrd(1),
shpcreate(1),
shpdxf(1),
shpfix(1),
shpinfo(1),
shpproj(1),
shprewind(1),
shptest(1)