using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.IO;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry ;
using ESRI.ArcGIS.GeoAnalyst;
using ESRI.ArcGIS.DataSourcesGDB;
namespace lesson2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string m_FileName;
//添加TIN数据
private void button1_Click(object sender, EventArgs e)
{
ISceneGraph pSceneGraph = this.axSceneControl1.SceneGraph;
IScene pScene = pSceneGraph.Scene;
IRasterLayer pRasterLayer = new RasterLayerClass();
ILayer pLayer;
this.openFileDialog1.Title = "Raster layer";
this.openFileDialog1.DefaultExt = ".TIF";
this.openFileDialog1.Filter = "(*.tif)|*.tif";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
m_FileName = this.openFileDialog1.FileName;
string pPathName = this.openFileDialog1.FileName;
string pPath = pPathName.Substring(0, pPathName.LastIndexOf('\\'));
string fileName = pPathName.Substring(pPath.Length + 1, pPathName.Length - pPath.Length - 1);
IWorkspaceFactory pwsf = new RasterWorkspaceFactoryClass();
IRasterWorkspace pRasterWorkspace;
if (pwsf.IsWorkspace(pPath))
{
pRasterWorkspace = pwsf.OpenFromFile(pPath, 0) as IRasterWorkspace;
IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(fileName);
//pRasterDataset.OpenFromFile(pPath);
pRasterLayer.CreateFromDataset(pRasterDataset);
pLayer = pRasterLayer as ILayer;
pScene.AddLayer(pLayer, true);
//pScene.ExaggerationFactor = 6;
pSceneGraph.RefreshViewers();
}
}
}
//坡度分析
private void button2_Click(object sender, EventArgs e)
{
IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass();
FileInfo fileInfo = new FileInfo(m_FileName);
string filePath = fileInfo.DirectoryName;
string fileName = fileInfo.Name;
//filePath =filePath +@"\workspace1";
IRasterWorkspace workspace = workspaceFactory.OpenFromFile(filePath, 0) as IRasterWorkspace;
ILayer layer = this.axSceneControl1.Scene.get_Layer(0);
IRasterLayer rasterLayer = layer as IRasterLayer;
IRasterDataset rasterDataset = workspace.OpenRasterDataset(fileName);
ISurfaceOp surfaceOp = new RasterSurfaceOpClass();
IRasterAnalysisEnvironment rasterAnalysisEnveronment;
rasterAnalysisEnveronment = surfaceOp as IRasterAnalysisEnvironment;
rasterAnalysisEnveronment.OutWorkspace = workspace as IWorkspace;
object zFactor = new object();
IGeoDataset geoDataset, rasterGeoDataset;
rasterGeoDataset = rasterDataset as IGeoDataset;
geoDataset = surfaceOp.Slope(rasterGeoDataset, esriGeoAnalysisSlopeEnum.esriGeoAnalysisSlopePercentrise, ref zFactor);
IRasterBandCollection rasterBandCollection = geoDataset as IRasterBandCollection;
rasterBandCollection.SaveAs("podu.tif", workspace as IWorkspace, "TIFF");
}
private void axSceneControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ISceneControlEvents_OnMouseDownEvent e)
{
ISceneGraph pSceneGraph = this.axSceneControl1.SceneGraph;
IScene pScene = pSceneGraph.Scene;
int px = e.x;
int py = e.y;
IPoint point = null;
object pOwner;
object pObject;
pSceneGraph.Locate(this.axSceneControl1.SceneViewer, px, py, esriScenePickMode.esriScenePickAll, true, out point, out pOwner, out pObject);
if (point != null)
{
MessageBox.Show(point.X + "_" + point.Y + "_" + point.Z);
}
}
//通视分析
private void button3_Click(object sender, EventArgs e)
{
IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass();
FileInfo fileInfo = new FileInfo(m_FileName);
string filePath = fileInfo.DirectoryName;
string fileName = fileInfo.Name;
IRasterWorkspace rasterWorkspace = workspaceFactory.OpenFromFile(filePath, 0) as IRasterWorkspace;
IWorkspaceFactory pointWorkspaceFactory = new AccessWorkspaceFactoryClass();
IWorkspace featureWorkspace = pointWorkspaceFactory.OpenFromFile(filePath + @"\aaa.mdb", 0);
//vIFeatureClass featureClass = featureWorkspace.OpenFeatureClass("point");
IEnumDataset enumDataset = featureWorkspace.get_Datasets(esriDatasetType.esriDTAny);
enumDataset.Reset();
IGeoDataset featureDataset = enumDataset.Next() as IGeoDataset;
ILayer layer = this.axSceneControl1.Scene.get_Layer(0);
IRasterLayer rasterLayer = layer as IRasterLayer;
IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(fileName);
ISurfaceOp surfaceOp = new RasterSurfaceOpClass();
IRasterAnalysisEnvironment rasterAnalysisEnveronment;
rasterAnalysisEnveronment = surfaceOp as IRasterAnalysisEnvironment;
rasterAnalysisEnveronment.OutWorkspace = rasterWorkspace as IWorkspace;
object zFactor = new object();
IGeoDataset geoDataset, rasterGeoDataset;
rasterGeoDataset = rasterDataset as IGeoDataset;
geoDataset = surfaceOp.Visibility(rasterGeoDataset, featureDataset, esriGeoAnalysisVisibilityEnum.esriGeoAnalysisVisibilityFrequency);
IRasterBandCollection rasterBandCollection = geoDataset as IRasterBandCollection;
rasterBandCollection.SaveAs("tongshi.tif", rasterWorkspace as IWorkspace, "TIFF");
}
}
}
评论0