コード例 #1
0
        /// <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
            });
        }
コード例 #2
0
        /// <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);
        }