Reconstruct shape via ArcPy: How to validate geometry?

02-16-2022 08:15 AM
Frequent Contributor

I have a field calculator Python script that I use to update the shape field of a FC.
 - Densifies any true curves.
 - Populates M-values of coordinates.
 - Reconstructs shape.

new_shape( !SHAPE! )

Code Block:
def new_shape(geom):
    spatial_reference = geom.spatialReference
    geom = geom.densify("ANGLE", 10000, 0.174533)
    parts = arcpy.Array()
    for i in range(geom.partCount):
        part = geom.getPart(i)
        points = arcpy.Array()
        for j in range(part.count):
            point = part.getObject(j)
            point.M = geom.measureOnLine(point)
    return arcpy.Polyline(parts, spatial_reference)



I want to add logic to the script that will check the new geometry for issues. I know from experience that problems in the code can mean that an empty geometry gets returned to the feature (not what I want).
 - I believe an empty geometry is a valid geometry. That's why the code doesn't error-out.

What kinds of things should I check for in the new geometry?
1. New shape isn't empty.
2. New point count vs. old point count.
3. New length vs. old length.
4. New part count vs. old part count.
5. Other?

if new_geom   and   new_geom.pointCount>=orig_geom.pointCount   and   abs(orig_geom.length-new_geom.length) < 1   and   new_geom.partCount==orig_geom.partCount:
    return new_geom
    return orig_geom
Or is it unnecessary to check those things, other than checking for an empty shape, since ArcPy validates the geometry for us?

I'm using ArcMap 10.7.1. But I believe this would apply to ArcGIS Pro too. (Oracle 18c SDE.ST_GEOMETRY)

0 Kudos
1 Reply
MVP Esteemed Contributor

5.  Other

Have you looked at what other things check for

Invalid Geometry—ArcGIS Pro | Documentation

there are a whole slew of other links in the table of contents by that link that are geometry specific

plus the various things esri checks for

Check Geometry (Data Management)—ArcGIS Pro | Documentation

there is an  Open Geospatial Consortium (OGC) validation method  link which opens a document to their standards

... sort of retired...