コード例 #1
0
        /// <summary>
        /// Индикатор ошибок по имени поля
        /// </summary>
        /// <param name="columnName">Наименование проверяемого свойства</param>
        /// <returns>null - при осутствии ошибок, в противном случае описание ошибки</returns>
        public string this[string columnName]
        {
            get
            {
                if (columnName == nameof(EditShape))
                {
                    //Защита от дурака
                    if (EditShape == "" || EditShape == null)
                    {
                        return("Геометрия не может быть пустой");
                    }

                    SqlGeometry shape;

                    //Проверка на возможность конвертации в геометрию
                    try
                    {
                        //Конвертация строки в SqlGeometry
                        SqlChars wkt = new SqlChars(EditShape.ToCharArray());
                        shape = SqlGeometry.STGeomFromText(wkt, 32631).MakeValid();
                    }
                    catch (Exception ex)
                    {
                        return(String.Format("Ошибка геометрии: {0}", ex.Message));
                    }

                    //Расположен ли полигон в пределах границ Республики Бенин
                    DbGeometry newDbGeometry = shape.ToDbGeometry();
                    using (var context = ContextFactory.Create())
                    {
                        context.CadastraleSecteurs_v.Load();
                        var  cadSect       = context.CadastraleSecteurs_v.Local;
                        bool IsBeninWithin = cadSect.Where(s => s.Shape.Intersects(newDbGeometry)).Any();
                        if (!IsBeninWithin)
                        {
                            return("Границы расположены за пределами государственной границы Республики Бенин");
                        }
                    }

                    //Ошибок не найдено
                    return(null);
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Сохраняет изменения геометрии
        /// </summary>
        protected void SaveChanges()
        {
            if (this[nameof(EditShape)] != null)
            {
                return;
            }

            //Конвертация строки в SqlGeometry
            SqlGeometry shape;
            SqlChars    wkt = new SqlChars(EditShape.ToCharArray());

            shape = SqlGeometry.STGeomFromText(wkt, 32631).MakeValid();

            FeatureObjet.Shape = shape.ToDbGeometry();
            IsEndEditing       = true;
        }