private void button1_Click(object sender, EventArgs e) { if (this.comboBox1.SelectedItem.ToString() == "") { MessageBox.Show("请选择有效图层!"); return; } if (this.textBox1.Text == "") { MessageBox.Show("请输入相对高程下限!"); return; } if (this.textBox2.Text == "") { MessageBox.Show("请输入相对高程上限!"); return; } if (this.textBox1.Text != "") { if (!IsNumeric(this.textBox1.Text.ToString())) { MessageBox.Show("请输入数字!"); return; } } if (this.textBox2.Text != "") { if (!IsNumeric(this.textBox1.Text.ToString())) { MessageBox.Show("请输入数字!"); return; } } IWorkspaceFactory m_workspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace featureWorkspce = m_workspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IFeatureClass feaC = featureWorkspce.OpenFeatureClass("test"); if (this.textBox1.Text == "0") { IFeatureCursor feaCur = feaC.Search(null, true); IFeature pFeature = feaCur.NextFeature(); IArea area = pFeature.Shape as IArea; double areaD = Math.Abs(area.Area) / 3; this.label11.Text = areaD.ToString("#######") + "平方米"; while (pFeature != null) { pFeature.set_Value(2, this.m_tin.Extent.ZMin + Convert.ToDouble(this.textBox2.Text.ToString())); pFeature.Store(); pFeature = feaCur.NextFeature(); } IDataset pDataset = feaC as IDataset; IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IWorkspace pWorkspace = pFeatureWorkspace as IWorkspace; pDataset.Copy("test2", pFeatureWorkspace as IWorkspace); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IFeatureClass fea2 = pFeatureWorkspace.OpenFeatureClass("test2"); TinPolygonVolume ff = new TinPolygonVolume(m_tin, fea2, "HEIGHT"); ff.reference_plane = "BELOW"; Geoprocessor gp = new Geoprocessor(); gp.Execute(ff, null); feaCur = fea2.Search(null, true); pFeature = feaCur.NextFeature(); while (pFeature != null) { double volume = (double)pFeature.get_Value(3); this.label7.Text = volume.ToString("#######") + "立方米"; double sarea = (double)pFeature.get_Value(4); this.label8.Text = sarea.ToString("#######") + "平方米"; pFeature = feaCur.NextFeature(); } } else { IFeatureCursor feaCur = feaC.Search(null, true); IFeature pFeature = feaCur.NextFeature(); IArea area = pFeature.Shape as IArea; double areaD = Math.Abs(area.Area) / 3; this.label11.Text = areaD.ToString("#######") + "平方米"; while (pFeature != null) { pFeature.set_Value(2, this.m_tin.Extent.ZMin + Convert.ToDouble(this.textBox2.Text.ToString())); pFeature.Store(); pFeature = feaCur.NextFeature(); } IDataset pDataset = feaC as IDataset; IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IWorkspace pWorkspace = pFeatureWorkspace as IWorkspace; pDataset.Copy("test2", pFeatureWorkspace as IWorkspace); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IFeatureClass fea2 = pFeatureWorkspace.OpenFeatureClass("test2"); TinPolygonVolume ff = new TinPolygonVolume(m_tin, fea2, "HEIGHT"); ff.reference_plane = "BELOW"; Geoprocessor gp = new Geoprocessor(); gp.Execute(ff, null); feaCur = fea2.Search(null, true); pFeature = feaCur.NextFeature(); double volume1 = 0; double sarea1 = 0; while (pFeature != null) { volume1 = (double)pFeature.get_Value(3); //this.label7.Text = volume.ToString("#######") + "立方米"; sarea1 = (double)pFeature.get_Value(4); //this.label8.Text = sarea.ToString("#######") + "平方米"; pFeature = feaCur.NextFeature(); } feaCur = feaC.Search(null, true); pFeature = feaCur.NextFeature(); double volume2 = 0; double sarea2 = 0; while (pFeature != null) { pFeature.set_Value(2, this.m_tin.Extent.ZMin + Convert.ToDouble(this.textBox1.Text.ToString())); pFeature.Store(); pFeature = feaCur.NextFeature(); } pDataset = feaC as IDataset; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; pWorkspace = pFeatureWorkspace as IWorkspace; pDataset.Copy("test3", pFeatureWorkspace as IWorkspace); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; fea2 = pFeatureWorkspace.OpenFeatureClass("test3"); ff = new TinPolygonVolume(m_tin, fea2, "HEIGHT"); ff.reference_plane = "BELOW"; gp = new Geoprocessor(); gp.Execute(ff, null); feaCur = fea2.Search(null, true); pFeature = feaCur.NextFeature(); while (pFeature != null) { volume2 = (double)pFeature.get_Value(3); //this.label7.Text = volume.ToString("#######") + "立方米"; sarea2 = (double)pFeature.get_Value(4); //this.label8.Text = sarea.ToString("#######") + "平方米"; pFeature = feaCur.NextFeature(); } double volume = volume1 - volume2; double sarea = sarea1 - sarea2; this.label7.Text = volume.ToString("#######") + "立方米"; this.label8.Text = sarea.ToString("#######") + "平方米"; } string[] files = System.IO.Directory.GetFiles(Application.StartupPath + "\\tempSHP"); for (int i = 0; i < files.Length; i++) { System.IO.File.Delete(files[i]); } }
private void button1_Click(object sender, EventArgs e) { if (this.comboBox1.SelectedItem.ToString() == "") { MessageBox.Show("请选择有效图层!"); return; } if (this.textBox1.Text == "") { MessageBox.Show("请输入相对高程下限!"); return; } if (this.textBox2.Text == "") { MessageBox.Show("请输入相对高程上限!"); return; } if (this.textBox1.Text != "") { if (!IsNumeric(this.textBox1.Text.ToString())) { MessageBox.Show("请输入数字!"); return; } } if (this.textBox2.Text != "") { if (!IsNumeric(this.textBox1.Text.ToString())) { MessageBox.Show("请输入数字!"); return; } } IWorkspaceFactory m_workspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace featureWorkspce = m_workspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IFeatureClass feaC = featureWorkspce.OpenFeatureClass("test"); if (this.textBox1.Text == "0") { IFeatureCursor feaCur = feaC.Search(null, true); IFeature pFeature = feaCur.NextFeature(); IArea area = pFeature.Shape as IArea; double areaD = Math.Abs(area.Area)/3; this.label11.Text = areaD.ToString("#######") + "平方米"; while (pFeature != null) { pFeature.set_Value(2, this.m_tin.Extent.ZMin + Convert.ToDouble(this.textBox2.Text.ToString())); pFeature.Store(); pFeature = feaCur.NextFeature(); } IDataset pDataset = feaC as IDataset; IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IWorkspace pWorkspace = pFeatureWorkspace as IWorkspace; pDataset.Copy("test2", pFeatureWorkspace as IWorkspace); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IFeatureClass fea2 = pFeatureWorkspace.OpenFeatureClass("test2"); TinPolygonVolume ff = new TinPolygonVolume(m_tin, fea2, "HEIGHT"); ff.reference_plane = "BELOW"; Geoprocessor gp = new Geoprocessor(); gp.Execute(ff, null); feaCur = fea2.Search(null, true); pFeature = feaCur.NextFeature(); while (pFeature != null) { double volume = (double)pFeature.get_Value(3); this.label7.Text = volume.ToString("#######") + "立方米"; double sarea = (double)pFeature.get_Value(4); this.label8.Text = sarea.ToString("#######") + "平方米"; pFeature = feaCur.NextFeature(); } } else { IFeatureCursor feaCur = feaC.Search(null, true); IFeature pFeature = feaCur.NextFeature(); IArea area = pFeature.Shape as IArea; double areaD = Math.Abs(area.Area)/3; this.label11.Text = areaD.ToString("#######") + "平方米"; while (pFeature != null) { pFeature.set_Value(2, this.m_tin.Extent.ZMin + Convert.ToDouble(this.textBox2.Text.ToString())); pFeature.Store(); pFeature = feaCur.NextFeature(); } IDataset pDataset = feaC as IDataset; IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IWorkspace pWorkspace = pFeatureWorkspace as IWorkspace; pDataset.Copy("test2", pFeatureWorkspace as IWorkspace); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; IFeatureClass fea2 = pFeatureWorkspace.OpenFeatureClass("test2"); TinPolygonVolume ff = new TinPolygonVolume(m_tin, fea2, "HEIGHT"); ff.reference_plane = "BELOW"; Geoprocessor gp = new Geoprocessor(); gp.Execute(ff, null); feaCur = fea2.Search(null, true); pFeature = feaCur.NextFeature(); double volume1=0; double sarea1=0; while (pFeature != null) { volume1 = (double)pFeature.get_Value(3); //this.label7.Text = volume.ToString("#######") + "立方米"; sarea1 = (double)pFeature.get_Value(4); //this.label8.Text = sarea.ToString("#######") + "平方米"; pFeature = feaCur.NextFeature(); } feaCur = feaC.Search(null, true); pFeature = feaCur.NextFeature(); double volume2=0; double sarea2=0; while (pFeature != null) { pFeature.set_Value(2, this.m_tin.Extent.ZMin + Convert.ToDouble(this.textBox1.Text.ToString())); pFeature.Store(); pFeature = feaCur.NextFeature(); } pDataset = feaC as IDataset; pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; pWorkspace = pFeatureWorkspace as IWorkspace; pDataset.Copy("test3", pFeatureWorkspace as IWorkspace); pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); pFeatureWorkspace = pWorkspaceFactory.OpenFromFile(Application.StartupPath + "\\tempSHP", 0) as IFeatureWorkspace; fea2 = pFeatureWorkspace.OpenFeatureClass("test3"); ff = new TinPolygonVolume(m_tin, fea2, "HEIGHT"); ff.reference_plane = "BELOW"; gp = new Geoprocessor(); gp.Execute(ff, null); feaCur = fea2.Search(null, true); pFeature = feaCur.NextFeature(); while (pFeature != null) { volume2 = (double)pFeature.get_Value(3); //this.label7.Text = volume.ToString("#######") + "立方米"; sarea2 = (double)pFeature.get_Value(4); //this.label8.Text = sarea.ToString("#######") + "平方米"; pFeature = feaCur.NextFeature(); } double volume = volume1 - volume2; double sarea = sarea1 - sarea2; this.label7.Text = volume.ToString("#######") + "立方米"; this.label8.Text = sarea.ToString("#######") + "平方米"; } string[] files = System.IO.Directory.GetFiles(Application.StartupPath + "\\tempSHP"); for (int i = 0; i < files.Length; i++) { System.IO.File.Delete(files[i]); } }