/// <summary> /// Checks a Feature object for errors in its Geometry. E.g. self intersection. /// </summary> /// <param name="feature">The feature.</param> /// <returns>Validation result.</returns> public GeometryValidationResult ValidateFeatureGeometry(Feature feature) { GeometryValidationResult result = new GeometryValidationResult(); GeometryConversionTool geometryConversionTool = new GeometryConversionTool(); List <SqlGeometry> sqlGeometries = geometryConversionTool.FeatureGeometryToSqlGeometries(feature); if (sqlGeometries.Any()) { foreach (SqlGeometry sqlGeometry in sqlGeometries) { result = ValidateGeometry(sqlGeometry); if (!result.IsValid) { return(result); } } return(result); } return(new GeometryValidationResult { IsValid = true, StatusCode = (int)GeometryValidationStatusId.Valid, GeometryValidationStatusId = GeometryValidationStatusId.Valid }); }
/// <summary> /// Checks a Polygon object for errors. E.g. self intersection. /// </summary> /// <param name="polygon">The polygon.</param> /// <returns>Validation result.</returns> public GeometryValidationResult ValidateGeometry(IPolygon polygon) { GeometryConversionTool geometryConversionTool = new GeometryConversionTool(); SqlGeometry sqlGeometry = geometryConversionTool.PolygonToSqlGeometry(polygon); return(ValidateGeometry(sqlGeometry)); }
public void ValidateGeometry_WhenConvertedInvalidPolygon_ThenInvalidResult() { Polygon pol = GetInvalidPolygon(); GeometryConversionTool geometryConversionTool = new GeometryConversionTool(); SqlGeometry polygon = geometryConversionTool.PolygonToSqlGeometry(pol); GeometryTools geometryTools = new GeometryTools(); GeometryValidationResult result = geometryTools.ValidateGeometry(polygon); Assert.IsFalse(result.IsValid); Assert.AreEqual(24404, result.StatusCode); Assert.AreEqual(GeometryValidationStatusId.NotValidBecausePolygonRingIntersectsItself, result.GeometryValidationStatusId); Assert.AreEqual("Not valid because polygon ring (1) intersects itself or some other ring.", result.Description); }