shprewind(1) validates and resets the winding order of rings


shprewind in_shp_file out_shp_file


Validates and resets the winding order of rings in polygon geometries to match the ordering required by shapefile specification. This is useful for shapefiles having troubles when checked with a 'shpdump -validate'.

Makes a copy of the shapefile in_shp_file to out_shp_file and fixes the orientation of points in the rings of Polygon, PolygonZ, and PolygonM typed shapes to conform to the shapefile specification. According to the specification, the vertices of outer rings should be oriented clockwise on the X/Y plane, and those of inner rings counterclockwise.

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 in_shp_file and attempting to open the files in_shp_file.shp or in_shp_file.SHP, and in_shp_file.shx or in_shp_file.SHX for the respective data and index files. The files to create from out_shp_file are determined by stripping any filename extension from out_shp_file and appending .shp and .shx suffixes for the respective data and index files.


the name of an existing shapefile.
the name of the new fixed shapefile that will be created.


Successful program execution.
Missing in_shp_file or out_shp_file arguments, failed to open shapefile in_shp_file or create shapefile out_shp_file.


The following diagnostics may be issued on stdout:

Unable to open:in_shp_file

Unable to create:out_shp_file

count objects rewound.


shprewind badshapefile newshapefile


shprewind 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 implementation assumes that there is at most one outer ring in each shape, that it is the first ring in a shape, and all other rings in a shape are inner rings. Polygons inside MultiPatch shape types aren't rewound.