高分求解代码解答 (arcgis engine方面)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高分求解代码解答 (arcgis engine方面)相关的知识,希望对你有一定的参考价值。

private void menuAddShp_Click(object sender, EventArgs e)

IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"D:\GIS-Data", 0);
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;

IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass("continent.shp");
IFeatureLayer pFLayer = new FeatureLayerClass();
pFLayer.FeatureClass = pFC;
pFLayer.Name = pFC.AliasName;
ILayer pLayer = pFLayer as ILayer;

IMap pMap = axMapControl1.Map;
pMap.AddLayer(pLayer);
axMapControl1.ActiveView.Refresh();


希望能一行一行的解释
本人处在入门阶段
尤其是很多长的词语我在c#中就没见过
希望也解释一下
谢谢
对了,这些代码旨在实现添加shapefile文件到地图控件中
没有人会么 好失望啊

这就是用C#+AE写的一段加载图层的代码呀。
private void menuAddShp_Click(object sender, EventArgs e)

//前两行代码用来定义一个工作空间,可以简单理解为将文件输入输出定位到该文件夹下
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"D:\GIS-Data", 0);
//定义特征工作空间(其实和工作空间的差别只是AE类的组织的原因,你甚至可以理解成它们是一样的),将工作空间类型强制转化到特征工作空间
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
//打开特征集,其实特征集仍然只是AE对象组织的一种定义,可以简单理解为就是shape文件中空间和属性数据的转化形式
IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass("continent.shp");
IFeatureLayer pFLayer = new FeatureLayerClass();//定义特征图层,就是GIS里面图层的概念
pFLayer.FeatureClass = pFC; //设置图层的特征集为刚才的特征集,这样就可以将特征集中的数据加载到特征图层对象中
pFLayer.Name = pFC.AliasName; //设置图层名
ILayer pLayer = pFLayer as ILayer; //定义图层,并将刚才的特征图层强制转化为图层变量
//下面两行代码是在地图控件中加载图层
IMap pMap = axMapControl1.Map;
pMap.AddLayer(pLayer);
axMapControl1.ActiveView.Refresh(); //刷新视图,显示加载图层后的结果
参考技术A private void menuAddShp_Click(object sender, EventArgs e) //按键事件函数,一般会和一个窗体事件挂钩。

IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); //创建个对象咯,按名称上来说这是个接口类(接口类一般是不会发生变化的,即便在你的arcgis 系统升级后)
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(@"D:\GIS-Data", 0); //执行pWorkspaceFactory的OpenFromFile方法,并把它返回的IWorkspace 赋值给pWorkspace ,看样子也是个接口类
IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; //创建个对象咯,和上面一样

IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass("continent.shp"); //看样子是 打开默认路径下的continent.shp文件,一般默认路径是你程序所在位置
IFeatureLayer pFLayer = new FeatureLayerClass(); //又创建个对象咯
pFLayer.FeatureClass = pFC;
pFLayer.Name = pFC.AliasName; //以上赋值,应该是引用传递的(实际就一个对象)。
ILayer pLayer = pFLayer as ILayer; 强制转换为ILayer接口 ,不成功则为NULL,

IMap pMap = axMapControl1.Map;
pMap.AddLayer(pLayer); //加载pLayer 到窗体上
axMapControl1.ActiveView.Refresh(); //刷新空间
参考技术B 第一句创建一个ShapefileWorkspaceFactoryClass对象,实现IWorkspaceFactory接口。 参考技术C 在google里搜索
中文 msdn
查找
参考技术D 深奥的吓得晃!

高分求解,为何BMP图片无法打开?

有些图片(BMP)在软件中能正常显示,但是用看图软件却打不开,并且无预览,请问是什么原因,如何才能打开?
1、文件一定是图片,因为在软件中能显示。
2、看图软件是正常的,换了好几个都是打不开。
3、电脑是正常的。
...PHOTOSHOP 打不开
...ACDSee 打不开
...(强调)图片是没有问题的

分数追加到最高了,怎么还是没正确答案呢?

1.你打开那个windows自带的那个附件里的画图程序,这时才知道原来微软很了不起。
2.按文件下拉菜单,在按打开按扭。
3.打开下面的文件类型的下拉菜单,有如:位图文件(*BMP),图形转换格式(GIF)‘JPEG文件转换格式(JPG,JPEG),所有图片文件,所有文件
3.你按文件类型里的JPEG文件,打开他
4.最关键的一步了,你打开了JPEG图片以后,在按文件下拉菜单,按保存按扭,这时你一定会说有什么区别,有什么用啊,不要急,你在按下面的保存类型,你可以看见单色位图,16色位图,256位图,24位图,文件转换格式和JPEG文件转换格式。
5.最后,你只要按你要保存的是16位图啊,还是256,或者是16位图,在按保存就好了
这样原来的JPEG就转换成了BMP,同样BMP也可以这样转换成JPEG,很简单吧。连软件也不要用了
参考技术A 我有一个逆向打开的程序:
Private Sub Command1_Click()
On Error GoTo err1 '错误捕获

