I'm working with the TIGER shapefiles, specifically the Tract layer, and my I'm trying to read selected features via WFS using GeoServer, then save those to a new layer. However, when the shapes come out of GeoServer via WFS, they appear to get altered in a way that makes a significant number of them invalid.
In the below image, I have the exact same feature (Census Tract 41047010701). The green feature is it coming directly from PostGIS (using QGIS Database connection). The red is the exact same feature, just passed through GeoServer and output using it's WFS service. It's the exact same shape being read from the underlying PostGIS table, I haven't even copied the feature at this point.
I thought it could be related to reprojecting from TIGERS native epsg::4269 to epsg::4326, but I just turned that off in GeoServer and I get the same result.
This is just one example, but it happens to a ton. Below is an output of running ST_IsValidReason()
on a table after features have been read through WFS and inserted into another table.