您的位置:首页 > 编程语言 > C#

C#窗体使用AE读取shp

2014-02-25 13:59 375 查看
public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)

{

打开file_Click(sender, e);

}

private void 关闭CToolStripMenuItem_Click(object sender, EventArgs e)

{

关闭file_Click(sender, e);

}

private void 关闭file_Click(object sender, EventArgs e)

{

this.Close();

}

private void 打开file_Click(object sender, EventArgs e)

{

openFileDialog1.Title = " 打开对话框,选择文件格式:shp格式,jpg格式或bmp格式!";

openFileDialog1.Filter = "(*.jpg)|*.jpg|(*.bmp)|*.bmp|(*.shp)|*.shp|(*.mxd)|*.mxd";

openFileDialog1.ShowDialog();

int commapos = openFileDialog1.FileName.IndexOf('.');

string filter = openFileDialog1.FileName.Substring(commapos, openFileDialog1.FileName.Length - commapos);

string filter1 = filter.ToLower();

if (filter1 == ".jpg"||filter1==".bmp")

{

IRasterLayer prasterlayer;

prasterlayer = new RasterLayer();

prasterlayer.CreateFromFilePath(openFileDialog1.FileName);

axMapControl1.AddLayer(prasterlayer);

axMapControl1.Refresh();

}

if (filter1 == ".shp")

{

string fname;

fname = openFileDialog1.FileName.Substring(Environment.CurrentDirectory.Length, openFileDialog1.FileName.Length - Environment.CurrentDirectory.Length - 4);

IWorkspaceFactory pwf;

IFeatureWorkspace pfw;

IFeatureClass pfc;

IFeatureLayer play;

pwf = new ShapefileWorkspaceFactory();

pfw = pwf.OpenFromFile(Environment.CurrentDirectory, 0) as IFeatureWorkspace;

pfc = pfw.OpenFeatureClass(fname);

play = new FeatureLayer();

play.FeatureClass = pfc;

axMapControl1.AddLayer(play);

axMapControl1.Refresh();

}

if (filter1 == ".mxd")

{

string fname;

fname=openFileDialog1.FileName;

if (axMapControl1.CheckMxFile(fname))

{

axMapControl1.LoadMxFile(fname,null,null);

}

}

}

private void 放大_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer =ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerZoomIn;

str = "fangda";

}

private void 缩小_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerZoomOut;

str = "suoxiao";

}

private void 漫游_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerPan;

str = "manyou";

}

private void 显示全图_Click(object sender, EventArgs e)

{

axMapControl1.Extent = axMapControl1.FullExtent;

}

private void 清空图层_Click(object sender, EventArgs e)

{

axMapControl1.ClearLayers();

}

private void 拉框放大_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerPageZoomIn;

str = "lakuangfangda";

}

private void 拉框缩小_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerPageZoomOut;

str = "lakuangsuoxiao";

}

private void 指针_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerCrosshair;

str = "指针";

}

private void axMapControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e)

{

switch (str)

{

case "fangda":

IEnvelope zoomin;

zoomin = axMapControl1.Extent;

zoomin.Expand(0.5, 0.5, true);

axMapControl1.Extent = zoomin;

axMapControl1.Refresh();

break;

case "suoxiao":

IEnvelope zoomout;

zoomout = axMapControl1.Extent;

zoomout.Expand(1.5, 1.5, true);

axMapControl1.Extent = zoomout;

axMapControl1.Refresh();

break;

case "lakuangfangda":

axMapControl1.Extent = axMapControl1.TrackRectangle();

break;

case "lakuangsuoxiao":

IEnvelope trackExtent, currentExtent, NewIEN = null;

currentExtent = axMapControl1.Extent;

trackExtent = axMapControl1.TrackRectangle();

double dXmin = 0, dYmin = 0, dXmax = 0, dYmax = 0, dHeight = 0, dWidth = 0;

dWidth = currentExtent.Width * (currentExtent.Width / trackExtent.Width);

dHeight = currentExtent.Height * (currentExtent.Height / trackExtent.Height);

dXmin = currentExtent.XMin - ((trackExtent.XMin - currentExtent.XMin) * (currentExtent.Width / trackExtent.Width));

dYmin = currentExtent.YMin - ((trackExtent.YMin - currentExtent.YMin) * (currentExtent.Height / trackExtent.Height));

dXmax = dXmin + dWidth;

dYmax = dYmin + dHeight;

NewIEN = new EnvelopeClass();

NewIEN.PutCoords(dXmin, dYmin, dXmax, dYmax);

axMapControl1.Extent = NewIEN;

break;

case "manyou":

axMapControl1.Pan();

break;

case "zhizhen":

break;

}

}

private void Form1_Load(object sender, EventArgs e)

{

axTOCControl1.SetBuddyControl(axMapControl1);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: