华南农业大学地信C#综合性试验报告详解Word文档下载推荐.docx
- 文档编号:13329467
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:28
- 大小:182.27KB
华南农业大学地信C#综合性试验报告详解Word文档下载推荐.docx
《华南农业大学地信C#综合性试验报告详解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《华南农业大学地信C#综合性试验报告详解Word文档下载推荐.docx(28页珍藏版)》请在冰豆网上搜索。
Byte12Unused0IntegerBig
Byte16Unused0IntegerBig
Byte20Unused0IntegerBig
Byte24FileLengthFileLengthIntegerBig
Byte28Version1000IntegerLittle
Byte32ShapeTypeShapeTypeIntegerLittle
Byte36BoundingBoxXminDoubleLittle
Byte44BoundingBoxYminDoubleLittle
Byte52BoundingBoxXmaxDoubleLittle
Byte60BoundingBoxYmaxDoubleLittle
Byte68*BoundingBoxZminDoubleLittle
Byte76*BoundingBoxZmaxDoubleLittle
Byte84*BoundingBoxMminDoubleLittle
Byte92*BoundingBoxMmaxDoubleLittle
*Unused,withvalue0.0,ifnotMeasuredorZtype
●注意其中的字节顺序,Big表示大尾(bigendian)型字节顺序,即是高低位字节是反序的,主要适用于Sun®
orMotorola®
平台,而Little表示小尾(littleendian)型字节顺序,高低位字节顺序不变,主要使用在PCorIntel®
平台。
在读取的字节为Big时,需要进行字节顺序交换,才能得出正确的值。
一个把Big顺序转换为Little顺序的函数可以如下:
intBig2LittleEndian(intnum)
{
intreverse;
//返回结果
charbit0,bit1,bit2,bit3;
bit0=(num&
0x000000ff);
bit1=(num&
0x0000ff00)>
>
8;
bit2=(num&
0x00ff0000)>
16;
bit3=(num&
0xff000000)>
24;
reverse=(bit0<
<
24)|(bit1<
16)|(bit2<
8)|(bit3);
returnreverse;
}
●文件头中第32-35位字节为一个整型,其值反映了shapefile的图形对象类型,具体值对应含义如下:
ValueShapeType
0NullShape
1Point
3PolyLine
5Polygon
8MultiPoint
11PointZ
13PolyLineZ
15PolygonZ
18MultiPointZ
21PointM
23PolyLineM
25PolygonM
28MultiPointM
31MultiPatch
●第36-67个字节包含了图幅的范围大小。
(2)、每条记录由记录头和实体内容组成,记录头格式固定,具体组成如下所示:
PositionFieldValueTypeByteOrder
Byte0RecordNumberRecordNumberIntegerBig
Byte4ContentLengthContentLengthIntegerBig
记录头包含8个字节,0-3表示记录的顺序号,4-7表示记录实体自身的大小。
实体的内容根据对象类型不同而变化,需根据具体情况处理。
关于Shapefile的.shx文件的说明
.shx文件由文件头和记录组成,文件头与前述.shp文件一致,但需注意FileLength字段的值不一样。
而每条记录由2个整型组成,具体内容如下:
Byte0OffsetOffsetIntegerBig
其中,offset表示该条记录在.shp文件中的字节位置,而ContentLength说明了记录的大小。
关于.DBF文件的说明
标准的DBF文件,是由头文件和实体信息两部分构成(如图1所示)。
文件头
记录1
记录2
记录3
记录4
……
记录n
图1DBF文件的结构
(1)、文件头部分
文件头部分的长度是不定长的,它主要对DBF文件作了一些总体说明(表),其中最主要的是对这个DBF文件的记录项的信息进行了详细地描述,比如对每个记录项的名称、数据类型、长度等信息都有具体的说明。
在文件中的位置
内容
说明
1个字节
表示当前的版本信息
1-3
3个字节
表示最近的更新日期,按照YYMMDD格式。
4-7
1个32位数
文件中的记录条数。
8-9
1个16位数
文件头中的字节数。
10-11
一条记录中的字节长度。
12-13
2个字节
保留字节,用于以后添加新的说明性信息时使用,这里用0来填写。
14
表示未完成的操作。
15
dBASEIV编密码标记。
16-27
12个字节
保留字节,用于多用户处理时使用。
28
DBF文件的MDX标识。
在创建一个DBF表时,如果使用了MDX格式的索引文件,那么DBF表的表头中的这个字节就自动被设置了一个标志,当你下次试图重新打开这个DBF表的时候,数据引擎会自动识别这个标志,如果此标志为真,则数据引擎将试图打开相应的MDX文件。
29
LanguagedriverID.
30-31
32-X
(n*32)个字节
记录项信息描述数组。
n表示记录项的个数。
这个数组的结构在下表中有详细的解释。
X+1
作为记录项终止标识。
文件(.dbf)的文件头
位置
0-10
11个字节
记录项名称,是ASCII码值。
11
记录项的数据类型,是ASCII码值。
(B、C、D、G、L、M和N,具体的解释见下表)。
12-15
4个字节
16
记录项长度,二进制型。
17
记录项的精度,二进制型。
18-19
20
工作区ID。
21-30
10个字节
31
MDX标识。
如果存在一个MDX格式的索引文件,那么这个记录项为真,否则为空。
记录项信息描述
代码
数据类型
允许输入的数据
B
二进制型
各种字符。
C
字符型
D
日期型
用于区分年、月、日的数字和一个字符,内部存储按照YYYYMMDD格式。
G
(GeneralorOLE)
N
数值型(Numeric)
-.0123456789
L
逻辑型(Logical)
?
YyNnTtFf(?
表示没有初始化)。
M
(Memo)
dbf文件中的数据类型
注意:
记录项的数目在文件头中没有明确给出,但是可以根据第8-9字节的整型知道文件头的大小,减去其他的固定的字节数(32),然后除以32就可以得出其值n。
(2)、实体信息
实体信息部分就是一条记录,每条记录都是由若干个记录项构成,因此只要依次循环读取每条记录就可以了。
2、系统功能需求分析:
根据要求,该程序必须满足最基本的三个功能,一个是能够对shpefile文件进行读取,另外两个分别是对文件属性的浏览还有就是绘制图形文件,所以在程序设计的过程之中,必须要让自己的系统能够满足这三个最基本的要求。
3、打开VS2012,建立新的项目:
4、在FORM窗体上添加1个menustrip控件,1个penul控件,1个textbook控件,3个button控件,1个groupbox控件,并将查看属性的enabled属性初始化为flase。
如图所示:
5、修改线宽的新窗口
6、编写代码,完善程序的功能,部分代码如下
五、实验成果:
1、读取文件测试
2、查看文件属性
3、绘制图形
4、修改线条宽度
5、清除图形
六、实验总结
其实这次实验,说来惭愧。
并不是独立完成的,而是在网上查找了许多资料,最后看到了前辈的代码做出来的。
说实话,核心代码,即读取shp文件的代码,我一个也想不出来,看着白皮书能理解,但就是不懂怎么运用。
因此,我在前辈的源代码基础上一般看一边抄,也只能理解一点而已。
框架倒是自己做的,Form1和修改线条宽度都有讲过,因此照着实验也能做出来。
最难的一部分是如何将三部分代码组装起来,这花费我许多精力。
在参考银行的实验之后,我才尝试着做出来。
总体来说,对这次实验感到十分困难,也许是我个人不喜欢代码的原因,自己比较偏文科,因此比较喜欢简单的数据分析。
相对于GIS的大实验,这个实验对我来说难得多。
但是,自己在打代码的过程中,也收获了一定的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华南 农业大学 C# 综合性 试验报告 详解
![提示](https://static.bdocx.com/images/bang_tan.gif)