if (lblFilePath.Text.Trim() == "")// '检查保存路径不为空
{
MessageBox.Show("请选择保存路径");
return;
}
if (TxtSaveName.Text.Trim() == "")// '检查文件名不为空
{
MessageBox.Show("请选择保存图层名");
return;
}
//指定目录,如果存在则删除
//ISpatialReference pSpatialReference = _frmMain.pCurrentMap.ActiveView.FocusMap.SpatialReference;
string strShapeFolder = lblFilePath.Text;
string strShapeFile = TxtSaveName.Text.Trim() + ".shp";
FileInfo fFile = new FileInfo(strShapeFolder + @"\" + TxtSaveName.Text.Trim() + ".shp");
//是否重命名
if (fFile.Exists)
{
DialogResult r2 = MessageBox.Show("此文件名已经存在,要覆盖吗?", "返回值 是6 否7", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (r2 == System.Windows.Forms.DialogResult.Yes) //取消关闭
{
DirectoryInfo fold = new DirectoryInfo(strShapeFolder);
FileInfo[] files = fold.GetFiles(TxtSaveName.Text.Trim() + ".*");
foreach (FileInfo f in files)
{
f.Delete();
}
}
else
{
TxtSaveName.Focus();
return;
}
}
string shapeFileFullName = strShapeFolder + strShapeFile;
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(strShapeFolder, 0);
IFeatureClass pFeatureClass;
if (File.Exists(shapeFileFullName))
{
pFeatureClass = pFeatureWorkspace.OpenFeatureClass(strShapeFile);
IDataset pDataset = (IDataset)pFeatureClass;
pDataset.Delete();
}
//设置字段
int i;
double tmpLongitude;
double tmplatitude;
IPoint pPoint;
IFields pFields = new FieldsClass();
IFieldsEdit pFieldsEdit = (IFieldsEdit)pFields;
IField pField = new FieldClass();
IFieldEdit pFieldEdit = (IFieldEdit)pField;
ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironment();
IGeographicCoordinateSystem pGCS;
pGCS = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
pFieldEdit.Name_2 = "SHAPE";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry;
IGeometryDefEdit pGeoDef = new GeometryDefClass();
IGeometryDefEdit pGeoDefEdit = (IGeometryDefEdit)pGeoDef;
pGeoDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint;
pGeoDefEdit.SpatialReference_2 = pGCS; //new UnknownCoordinateSystemClass();
pFieldEdit.GeometryDef_2 = pGeoDef;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "经度";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "纬度";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "地点";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldEdit.Length_2 = 30;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "炮型";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString;
pFieldEdit.Length_2 = 30;
pFieldsEdit.AddField(pField);
pField = new FieldClass();
pFieldEdit = (IFieldEdit)pField;
pFieldEdit.Name_2 = "高程";
pFieldEdit.Type_2 = esriFieldType.esriFieldTypeDouble;
pFieldsEdit.AddField(pField);
//创建shp
pFeatureClass = pFeatureWorkspace.CreateFeatureClass(strShapeFile, pFields, null, null, esriFeatureType.esriFTSimple, "SHAPE", "");
//进度条
dlgReadProgress newprogress = new dlgReadProgress();
{
newprogress.Label1.Text = "正在生成shp文件,请稍候。。。";
newprogress.ProgressBar.Maximum = gvwPoint.SelectedRows.Count;
newprogress.ProgressBar.Step = 1;
}
for (i = 0; i < gvwPoint.SelectedRows.Count; i++)
{
tmpLongitude = Convert.ToDouble(gvwPoint.SelectedRows[i].Cells[3].Value.ToString().Trim());
tmpLongitude += Convert.ToDouble(gvwPoint.SelectedRows[i].Cells[4].Value.ToString().Trim()) / 60.0;
tmpLongitude += Convert.ToDouble(gvwPoint.SelectedRows[i].Cells[5].Value.ToString().Trim()) / 3600.0;
tmplatitude = Convert.ToDouble(gvwPoint.SelectedRows[i].Cells[6].Value.ToString().Trim());
tmplatitude += Convert.ToDouble(gvwPoint.SelectedRows[i].Cells[7].Value.ToString().Trim()) / 60.0;
tmplatitude += Convert.ToDouble(gvwPoint.SelectedRows[i].Cells[8].Value.ToString().Trim()) / 3600.0;
pPoint = new PointClass();
pPoint.X = tmpLongitude;
pPoint.Y = tmplatitude;
IFeature pFeature = pFeatureClass.CreateFeature();
pFeature.Shape = pPoint;
pFeature.set_Value(pFeature.Fields.FindField("经度"), tmpLongitude.ToString("F4"));
pFeature.set_Value(pFeature.Fields.FindField("纬度"), tmplatitude.ToString("F4"));
pFeature.set_Value(pFeature.Fields.FindField("地点"), gvwPoint.SelectedRows[i].Cells[2].Value);
pFeature.set_Value(pFeature.Fields.FindField("炮型"), gvwPoint.SelectedRows[i].Cells[11].Value);
pFeature.set_Value(pFeature.Fields.FindField("高程"), gvwPoint.SelectedRows[i].Cells[9].Value);
pFeature.Store();
newprogress.ProgressBar.PerformStep();
newprogress.Show();
newprogress.Refresh();
}
newprogress.Close();
DialogResult r1 = MessageBox.Show("是否加载当前图层?", "返回值 是6 否7", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (r1 == DialogResult.Yes)
{
IFeatureLayer pFeaturelayer = new FeatureLayerClass();
pFeaturelayer.FeatureClass = pFeatureClass;
pFeaturelayer.Name = "layer";
_frmMain.pCurrentMap.AddLayer(pFeaturelayer);
}
分享到:
相关推荐
C# + ARCGis二次开发基础教程,适合初学者学习!
C#+arcgis Engine9.2开发的一个地图裁剪工具
Arcgis Engine 添加shp.lyr图层,删除图层,移动图层,更改图例符号,属性查询,鹰眼的实现。
代码非常珍贵,几乎包括了ArcGIS Engine开发的所有功能模块。即包括了鹰眼、放缩漫游、图元编辑、图元式样设定等常见功能模块,又包括了栅格插值、表面分析、临近分析、3D分析、网络分析、Utility分析等高级空间分析...
C#+ArcGIS Engine开发的公路查询信息系统,具有图层操作、按属性查图、按位置及属性查询,图层标注,快速查找定位等功能
根据邱洪刚的ArcGIS二次开发从入门到精通一书中第四章的代码进行修改,使得可以加载地图文档创建图层往图层中添加面状元素。
基于C# 2005 +Arcgis engine 的GIS开发
①*mxd文档和*shp矢量图层等数据文件的加载和保存、 ②放大缩小等视图操作、③SQL查询和空间查询、 ④空间分析和叠置分析、⑤网络分析、⑥三维分析、 ⑦鹰眼地图等。 开发版本信息:ArcGIS Engine 10.1
c#+Arcgis_Engine二三维联动_可以实现
AE开发 开发查找地图元素并高亮显示代码
讲述了如何基于C#和ArcGIS 的由线到面的构造技术!
C#开发ArcGIS Engine中在PageLayout插入指北针、图例、比例尺等
资料包含: ArcGIS_Engine_zh_105 ArcGIS_Engine_DevKit_105
Visual Studio 2010 + ArcGIS Engine 9.3实现新建shapefile文件
ArcGIS Engine环境下的Delaunay三角网构建,张渭军,,不规则三角网(TIN)是GIS中表达连续表面的主要方式之一,它具有可变的分辨率,精度高,能较好地表现不规则地貌的形态特征,因此有
基于Arcgis engine +C# 开发的房产测绘软件,C/S架构,仅供参考。 基本涵盖房产测绘各种分析工具,代码量比较大,可供参考面广。
详细介绍了C#=AE中怎么创建图层的属性数据表格,过程很详细,适合ArcGIS的初学者,很好的入门教程。
Esri技术公开课培训资料,VC2010+ ArcGIS Engine 10.1 开发。。
能够让初学者使用C#结合arcgis engine实现arcmap功能的二次开发,实现界面的搭建、属性表的构建、符号设计器的设计、鹰眼的实现、右键菜单栏的创建等功能。