/// <summary>Конструктор</summary> /// <param name="layer">Слой</param> /// <param name="nid">Ключ</param> /// <param name="type">Тип</param> /// <param name="nParts">Список частей</param> /// <param name="nFieldValues">Список значений полей</param> /// <param name="nStyle">Стили</param> internal Feature(MiLayer layer, int nid, FeatureType type, List <List <Vertex> > nParts, IReadOnlyList <string> nFieldValues, IReadOnlyDictionary <string, string> nStyle) { Id = nid; Handle = MiApi.mitab_c_create_feature(layer.Handle, (int)type); Layer = layer; Type = type; Parts = new Parts(this, nParts); if (nStyle != null) { SetStyle(nStyle); } if (nFieldValues != null) { for (var i = 0; i < nFieldValues.Count; i++) { MiApi.mitab_c_set_field(Handle, i, nFieldValues[i]); } } var res = MiApi.mitab_c_write_feature(layer.Handle, Handle); if (res.ToInt32() == 1) { MiApi.mitab_c_destroy_feature(Handle); } else { throw new Exception("Ошибка создания Feature"); // } }
/// <summary>Конструктор</summary> /// <param name="layer">Слой</param> protected internal Fields(MiLayer layer) : base(MiApi.mitab_c_get_field_count(layer.Handle)) { for (int i = 0; i < Count; i++) { fields.Add(CreateField(layer, i)); } }
/// <summary>Конструктор</summary> /// <param name="layer">Слой</param> /// <param name="featureId">Ключ</param> protected internal Feature(MiLayer layer, int featureId) { this.Id = featureId; this.Layer = layer; this.Handle = MiApi.mitab_c_read_feature(layer.Handle, featureId); this.Type = MiApi.mitab_c_get_type(Handle); this.Parts = CreateParts(this); }
/// <summary>Конструктор</summary> /// <param name="layer">Слой</param> /// <param name="featureId">Ключ</param> internal Feature(MiLayer layer, int featureId) { Id = featureId; Layer = layer; Handle = MiApi.mitab_c_read_feature(layer.Handle, featureId); Type = MiApi.mitab_c_get_type(Handle); Parts = CreateParts(this); }
/// <summary>Конструктор</summary> /// <param name="layer">Слой</param> /// <param name="i">Индекс</param> protected internal Field(MiLayer layer, int i) { this.Layer = layer; this.Index = i; this.Name = MiApi.mitab_c_get_field_name(layer.Handle, i); this.Type = MiApi.mitab_c_get_field_type(layer.Handle, i); this.Precision = (short)MiApi.mitab_c_get_field_precision(layer.Handle, i); this.Width = MiApi.mitab_c_get_field_width(layer.Handle, i); }
/// <summary>Создать mif-файл</summary> /// <param name="tabFileName">Имя файла</param> /// <param name="lay">Слой данных</param> /// <returns></returns> public static MiLayer CreateMIF(string tabFileName, DataLayer lay) { var bounds = lay.GetMBR(); var res = new MiLayer(MiApi.mitab_c_create(tabFileName, "mif", "NonEarth Units \"m\"", bounds.maxy, bounds.miny, bounds.minx, bounds.maxx), tabFileName); res.AddLayer(lay); res.Close(); return(res); }
/// <summary>Конструктор</summary> /// <param name="layer">Слой</param> /// <param name="fieldName">Имя поля</param> /// <param name="fieldType">Тип поля</param> /// <param name="width">Ширина</param> /// <param name="precision">Точность</param> /// <param name="indexed"></param> /// <param name="unique"></param> protected internal Field(MiLayer layer, string fieldName, FieldType fieldType, int width, int precision, int indexed, int unique) { IntPtr fieldId = MiApi.mitab_c_add_field(layer.Handle, fieldName, (int)fieldType, width, precision, indexed, unique);; this.Layer = layer; this.Index = fieldId.ToInt32(); this.Name = fieldName; this.Type = fieldType; this.Precision = (short)precision; this.Width = width; }
/// <summary>Создать tab-файл</summary> /// <param name="tabFileName">Имя файла</param> /// <param name="lay">Слой данных</param> /// <returns></returns> public static MiLayer CreateTab(string tabFileName, DataLayer lay) { var bounds = lay.GetMBR(); if (bounds == null) { return(null); } var res = new MiLayer(MiApi.mitab_c_create(tabFileName, "tab", "NonEarth Units \"m\"", bounds.maxy, bounds.miny, bounds.minx, bounds.maxx), tabFileName); // res.AddLayer(lay); res.Close(); return(res); }
/// <summary>онструктор</summary> /// <param name="layer"></param> protected internal Features(MiLayer layer) : base(MiApi.mitab_c_get_feature_count(layer.Handle)) { this.Layer = layer; }
/// <summary>Конструктор</summary> /// <param name="objProvider"></param> /// <param name="layer"></param> internal FeaturesEnum(IObjectProvider objProvider, MiLayer layer) : base(objProvider) { this._layer = layer; }
/// <summary>Добавить поле</summary> /// <param name="layer">Слой</param> /// <param name="fieldName">Имя поля</param> /// <param name="fieldType">Тип поля</param> /// <param name="width">Ширина</param> /// <param name="precision">Точность</param> /// <param name="indexed"></param> /// <param name="unique"></param> public void AddField(MiLayer layer, string fieldName, FieldType fieldType, int width, int precision, int indexed, int unique) { // fields.Add(new Field(layer, fieldName, fieldType, width, precision, indexed, unique)); }
/// <summary>Override this to support descendants of the Field class.</summary> /// <returns>A Field, with the given index, belonging to the given Layer</returns> protected internal virtual Field CreateField(MiLayer layer, int index) { return(new Field(layer, index)); }
/// <summary>Override this to support descendants of the Field class.</summary> /// <returns>A Field, with the given index, belonging to the given Layer</returns> internal Field CreateField(MiLayer layer, int index) => new Field(layer, index);