Dim Fname As String '。。。。。。打开一个文件
CommonDialog1.Action = 1
Fname = CommonDialog1.FileName
Open Fname For Binary As #1

Picture2.Cls

Dim bmpGeshi1 As Byte '。。。。。。判断是不是BMP图片
Dim bmpGeshi2 As Byte
Get #1, 1, bmpGeshi1
Get #1, 2, bmpGeshi2
If bmpGeshi1 = 66 And bmpGeshi2 = 77 Then
Picture2.Print "BMP"
Else
Picture2.Print "格式错误"
Close #1
Exit Sub
End If

Dim geShi As Byte '。。。。。。判断BMP图片位数
Get #1, &H1C + 1, geShi
If geShi = 24 Then
Picture2.Print "24位"
Else
Picture2.Print "文件是"; geShi; "位格式不支持,请打开24位格式的BMP"
Close #1
Exit Sub
End If

Dim Kuan As Long '。。。。。找到图片高、宽
Dim Gao As Long
Get #1, &H12 + 1, Kuan
Get #1, &H16 + 1, Gao
Picture2.Print "图像大小:宽"; Kuan; "高"; Gao
Picture1.Picture = LoadPicture() '清空图片框
Dim pos As Long '文件中点的指针
Dim Cha As Integer '行末尾填充的字节数
Cha = Abs((Kuan * 3) Mod 4 - 4) Mod 4
Picture2.Print "行末尾多余的字节"; Cha
pos = &H36 + 1
Dim ix2 As Integer '用于描出点的坐标
Dim iy2 As Integer '用于描出点的坐标
Dim yanseRed As Byte '存红色的值
Dim yanseGreen As Byte '存绿色的值
Dim yanseBlue As Byte '存蓝色的值

For iy2 = Gao - 1 To 0 Step -1 'y行 '。。。。。。描点
For ix2 = 0 To Kuan - 1 'x列
Get #1, pos, yanseBlue '得到颜色
Get #1, pos + 1, yanseGreen '得到颜色
Get #1, pos + 2, yanseRed '得到颜色
Picture1.PSet (ix2, iy2), RGB(yanseRed, yanseGreen, yanseBlue)
pos = pos + 3 '开始读下一个像素
Next ix2
pos = pos + Cha '描到了行末尾,则跳过不要的字节
Next iy2

Close #1 '正常时关闭文件
Exit Sub

err1: '错误处理
If Err = 32755 Then Exit Sub '打开文件对话框点"取消"时,发生32755错误错误
Picture2.Print "发生错误"
Close #1 '有错误时关闭文件
Exit Sub
End Sub

Private Sub Form_Load() '。。。。。。初始化
Picture1.ScaleMode = vbPixels '设定坐标为像素点
Picture1.AutoRedraw = False
Picture2.AutoRedraw = True
CommonDialog1.Filter = "文件bmp *.bmp |*.bmp| "
CommonDialog1.InitDir = App.Path
End Sub
参考技术B 文件中的部分数据丢失或出错,所以打不开,仅有预览部分正常,所以有预览图片。这种文件不一定能修复。 参考技术C 这位朋友,你试试看用PHOTOSHOP等软件打开一下,然后保存为JPEG或者GIF格式,看打不打得开,要是还打不开,就要重新装一下ACD之类的看图软件了.我原来也遇到过类似的问题,重装一遍ACDsee一般就可以了. 参考技术D 有缩略图.却无法打开?

文件损坏...用修复工具吧,但前提是原文件是你本地计算机上的,如果上网上下的图,那就没办法了...

自己搜索"EasyRecovery"去修复吧

时间会比较长...

以上是关于高分求解代码解答 (arcgis engine方面)的主要内容,如果未能解决你的问题,请参考以下文章

C# arcgis engine 怎么对属性表,添加一行数据,删除一行数据,以及修改一行数据。

ArcGis Engine 10 绘二维地图,求助?

《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

Arcgis Engine矢量裁剪栅格,调用Mask工具相关代码

ArcGIS engine C#开发出现未能加载程序集ESRI.ArcGIS.AxControls

ArcGIS Engine开发鹰眼图的功能(代码优化篇)