Скачать 0.9 Mb.
|
public MyFeatureIdentifier() { InitializeComponent(); } public void Add(IFeatureLayer layer, IFeature f) { if (f == null) return; DataTable dt = new DataTable(); dt.Columns.Add("Field Name"); dt.Columns.Add("Value"); if (f.DataRow == null) { f.ParentFeatureSet.FillAttributes(); } DataColumn[] columns = f.ParentFeatureSet.GetColumns(); for (int i = 0; i < columns.Length - 2; i++) { DataColumn fld = columns[i]; DataRow dr = dt.NewRow(); dr["Field Name"] = fld.ColumnName; if (f.DataRow != null) dr["Value"] = f.DataRow[fld.ColumnName].ToString(); dt.Rows.Add(dr); } dgvAttributes.DataSource = dt; String photo = f.DataRow[columns[columns.Length-2].ColumnName].ToString(); photo = @"Images\" + photo; pictureBox1.ImageLocation = photo; String text_file = f.DataRow[columns[columns.Length - 1].ColumnName].ToString(); text_file = @"Texts\" + text_file; try { StreamReader fs = new StreamReader(text_file, System.Text.Encoding.Default); String text = fs.ReadToEnd(); label1.Text = text; } catch (ArgumentException) { label1.Text = "Описание отсутствует"; } catch (FileNotFoundException) { label1.Text = "Описание отсутствует"; } catch (DirectoryNotFoundException) { label1.Text = "Описание отсутствует"; } } protected override void OnClosing(CancelEventArgs e) { e.Cancel = true; Hide(); } Класс MyLayoutForm private void toolStripMap_Click(object sender, EventArgs e) { _layoutControl1.AddElementWithMouse(_layoutControl1.CreateMapElement()); } private void toolStripRect_Click(object sender, EventArgs e) { _layoutControl1.AddElementWithMouse(new Layout.Elements.LayoutRectangle()); } private void toolStripNorth_Click(object sender, EventArgs e) { _layoutControl1.AddElementWithMouse(new Layout.Elements.LayoutNorthArrow()); } private void toolStripImg_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Images (*.png, *.jpg, *.bmp, *.gif, *.tif)|*.png;*.jpg;*.bmp;*.gif;*.tif"; ofd.FilterIndex = 1; ofd.CheckFileExists = true; if (ofd.ShowDialog() == DialogResult.OK) { Layout.Elements.LayoutBitmap newBitmap = new Layout.Elements.LayoutBitmap(); newBitmap.Size = new System.Drawing.SizeF(100, 100); newBitmap.Filename = ofd.FileName; _layoutControl1.AddElementWithMouse(newBitmap); } } Класс MySelectByAttributes public MySelectByAttributes() { InitializeComponent(); Configure(); } public MySelectByAttributes(IFrame mapFrame) { _mapFrame = mapFrame; InitializeComponent(); Configure(); } private void Configure() { DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Value", typeof(IFeatureLayer)); foreach(ILayer layer in _mapFrame) { IFeatureLayer fl = layer as IFeatureLayer; if (fl != null) { DataRow dr = dt.NewRow(); dr["Name"] = fl.LegendText; dr["Value"] = fl; dt.Rows.Add(dr); } } cmbLayers.DataSource = dt; cmbLayers.DisplayMember = "Name"; cmbLayers.ValueMember = "Value"; cmbMethod.SelectedIndex = 0; if(cmbLayers.Items.Count > 0) cmbLayers.SelectedIndex = 0; } public IFrame MapFrame { get { return _mapFrame; } set { _mapFrame = value; Configure(); } } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private void cmbLayers_SelectedIndexChanged(object sender, EventArgs e) { DataRowView drv = cmbLayers.SelectedValue as DataRowView; if (drv != null) { _activeLayer = drv.Row["Value"] as IFeatureLayer; } else { _activeLayer = cmbLayers.SelectedValue as IFeatureLayer; } if (_activeLayer == null) return; if(!_activeLayer.DataSet.AttributesPopulated && _activeLayer.DataSet.NumRows() < 50000) { _activeLayer.DataSet.FillAttributes(); } if(_activeLayer.EditMode || _activeLayer.DataSet.AttributesPopulated) { sqlQueryControl1.Table = _activeLayer.DataSet.DataTable; } else { sqlQueryControl1.AttributeSource = _activeLayer.DataSet; } } private void btnApply_Click(object sender, EventArgs e) { ApplyFilter(); } private void ApplyFilter() { string filter = sqlQueryControl1.ExpressionText; if (_activeLayer != null) { try { _activeLayer.SelectByAttribute(filter, GetSelectMode()); } catch(Exception ex) { Debug.WriteLine(ex.ToString()); MessageBox.Show("There was an error attempting to apply this expression."); } } } ModifySelectionModes GetSelectMode() { switch (cmbMethod.SelectedIndex) { case 0: return ModifySelectionModes.Replace; case 1: return ModifySelectionModes.Append; case 2: return ModifySelectionModes.Subtract; case 3: return ModifySelectionModes.SelectFrom; } return ModifySelectionModes.Replace; } private void btnOk_Click(object sender, EventArgs e) { ApplyFilter(); Close(); } private void btnClose_Click(object sender, EventArgs e) { Close(); } Класс MyZoomInFunction protected override void OnMouseUp(GeoMouseArgs e) { _currentPoint = e.Location; Map.Invalidate(); Rectangle r = e.Map.MapFrame.View; int w = r.Width; int h = r.Height; if (e.Button == MouseButtons.Left) { r.Inflate(-r.Width / 10, -r.Height / 10); e.Map.MapFrame.View = r; e.Map.MapFrame.ResetExtents(); } else { r.Inflate((int)(r.Width / 10), (int)(r.Height / 10)); e.Map.MapFrame.View = r; e.Map.MapFrame.ResetExtents(); } base.OnMouseUp(e); } Класс MyZoomInFunction protected override void OnMouseUp(GeoMouseArgs e) { _currentPoint = e.Location; Map.Invalidate(); Rectangle r = e.Map.MapFrame.View; int w = r.Width; int h = r.Height; if (e.Button == MouseButtons.Left) { r.Inflate((int)(r.Width / 10),(int)( r.Height / 10)); e.Map.MapFrame.View = r; e.Map.MapFrame.ResetExtents(); } else { r.Inflate(-r.Width / 10, -r.Height / 10); e.Map.MapFrame.View = r; e.Map.MapFrame.ResetExtents(); } base.OnMouseUp(e); } Класс SelectInfoFunction protected override void OnMouseDoubleClick(GeoMouseArgs e) { Coordinate c1 = e.Map.PixelToProj(new System.Drawing.Point(e.X - 2, e.Y - 2)); Coordinate c2 = e.Map.PixelToProj(new System.Drawing.Point(e.X + 2, e.Y + 2)); Coordinate s1 = e.Map.PixelToProj(new System.Drawing.Point(e.X - 1, e.Y - 1)); Coordinate s2 = e.Map.PixelToProj(new System.Drawing.Point(e.X + 1, e.Y + 1)); Coordinate center = e.Map.PixelToProj(new System.Drawing.Point(e.X, e.Y)); IEnvelope tolerant = new Envelope(c1, c2); IEnvelope strict = new Envelope(s1, s2); HandleSelection(tolerant, strict); if (frmFeatureIdentifier == null) { frmFeatureIdentifier = new MyFeatureIdentifier(); } if (Identify(e.Map.MapFrame.GetLayers(), strict, tolerant)) { frmFeatureIdentifier.SuspendLayout(); System.Console.Out.WriteLine(e.Map.MapFrame.GetLayers().Count); frmFeatureIdentifier.ResumeLayout(); frmFeatureIdentifier.Show(); base.OnMouseDoubleClick(e); } else System.Console.Out.WriteLine("1213"); } private bool Identify(IEnumerable { foreach (IMapLayer layer in layers) { IMapFeatureLayer gfl = layer as IMapFeatureLayer; if (gfl != null) { if (gfl.SelectionEnabled) { IFeature ff = new Feature(); List if (result.Count > 0) { ff = result[0]; frmFeatureIdentifier.Add(gfl, ff); return true; } } } } return false; } private void HandleSelection(IEnvelope tolerant, IEnvelope strict) { Map.Select(tolerant, strict); Map.MapFrame.ResetExtents(); } } |
Дипломная работа Мамзеров Д. В., навигация и интерфейс в средах виртуальной реальности, дипломная работа | Дипломная работа по теме: “ Интерактивная база данных по дендроклиматологии” Работу Моя дипломная работа очень актуальна, потому что дендроклиматология – малоизученная и малоизвестная область биологии. Дендроклиматология... | ||
Дипломная работа содержит 104 листа, 6 таблиц, 35 рисунков. Тема:... Данная дипломная работа посвящена проблемам разработки и внедрения устройств связи высокочастотного и сверхвысокочастотного диапазона.... | Название организации Заголовок «Дипломная работа» или «Курсовая работа»: Times New Roman, 14 (вопреки П. 113), по центру. Затем – 2 пустые строки | ||
Реферат. Содержание Дипломная работа (далее просто работа) выполняется на листах формата А4 с размерами полей: сверху – 20 мм, снизу – 20мм, справа –... | 2 требования к содержанию работы Дипломная работа (далее просто работа) выполняется на листах формата А4 с соблюдением следующих размеров полей: правое – 10 мм, верхнее... | ||
Дипломная работа | Реферат. Содержание Дипломная работа (далее просто работа) выполняется на листах формата А4 с размерами полей: сверху – 20 мм, снизу –20мм, справа- 15мм,... | ||
Дипломная работа пгу 030501 | Книга 1 Объем работы – реферат от 12 до 25 печатных листов, курсовая работа – от 20 до 30 страниц, дипломная работа 60-70 страниц компьютерного... | ||
Требования к дипломной работе учащихся 10 11-х классов Дипломная работа заключительная работа учебно-исследовательского характера, выполняемая оканчивающими университеты, экономические,... | Латинские заимствования в современном русском литературном языке (дипломная работа) | ||
Дипломная работа Создание программы помогающей изучать английский язык | Дипломная работа на тему: «Совершенствование организации поддержки... Дипломная работа «Совершенствование организации поддержки и развития малого предпринимательства в муниципальном районе на примере... | ||
Дипломная работа Соответствие современной интернет-рекламы психологическим особенностям подростков | Дипломная работа не менее 65 страниц без приложения Курсовая работа выполняется на одной стороне листа белой бумаги формата А4 (210 Х 297 мм). Иллюстрированный материал (таблицы, схемы,... |