txt转shp的java程序_txt转shp

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.ComponentModel;4 usingSystem.Data;5 usingSystem.Drawing;6 usingSystem.Linq;7 usingSystem.Text;8 usingSystem.Windows.Forms;9 usingNewDistrict;10 usingSystem.IO;11

12 usingSystem.Threading.Tasks;13 usingESRI.ArcGIS.Carto;14 usingESRI.ArcGIS.Controls;15 usingESRI.ArcGIS.DataSourcesFile;16 usingESRI.ArcGIS.Geodatabase;17 usingESRI.ArcGIS.Geometry;18

19 namespaceSignalDeal20 {21 public partial classFormtxt2shp : Form22 {23 publicFormtxt2shp()24 {25 ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);26 InitializeComponent();27 }28

29

30 //选择Txt文件

31 private void btn_TxtPath_Click(objectsender, EventArgs e)32 {33 OpenFileDialog xjTxtOpenFileDialog = newOpenFileDialog();34 xjTxtOpenFileDialog.Multiselect = false;35 xjTxtOpenFileDialog.Title = "打开txt坐标文件";36 xjTxtOpenFileDialog.Filter = "txt坐标文件(*.txt)|*.txt";37 if (xjTxtOpenFileDialog.ShowDialog() ==DialogResult.OK)38 {39 txt_TxtPath.Text =xjTxtOpenFileDialog.FileName;40 }41 }42

43 //Shp矢量点保存路径

44 private void btn_ShpPath_Click(objectsender, EventArgs e)45 {46 SaveFileDialog xjShpSaveFileDialog = newSaveFileDialog();47 xjShpSaveFileDialog.Filter = "Shape文件(*.shp)|*.shp";48 if(File.Exists(txt_TxtPath.Text))49 {50 xjShpSaveFileDialog.FileName =System.IO.Path.GetFileNameWithoutExtension(txt_TxtPath.Text);51 }52 if (xjShpSaveFileDialog.ShowDialog() ==DialogResult.OK)53 {54 txt_ShpPath.Text =xjShpSaveFileDialog.FileName;55 }56 }57

58

59 //显示保存60 //检查数据和路径

61 private boolCheck()62 {63 if (txt_TxtPath.Text == "" || !File.Exists(txt_TxtPath.Text))64 {65 MessageBox.Show("数据无效,重选", "提示", MessageBoxButtons.OK);66 return false;67 }68 if (txt_ShpPath.Text == "" || System.IO.Path.GetExtension(txt_ShpPath.Text).ToLower() != ".shp")69 {70 MessageBox.Show("Shp矢量点保存路径无效,重选", "提示", MessageBoxButtons.OK);71 return false;72 }73 return true;74 }75 //结构体

76 structPoint77 {78 public stringName;79 public doubleX;80 public doubleY;81 }82 List xjColumn = new List();83 //获取点数据

84 private List GetPoint(stringsurveyDataFullName)85 {86 List xjList = new List();87 char[] xjchar = new char[] { ‘,‘, ‘ ‘, ‘\t‘ }; //常用的分隔符为逗号、空格、制位符88 //读取

89 FileStream xjFileStream = newFileStream(surveyDataFullName, FileMode.Open);90 StreamReader xjStreamReader = newStreamReader(xjFileStream, Encoding.Default);91 string xjstringLine =xjStreamReader.ReadLine();92 if (xjstringLine != null)93 {94 string[] xjstrArray =xjstringLine.Split(xjchar);95 if (xjstrArray.Length > 0)96 {97 for (int i = 0; i < xjstrArray.Length; i++)98 {99 xjColumn.Add(xjstrArray[i]);100 }101 }102

103 while ((xjstringLine = xjStreamReader.ReadLine()) != null)104 {105 //点信息的读取

106 xjstrArray =xjstringLine.Split(xjchar);107 Point xjPoint = newPoint();108 xjPoint.Name = xjstrArray[0].Trim();109 xjPoint.X = Convert.ToDouble(xjstrArray[1]);110 xjPoint.Y = Convert.ToDouble(xjstrArray[2]);111

112 xjList.Add(xjPoint);113 }114 }115 else

116 {117 return null;118 }119 xjStreamReader.Close();120 returnxjList;121 //catch (Exception ex)122 //{123 //MessageBox.Show(ex.Message);124 //return null;125 //}

126 }127 //创建Shp矢量图层

128 private IFeatureLayer CreateShpFromPoints(List xjPointList, stringxjFilePath)129 {130 int index = xjFilePath.LastIndexOf(‘\\‘);131 string xjFolder = xjFilePath.Substring(0, index);132 string xjShapeName = xjFilePath.Substring(index + 1);133 IWorkspaceFactory xjWsF = newShapefileWorkspaceFactoryClass();134 IFeatureWorkspace xjFWs = (IFeatureWorkspace)xjWsF.OpenFromFile(xjFolder, 0);135

136 IFields xjFields = newFieldsClass();137 IFieldsEdit xjFieldsEdit;138 xjFieldsEdit =(IFieldsEdit)xjFields;139

140 IField xjField = newFieldClass();141 IFieldEdit xjFieldEdit =(IFieldEdit)xjField;142 xjFieldEdit.Name_2 = "Shape";143 xjFieldEdit.Type_2 =esriFieldType.esriFieldTypeGeometry;144 IGeometryDef xjGeometryDef = newGeometryDefClass();145 IGeometryDefEdit xjGDefEdit =(IGeometryDefEdit)xjGeometryDef;146 xjGDefEdit.GeometryType_2 =esriGeometryType.esriGeometryPoint;147 //定义坐标系

148 ISpatialReferenceFactory pSRF = newSpatialReferenceEnvironmentClass();149 ISpatialReference pSpatialReference = pSRF.CreateProjectedCoordinateSystem((int)esriSRProjCS4Type.esriSRProjCS_Beijing1954_3_Degree_GK_CM_114E);150 xjGDefEdit.SpatialReference_2 =pSpatialReference;151

152 xjFieldEdit.GeometryDef_2 =xjGeometryDef;153 xjFieldsEdit.AddField(xjField);154

155 IFeatureClass xjFeatureClass;156 xjFeatureClass = xjFWs.CreateFeatureClass(xjShapeName, xjFields, null, null, esriFeatureType.esriFTSimple, "Shape", "");157

158 IPoint xjPoint = newPointClass();159

160 for (int j = 0; j < xjPointList.Count; j++)161 {162

163 xjPoint.X =xjPointList[j].X;164 xjPoint.Y =xjPointList[j].Y;165

166 IFeatureBuffer xjFeature =xjFeatureClass.CreateFeatureBuffer();167 IFeatureCursor featureCursor = xjFeatureClass.Insert(true);168

169 xjFeature.Shape =xjPoint;170 xjFeature.set_Value(xjFeature.Fields.FindField("id"), xjPointList[j].Name);171 featureCursor.InsertFeature(xjFeature);172 }173

174 IFeatureLayer xjFeatureLayer = newFeatureLayerClass();175 xjFeatureLayer.Name =xjShapeName;176 xjFeatureLayer.FeatureClass =xjFeatureClass;177 returnxjFeatureLayer;178 }179 //单击显示保存

180 private void btn_ShowSave_Click(objectsender, EventArgs e)181 {182 if(Check())183 {184 List xjPointList =GetPoint(txt_TxtPath.Text);185 if (xjPointList == null)186 {187 MessageBox.Show("选择文件是空的!");188 }189 else

190 {191 IFeatureLayer pFeatureLayer =CreateShpFromPoints(xjPointList, txt_ShpPath.Text);192 //MainForm.m_mapControl.Map.AddLayer(pFeatureLayer);

193 }194 }195 MessageBox.Show("完成!");196 }197 }198 }199

200 Formtxt2shp.cs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值