private void button1_Click(object sender, EventArgs e) { if (_cmbLayer1.SelectedIndex >= 0 && _cmbLayer2.SelectedIndex >= 0 && _cmbOperation.SelectedIndex >= 0) { //obrada forme if (_cmbOperation.SelectedIndex == 0) //intersect { SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); SharpMap.Layers.VectorLayer layer1 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer1.SelectedItem.ToString()); SharpMap.Layers.VectorLayer layer2 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer2.SelectedItem.ToString()); SharpMap.Data.Providers.NtsProvider nts = new SharpMap.Data.Providers.NtsProvider(layer1.DataSource); SharpMap.Data.Providers.NtsProvider nts2 = new SharpMap.Data.Providers.NtsProvider(layer2.DataSource); SharpMap.Geometries.GeometryCollection coll = new SharpMap.Geometries.GeometryCollection(); ds.Tables.Clear(); SharpMap.Data.FeatureDataSet set = new SharpMap.Data.FeatureDataSet(); nts.GetFeaturesInView(nts.GetExtents(), set); SharpMap.Data.FeatureDataSet res = new SharpMap.Data.FeatureDataSet(); res.Tables.Add(set.Tables[0].Clone()); res.Tables[0].Rows.Clear(); ds.Tables.Clear(); foreach (SharpMap.Data.FeatureDataRow row in set.Tables[0].Rows) { nts2.ExecuteIntersectionQuery(row.Geometry, ds); if (ds.Tables[0].Rows.Count > 0) { SharpMap.Data.FeatureDataRow red = res.Tables[0].NewRow(); red.Geometry = row.Geometry; red.ItemArray = row.ItemArray; res.Tables[0].AddRow(red); } ds.Tables.Clear(); } LayerInfo l = new LayerInfo(res.Tables[0]); l.Show(); SharpMap.Data.Providers.GeometryFeatureProvider prov = new SharpMap.Data.Providers.GeometryFeatureProvider(res.Tables[0]); SharpMap.Layers.VectorLayer lay = new SharpMap.Layers.VectorLayer("selected layer", prov); lay.Style.Fill = Brushes.Yellow; SharpMap.Layers.ILayer layerToRemove = _map.GetLayerByName("selected layer"); if (layerToRemove != null) { _map.Layers.Remove(layerToRemove); } _map.Layers.Add(lay); this._parent.RefreshMap(); } else if (_cmbOperation.SelectedIndex == 1)//within { SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); SharpMap.Layers.VectorLayer layer1 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer1.SelectedItem.ToString()); SharpMap.Layers.VectorLayer layer2 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer2.SelectedItem.ToString()); SharpMap.Data.Providers.NtsProvider nts = new SharpMap.Data.Providers.NtsProvider(layer1.DataSource); SharpMap.Data.Providers.NtsProvider nts2 = new SharpMap.Data.Providers.NtsProvider(layer2.DataSource, CreateBuffers); SharpMap.Geometries.GeometryCollection coll = new SharpMap.Geometries.GeometryCollection(); ds.Tables.Clear(); SharpMap.Data.FeatureDataSet set = new SharpMap.Data.FeatureDataSet(); nts.GetFeaturesInView(nts.GetExtents(), set); SharpMap.Data.FeatureDataSet res = new SharpMap.Data.FeatureDataSet(); res.Tables.Add(set.Tables[0].Clone()); res.Tables[0].Rows.Clear(); ds.Tables.Clear(); foreach (SharpMap.Data.FeatureDataRow row in set.Tables[0].Rows) { nts2.ExecuteIntersectionQuery(row.Geometry, ds); if (ds.Tables[0].Rows.Count > 0) { SharpMap.Data.FeatureDataRow red = res.Tables[0].NewRow(); red.Geometry = row.Geometry; red.ItemArray = row.ItemArray; res.Tables[0].AddRow(red); } ds.Tables.Clear(); } LayerInfo l = new LayerInfo(res.Tables[0]); l.Show(); SharpMap.Data.Providers.GeometryFeatureProvider prov = new SharpMap.Data.Providers.GeometryFeatureProvider(res.Tables[0]); SharpMap.Layers.VectorLayer lay = new SharpMap.Layers.VectorLayer("selected layer", prov); lay.Style.Fill = Brushes.Yellow; SharpMap.Layers.ILayer layerToRemove = _map.GetLayerByName("selected layer"); if (layerToRemove != null) { _map.Layers.Remove(layerToRemove); } _map.Layers.Add(lay); this._parent.RefreshMap(); } else//van { SharpMap.Data.FeatureDataSet ds = new SharpMap.Data.FeatureDataSet(); SharpMap.Layers.VectorLayer layer1 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer1.SelectedItem.ToString()); SharpMap.Layers.VectorLayer layer2 = (SharpMap.Layers.VectorLayer)_map.GetLayerByName(_cmbLayer2.SelectedItem.ToString()); SharpMap.Data.Providers.NtsProvider nts = new SharpMap.Data.Providers.NtsProvider(layer1.DataSource); SharpMap.Data.Providers.NtsProvider nts2 = new SharpMap.Data.Providers.NtsProvider(layer2.DataSource, CreateBuffers); SharpMap.Geometries.GeometryCollection coll = new SharpMap.Geometries.GeometryCollection(); ds.Tables.Clear(); SharpMap.Data.FeatureDataSet set = new SharpMap.Data.FeatureDataSet(); nts.GetFeaturesInView(nts.GetExtents(),set); SharpMap.Data.FeatureDataSet res = new SharpMap.Data.FeatureDataSet(); res.Tables.Add(set.Tables[0].Clone()); res.Tables[0].Rows.Clear(); ds.Tables.Clear(); foreach (SharpMap.Data.FeatureDataRow row in set.Tables[0].Rows) { nts2.ExecuteIntersectionQuery(row.Geometry, ds); if (ds.Tables[0].Rows.Count <= 0) { SharpMap.Data.FeatureDataRow red = res.Tables[0].NewRow(); red.Geometry = row.Geometry; red.ItemArray = row.ItemArray; res.Tables[0].AddRow(red); } ds.Tables.Clear(); } LayerInfo l = new LayerInfo(res.Tables[0]); l.Show(); SharpMap.Data.Providers.GeometryFeatureProvider prov = new SharpMap.Data.Providers.GeometryFeatureProvider(res.Tables[0]); SharpMap.Layers.VectorLayer lay = new SharpMap.Layers.VectorLayer("selected layer", prov); lay.Style.Fill = Brushes.Yellow; SharpMap.Layers.ILayer layerToRemove = _map.GetLayerByName("selected layer"); if (layerToRemove != null) { _map.Layers.Remove(layerToRemove); } _map.Layers.Add(lay); this._parent.RefreshMap(); } } }