改变空间参考,文本框显示prj文件内容
2012-11-07 18:03
260 查看
prj文件的读取是通过IESRISpatialReferenceGEN2接口的ExportToESRISpatialReference2()函数来实现,做法是把prj文件读到缓冲的string中,然后可以通过textBox来显示,以下是完整代码:textBox1和textBox2是两个文本框。
转载请注明出处。
private void SelectSRP_Click(object sender, EventArgs e) { ISpatialReferenceFactory3 pSpatialReferenceFactory = new SpatialReferenceEnvironmentClass(); string str = ""; //没有图层就提示加载图层 MainFrm mainFrm1 = System.Windows.Forms.Application.OpenForms[0] as MainFrm; IMap pMap = mainFrm1.axMapControl1.Map; if (pMap.LayerCount < 1) { MessageBox.Show("请先加载图层!"); return; } IFeatureLayer pLayer; pLayer = pMap.get_Layer(0) as IFeatureLayer; //实现了从ILayer到IFeatureLayer的跳转,因为有一个共同的类:FeatureLayer IFeatureClass pFeatureClass; pFeatureClass = pLayer.FeatureClass; //接口跳转,从要素类得到数据集,IGeoDataset和IFeatureClass有一个共同的类:FeatureClass IGeoDataset pGeoDataset; pGeoDataset = pFeatureClass as IGeoDataset; //接口跳转,从地理数据集得到GeoDatasetSchemaEdit,IgeoDataset和IGeoDatasetSchemaEdit有一个共同的类:FeatureDataset IGeoDatasetSchemaEdit pGeoDatasetEdit; pGeoDatasetEdit = pGeoDataset as IGeoDatasetSchemaEdit; //按选择的文件来建立空间参考 OpenFileDialog ogeoSRP = new OpenFileDialog(); ogeoSRP.Filter = "坐标参考系(*.prj)|*.prj"; ogeoSRP.InitialDirectory = @"C:\Program Files\ArcGIS\Desktop10.0\Coordinate Systems"; ogeoSRP.Multiselect = false; ogeoSRP.ShowDialog(); str = ogeoSRP.FileName; //如果用户没有选择则返回 if (str == string.Empty) { return; } //选择了投影文件txtBox1上显示投影文件名称 textBox1.Text = System.IO.Path.GetFileNameWithoutExtension(str); //this"str" for CreateESRISpatialReferenceFromPRJFile Focuntion str = System.IO.Path.GetFullPath(str); if (pGeoDatasetEdit.CanAlterSpatialReference == true) { ISpatialReference pSpatialReference = pSpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile(str); try { pGeoDatasetEdit.AlterSpatialReference(pSpatialReference); MessageBox.Show("改变空间参考成功!目前的空间参考是" + pSpatialReference.Name, "提示"); } catch (Exception ex) { MessageBox.Show("改变空间参考不成功!"); return; } //把空间参考的信息写到字符串中 int bytes = 0; string buffer = null; IESRISpatialReferenceGEN2 parameterExport = pSpatialReference as IESRISpatialReferenceGEN2; parameterExport.ExportToESRISpatialReference2(out buffer,out bytes); //在文本框中显示 textBox2.Text = buffer; } //刷新地图 IActiveView pActiveView = pMap as IActiveView; pActiveView.Refresh(); }
转载请注明出处。
相关文章推荐
- swing实现拖拽效果(将本地文件拖拽到程序的文本框中显示内容)
- xslt文件中文本框里面显示下拉框内容(详解)
- vf表单中如何根据组合框内容而选择不同文件再根据不同文件改变文本框的内容
- java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
- java读取excel、txt 文件内容,传到、显示到另一个页面的文本框里面。
- 12、MySQL 8.0参考手册 4.6.5 myisamlog - 显示MyISAM日志文件内容
- 用SDK对话框实现改变背景颜色和显示剪贴板中的文本文件内容
- 以十六进制形式显示文件内容
- qt4:读取硬盘上的文件并显示到文本框中,
- 请问有没有什么方法将dmp文件导入到指定的表空间去?或者怎样改变数据库所有表所在的表空间
- 您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容(解决方法)
- 【LVL1_7_c】【思考题】【7】以a+ r+ w+模式打开的文件都是可读可写的,哪种模式更适合用来改变文件已有内容?
- fckeditor改变浏览服务器文件的显示效果
- 在一个页面上,一块区域上显示另一个页面(或者文件)的内容
- Qt将文本框的内容写到文件里
- HTML中让表单input等文本框为只读不可编辑但可以获取value值的方法;让文本域前面的内容显示在左上角,居中
- 用重定向显示文件内容
- Linux 文件系统剖析: 使用 /proc 文件系统来访问 Linux 内核的内容 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口
- JS来判断文本框内容改变事件
- 无法显示CHM文件的内容