SHP文件格式的研究与应用
国土空间用途监管系统的shp文件例子

国土空间用途监管系统的shp文件例子全文共四篇示例,供读者参考第一篇示例:国土空间用途监管系统中的shp文件是一种空间数据格式,用于存储和管理地理信息数据。
shp文件通常包含有关地理要素的空间几何信息,如点、线、面等,以及这些地理要素的属性信息。
国土空间用途监管系统通过shp文件可以对国土空间进行精确的管理和监管,从而有效促进国土资源的合理利用和保护。
在国土空间用途监管系统中,shp文件可以用来存储各种地理要素的空间信息,如土地利用类型、行政区划、地形地貌等。
这些信息可以帮助决策者了解国土空间的利用情况,制定相应的规划和政策。
例如,通过shp文件中的土地利用类型数据,可以分析不同区域的土地利用情况,评估国土资源的利用效率和合理性;通过shp文件中的行政区划数据,可以对国土空间进行划分和管理,实现区域开发和保护的协调发展。
国土空间用途监管系统中的shp文件还可以用来进行空间分析和决策支持。
通过GIS软件可以对shp文件进行空间叠加、缓冲区分析、空间插值等操作,帮助用户分析国土空间的合理利用和发展趋势。
例如,通过shp文件中的点数据和线数据,可以进行网络分析,优化交通路线规划;通过shp文件中的面数据,可以进行空间分布分析,评估城市用地扩展的潜力和限制。
国土空间用途监管系统中的shp文件还可以用来进行数据共享和交换。
由于shp文件是一种通用的地理信息数据格式,可以被多种GIS 软件支持,用户可以方便地将shp文件导入到不同的GIS系统中进行处理和分析。
此外,shp文件还可以转换成其他常用的地理信息数据格式,如GeoJSON、KML等,方便用户在不同平台之间进行数据共享和交换。
总的来说,国土空间用途监管系统中的shp文件是一种非常重要的地理信息数据格式,可以为国土空间的管理与监管提供有效支撑。
通过shp文件,用户可以轻松地存储、管理和分析各种地理要素的空间信息,实现国土资源的合理利用和保护。
希望未来国土空间用途监管系统能够进一步完善,为国土资源的可持续发展做出更大的贡献。
shp文件的坐标系转化

shp文件的坐标系转化标题:从shp文件的坐标系变换谈起导语:坐标系转化是地理信息系统(GIS)中的重要概念,它能帮助我们准确地描述和分析地理空间数据。
本文将以人类的视角,生动地讲述shp文件的坐标系转化的背后故事,让读者更好地理解这一概念。
一、背景介绍:shp文件的坐标系是什么?在GIS中,shp文件是一种常用的地理数据存储格式,它包含了点、线、面等地理要素的几何形状信息。
而坐标系则是用来描述这些地理要素在地球上的位置的系统。
二、坐标系转化的必要性:为何需要进行转化?每个地区、国家甚至不同的地理应用都可能采用不同的坐标系,这给数据的交换和分析带来了困难。
因此,我们需要进行坐标系转化,以便将数据在不同的坐标系之间进行无缝转换。
三、常见的坐标系转化方法:如何实现转化?1. 基于数学模型的转化方法:利用数学模型和算法,将源坐标系的点坐标转换为目标坐标系下的对应点坐标。
这种方法适用于简单的二维坐标系转换。
2. 基于投影变换的转化方法:通过投影变换,将源坐标系的地理坐标转换为目标坐标系下的投影坐标。
这种方法适用于大范围的地理空间数据转换。
四、坐标系转化的实际应用:为何坐标系转化如此重要?1. 地图制图与导航:当我们使用不同的地图服务或导航系统时,坐标系转化能够保证地图的准确性和一致性,方便我们进行位置定位和路径规划。
2. 空间分析与统计:坐标系转化是空间分析和统计的基础,它能够帮助我们进行地理数据的叠加、查询和分析,为决策提供科学依据。
3. 地理信息共享与交换:不同机构和部门之间的地理数据交换需要统一的坐标系,坐标系转化能够实现不同格式的地理数据的共享和交换。
五、坐标系转化的挑战与前景:未来的发展方向是什么?随着地理信息技术的迅猛发展,坐标系转化面临着更多的挑战和需求。
未来,我们需要开发更精确、高效的坐标系转化方法,以应对多样化、复杂化的地理信息需求。
结语:通过对shp文件的坐标系转化的探讨,我们深入了解了坐标系转化的背后故事和意义。
SHP文件格式的研究与应用

第31卷第6期2006年11月测绘科学Sc i ence o f Survey ing and M app i ngV o l 131N o 16N ov 1作者简介:刘锋(1980O ),男,中国测绘科学研究院摄影测量与遥感专业研究生,主要从事RS 和G IS 开发与应用研究。
E O m a i:l li ufeng1980421@1261com 收稿日期:2006O 01O 05基金项目:国土资源部土地资源遥感监测信息获取与处理软件开发(2003AA131010)S HP 文件格式的研究与应用刘锋,张继贤,李海涛(中国测绘科学研究院,北京 100039)【摘 要】在全国第二次土地详查中,土地利用基础图件大部分是以S H P 文件格式存储的,因此在对土地利用基础图件进行更新的过程中,首要的问题是对SHP 文件的访问。
本文以解决这一问题为目标,以S HP 文件中常用的多边形元素为例,对S H P 文件中二进制格式的元素表示方法加以阐述,并以程序实现的方式对资料进行了访问,最终在项目中得到了充分的应用。
【关键词】土地利用基础图件;S H P 文件格式;多边形元素【中图分类号】TP311 【文献标识码】A 【文章编号】1009O 2307(2006)06O 0116O 021 引 言S H P 文件格式是美国ESR I 公司生产的A rcV iew 和A rc G IS 软件的专用资料格式,它将地理空间资料以坐标点串的形式存储起来。
A rcV iew 以其易用性和灵活性受到大量用户的喜爱,占有极高的市场占有率,广泛应用于国土资源、环境、地学等领域中。
现在S H P 文件格式已经成为G IS 界的一种标准格式,几乎所有的G IS 软件都支持对它的转换甚至支持对其直接进行读写操作,大量的工程项目也往往把SHP 文件格式作为首选格式,因而每个从事研究G IS 人员都应该详细的了解和掌握SHP 文件格式。
2 SHP 文件格式说明通常开发人员可以采用自带的开发软件包对资料的采集、入库、查询以及分析进行编程。
海洋等深线shp格式

海洋等深线shp格式海洋等深线shp格式是一种常用的地理信息系统(GIS)数据格式,用于描述海洋中不同深度的等值线。
这种格式适用于海洋测绘、海洋科学研究以及海洋资源开发等领域。
本文将介绍海洋等深线shp格式的基本特点、数据结构以及使用方法,以便读者更好地理解和应用这种格式。
一、基本特点海洋等深线shp格式是GIS常用的矢量数据格式之一,具有以下基本特点:1. 精确性:海洋等深线shp文件中包含了经纬度坐标、深度值等信息,能够准确地描述海洋中的等深线分布情况。
2. 可视化:使用GIS软件可以将海洋等深线shp文件转化为图像,直观地展示海洋中的等深线分布。
3. 数据交换性强:海洋等深线shp文件采用开放标准的格式,可以方便地与其他GIS数据进行交换和共享。
二、数据结构海洋等深线shp文件由多个文件组成,一般包括.shp、.shx、.dbf等文件。
1. .shp文件:存储了等深线的几何形状信息,包括线段的节点坐标、拓扑结构等。
2. .shx文件:存储了.shp文件的索引信息,用于提高数据的查询效率。
3. .dbf文件:存储了等深线的属性信息,如深度值、等级等。
三、使用方法使用海洋等深线shp文件可以进行多种操作和应用,包括数据查询、地理分析等。
下面以一个实际应用案例来介绍使用方法。
假设我们想了解某海域的等深线分布情况,首先需要获取对应的海洋等深线shp文件,然后可以使用GIS软件进行如下操作:1. 打开文件:在GIS软件中选择打开.shp文件,该文件将显示等深线的几何形状。
2. 属性查询:利用GIS软件提供的属性查询功能,可以通过.dbf文件中的深度值等属性信息,筛选出特定深度范围内的等深线。
3. 空间查询:通过GIS软件提供的空间查询功能,可以选择特定地理区域内的等深线。
4. 可视化展示:将等深线shp文件转化为图像,可以用颜色渐变的方式展示不同深度的等深线,帮助用户更直观地理解和分析海洋中的等深线分布。
shp文件讲解

shp⽂件讲解shp⽂件格式内部结构ESRI shp⽂件格式内部结构(2008-09-01 15:18:24)标签:杂谈Shape⽂件是ArcGIS的基础⽂件类型,存储了⾮拓扑⼏何和属性信息。
Shape⽂件⽀持点、线、区域的⼏何特征,由于不需要处理拓扑数据结构⽂件头,在编辑等⽅⾯具有更快的处理速度。
本⽂通过对ESR I公司发布的原版资料ESRI Shapefile Technical Descrip tion的翻译解读,剖析Shape⽂件的结构,利⽤VB写出直接⽣成Shape⽂件的代码。
2 Shape⽂件结构2. 1 Shape⽂件的⽂件构成Shape⽂件由3 个⽂件构成: 主⽂件、索引⽂件、数据⽂件。
其中主⽂件的后缀必须是. shp;索引⽂件的后缀必须是. shx;数据⽂件的后缀必须是. dbf,这3个⽂件共同组成Shape⽂件。
各⽂件中存储的数据相互联系⼜各有区别。
主⽂件中是Shape的位置信息;索引⽂件是对主⽂件的索引,指出主⽂件中记录在⽂件中的位置信息;数据⽂件中包括Shape的具体位置和属性信息。
2. 2 . shp⽂件的结构. shp⽂件由⽂件头和⽂件记录构成(图1) ,其中⽂件⼤部分结构见表1。
⽂件头记录头记录内容记录头记录内容记录头记录内容记录头记录内容······记录头记录内容图1 . shp⽂件的结构其中Shape类型是ArcGIS定义的图形类型,具体可以参考Shapefile Technical Descrip tion。
每个记录由记录头、记录内容两部分组成。
记录头部分由两部分组成: 0~3字节是长整型的记录数, 4~7字节是记录内容的长度。
⽂件头中的⽂件长度与记录头中的记录长度均以字( 2 字节)为单位。
记录内容对不同的Shape类型定义不⼀样,但原理是相同的。
因篇幅所限,这⾥以记录点(point)类型为例进⾏说明。
七大洲边界shp格式

七大洲边界shp格式七大洲边界的shp格式,是一种用来储存地理边界数据的文件格式。
它采用了矢量数据的方式,通过点、线和多边形来描述地理空间信息。
这种格式不仅可以精确地表示七大洲的边界线,还可以包含其他与边界相关的地理属性,例如地形、气候等信息,为研究者提供了丰富的资源。
七大洲的边界线数据,是地理研究和教学中的重要基础。
通过shp 格式的文件,我们可以对世界各大洲的边界进行准确的测量、分析和比较。
这为地理学家、政策制定者、学生等提供了一个更直观的视觉表达方式,有助于更好地理解地球的地理结构和分布。
使用shp格式的七大洲边界数据,对于跨国合作、政府决策、城市规划、环境保护等领域都具有指导意义。
其中最直接的应用就是在地图制作中,通过将shp格式的数据导入到地图绘制软件中,我们可以方便地绘制出符合实际情况的世界地图,并在上面添加更多的地理信息,如国家、城市、河流等。
这为了解各大洲的地理特征、发展状况和环境问题提供了基础。
除了地图绘制外,shp格式的七大洲边界数据还可以被用于计算、模拟和分析。
通过对边界数据进行空间统计分析,我们可以了解各大洲之间的空间关系、人口分布、贸易往来等情况。
这些分析结果有助于深入研究国际合作、区域发展、战略规划等问题,为决策者提供更准确的参考依据。
在使用七大洲边界shp格式数据时,我们需要注意数据的来源和准确性。
由于地理边界的变化和争议等原因,边界数据可能存在一定的不确定性。
因此,在使用数据时,我们应当结合其他可靠的来源进行验证,并谨慎分析和解读。
此外,我们还应当注意更新数据,保持对新的边界变化和研究成果的关注,以便获取更准确的信息。
总之,七大洲边界shp格式给予我们揭示地球地理信息的全新途径。
通过这种格式储存的边界数据,我们可以更好地了解世界的地理特征和空间关系,为各个领域的决策和研究提供更精确的参考。
然而,我们在使用数据时要注意准确性和更新性,以确保研究结果的可靠性和可持续性。
SHP文件格式分析

SHP⽂件格式分析研究MO中很重要的⼀部分就是SHP格式分析,对于底层开始时很重要的。
根据韩鹏⽼师的书,特将⾃⼰的读取内容后分析如下。
SHP结构说明⽂件头记录头记录内容1)⽂件头的结构⽂件头是长度固定的(100BYTE)共9个int型和7个double型。
起始位置名称数值类型位序0File Code9994int big4Unused0int big8Unused0int big12Unused0int big16Unused0int big20Unused0int big24⽂件长度⽂件的实际长度int big28版本号1000int Little32⼏何类型⼏何类型int Little36Xmin最⼩值double Little44Ymin最⼩值double Little52Xmax最⼩值double Little60Ymax最⼩值double Little68×Zmin最⼩值double Little76×Zmax最⼩值double Littledouble Little84×Mmin最⼩的Measure值double Little92×Mmax最⼤的Measure值2)实体信息实体信息包括:记录头和记录内容记录头包括:记录号和坐标记录长度位序记录类型备注记录号bigint从1开始坐标长度bigint记录内容:因不同的⼏何要素类型不同⽽不同,主要有:点、线、⾯。
现在我们介绍线状。
记录项数值数据类型长度个数位序int41Little⼏何类型3(表⽰线状⽬标)坐标范围double324Littleint41Little⼦线段个数NumPartsint41Little坐标个数NumPointsParts数组int4*NumParts NumParts Little00000594 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000595 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x27 00000596 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xd8 00000597 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa 00000598 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf5 File Code 9994 正序读取00000599 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000600 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000601 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000602 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000603 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000604 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000605 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000606 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Unused1 000000607 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000608 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000609 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000610 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000611 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000612 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000613 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000614 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Unused2 000000615 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000616 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000617 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000618 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000619 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000620 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000621 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000622 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Unused3 000000623 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000624 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000625 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000626 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000627 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000628 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000629 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000630 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Unused4 000000631 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000632 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000633 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000634 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000635 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000636 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000637 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000638 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Unused5 000000639 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000640 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000641 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000642 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000643 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x2 00000644 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfd 00000645 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1a 00000646 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe5 ⽂件的实际长度 538 正序读取00000647 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xe8版本号 1000 实际读取的时候为倒序读取(以下均为倒序读取)00000655 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3 00000656 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfc 00000657 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000658 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000659 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000660 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000661 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000662 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff ⼏何类型 3 代表线倒序读取00000663 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xed 00000664 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x12 00000665 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x80 00000666 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x7f 00000667 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xeb 00000668 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x14 00000669 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x8a 00000670 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x75 00000671 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x19 00000672 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe6 00000673 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb8 00000674 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x47 00000675 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59 00000676 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6 00000677 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000678 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf Xmin00000679 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x95 00000680 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x6a 00000681 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x28 00000682 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xd7 00000683 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x7b 00000684 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x84 00000685 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4b 00000686 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xb4 00000687 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x39 00000688 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xc6 00000689 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x8f 00000690 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x70 00000691 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000692 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf 00000693 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000694 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf Ymin00000695 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1e 00000696 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe1 00000697 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xc3 00000698 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x3c 00000699 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x63 00000700 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x9c 00000701 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3f 00000702 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xc0 00000703 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x8b 00000704 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x74 00000705 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xbf 00000706 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x40 00000707 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59 00000708 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6 00000709 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4000000717 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1f 00000718 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe0 00000719 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x11 00000720 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xee 00000721 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa3 00000722 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5c 00000723 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000724 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf 00000725 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000726 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf Ymax00000727 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000728 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000729 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000730 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000731 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000732 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000733 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000734 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000735 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000736 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000737 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000738 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000739 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000740 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000741 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000742 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Zmin00000743 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000744 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000745 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000746 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000747 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000748 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000749 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000750 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000751 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000752 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000753 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000754 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000755 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000756 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000757 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000758 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Zmax00000759 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000760 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000761 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000762 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000763 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000764 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000765 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000766 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000767 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000768 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000769 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000770 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000771 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000772 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff00000780 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000781 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000782 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000783 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000784 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000785 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000786 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000787 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000788 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000789 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000790 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff Mmax00000791 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000792 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000793 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000794 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000795 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000796 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000797 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1 00000798 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfe RecordNumber 1 正序读00000799 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000800 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000801 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000802 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000803 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000804 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000805 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x28 00000806 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xd7 //ContentLength 40 正序读00000807 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3 00000808 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfc 00000809 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000810 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000811 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000812 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000813 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000814 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff //⼏何类型 3 倒序读00000815 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x84 00000816 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x7b 00000817 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf0 00000818 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf 00000819 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x68 00000820 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x97 00000821 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xe3 00000822 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x1c 00000823 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x88 00000824 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x77 00000825 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb8 00000826 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x47 00000827 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59 00000828 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6 00000829 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000830 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //BOX 100000831 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x76 00000832 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x89 00000833 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa900000842 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5f 00000843 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000844 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf 00000845 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000846 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //BOX 200000847 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x7c 00000848 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x83 00000849 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x44 00000850 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbb 00000851 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4c 00000852 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xb3 00000853 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x89 00000854 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x76 00000855 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x24 00000856 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xdb 00000857 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb9 00000858 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x46 00000859 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59 00000860 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6 00000861 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000862 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //BOX 300000863 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x9c 00000864 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x63 00000865 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x6b 00000866 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x94 00000867 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x98 00000868 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x67 00000869 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa1 00000870 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5e 00000871 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf1 00000872 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe 00000873 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa2 00000874 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5d 00000875 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000876 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf 00000877 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000878 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //BOX 400000879 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1 00000880 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfe 00000881 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000882 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000883 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000884 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000885 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000886 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff//NumParts 1 倒序读00000887 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x2 00000888 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfd 00000889 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000890 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000891 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000892 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff 00000893 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000894 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff //NumPoints 2 倒序读00000895 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0 00000896 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff//Parts数组全000000903 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x7c 00000904 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x83 00000905 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x44 00000906 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbb 00000907 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4c 00000908 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xb3 00000909 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x89 00000910 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x76 00000911 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x24 00000912 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xdb 00000913 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb9 00000914 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x46 00000915 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59 00000916 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6 00000917 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000918 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //X00000919 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x9c 00000920 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x63 00000921 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x6b 00000922 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x94 00000923 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x98 00000924 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x67 00000925 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa1 00000926 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5e 00000927 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf1 00000928 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe 00000929 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa2 00000930 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5d 00000931 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000932 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf 00000933 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000934 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //Y00000935 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x84 00000936 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x7b 00000937 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf0 00000938 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf 00000939 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x68 00000940 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x97 00000941 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xe3 00000942 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x1c 00000943 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x88 00000944 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x77 00000945 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb8 00000946 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x47 00000947 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59 00000948 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6 00000949 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000950 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //X00000951 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x76 00000952 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x89 00000953 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa9 00000954 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x56 00000955 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x11 00000956 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xee 00000957 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xfa00000964 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf 00000965 15:59:44 ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40 00000966 15:59:44 (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf //Y⾄此所有的点数据读取完毕。
shp文件格式说明

shp文件格式说明SHAPE 文件格式SDE,ARC/INFO,PC ARC/INFO,Data Automation Kit(DAK)和ArcCAD软件提供了shape 到coverage的数据转换器,ARC/INFO同样提供了coverage到shape的转换器。
为了和其他数据格式交换,shape文件的格式在本报告中被出版。
其他数据流,比如来自全球定位系统(GPS)接收机的数据能同样被存为shape文件或X,Y事件表。
Shape文件技术描述计算机程序能通过使用本节的技术描述来产生,读,写shape 文件。
一个ESRI的shape文件包括一个主文件,一个索引文件,和一个dBASE表。
主文件是一个直接存取,变量记录长度文件,其中每个记录描述一个有它自己的vertices列表的shape。
在索引文件中,每个记录包含对应主文件记录离主文件头开始的偏移,dBASE表包含一feature一个记录的feature的特征。
几何和属性间的一一对应关系是基于记录数目的。
在dBASE文件中的属性记录必须和主文件中的记录是相同顺序的。
命名习惯所有文件名都符合8.3命名习惯。
主文件,索引文件和dBASE文件有相同的前缀。
前缀必须是由字符或数字(a-Z,0-9)开始,后跟0到7个字符(a-Z,0-9,_,)主文件的后缀是.shp,索引文件的后缀是.shx,dBASE表的后缀是.dbf。
文件名中的所有字母在对文件名敏感的操作系统中都是小写的。
例子主文件:counties.shp 索引文件:counties.shx dBASE表: ounties.dbf数字类型一个shape文件存储整数和双精度数,本文档的余数指以下类型:整数:有符号32位整数(4字节)双精度:有符号64位IEEE双精度浮点数(8字节)浮点数必须是数字的值。
负无穷,正无穷和非数字(NaN)值在shape文件不被允许。
然而shape文件支持'没有数据'的值这样的概念,但是目前只用于衡量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第31卷第6期2006年11月测绘科学Sc i ence o f Survey ing and M app i ngV o l 131N o 16N ov 1作者简介:刘锋(1980O ),男,中国测绘科学研究院摄影测量与遥感专业研究生,主要从事RS 和G IS 开发与应用研究。
E O m a i:l li ufeng1980421@1261com 收稿日期:2006O 01O 05基金项目:国土资源部土地资源遥感监测信息获取与处理软件开发(2003AA131010)S HP 文件格式的研究与应用刘锋,张继贤,李海涛(中国测绘科学研究院,北京 100039)【摘 要】在全国第二次土地详查中,土地利用基础图件大部分是以S H P 文件格式存储的,因此在对土地利用基础图件进行更新的过程中,首要的问题是对SHP 文件的访问。
本文以解决这一问题为目标,以S HP 文件中常用的多边形元素为例,对S H P 文件中二进制格式的元素表示方法加以阐述,并以程序实现的方式对资料进行了访问,最终在项目中得到了充分的应用。
【关键词】土地利用基础图件;S H P 文件格式;多边形元素【中图分类号】TP311 【文献标识码】A 【文章编号】1009O 2307(2006)06O 0116O 021 引 言S H P 文件格式是美国ESR I 公司生产的A rcV iew 和A rc G IS 软件的专用资料格式,它将地理空间资料以坐标点串的形式存储起来。
A rcV iew 以其易用性和灵活性受到大量用户的喜爱,占有极高的市场占有率,广泛应用于国土资源、环境、地学等领域中。
现在S H P 文件格式已经成为G IS 界的一种标准格式,几乎所有的G IS 软件都支持对它的转换甚至支持对其直接进行读写操作,大量的工程项目也往往把SHP 文件格式作为首选格式,因而每个从事研究G IS 人员都应该详细的了解和掌握SHP 文件格式。
2 SHP 文件格式说明通常开发人员可以采用自带的开发软件包对资料的采集、入库、查询以及分析进行编程。
但是他们开发的地理信息软件包所处理的文件格式通常与S HP 格式不兼容。
但是如果清楚了S H P 文件的编码方式就可以利用常用的开发工具(如V C ,V B)等将自定义文件格式转换为S H P 文件格式。
不同于其它各种转换文件格式如M IF 、M I D 、E00等,S H P 文件格式采用编码效率较高的二进制格式。
点的坐标采用双精度保存,保证了点的精确度。
S HP 文件系统由三个文件组成:S H P 文件、S HX 文件和DBF 文件。
S H P 文件中存储每个地物的空间资料,S HX 文件主要存储了S HP 文件中每个地物元素的起始位置和所占字节的大小,D BF 文件存储每个地物元素的属性资料。
相对于向量图形中的每个元素,S H P 文件中都有相应的一个段落与之对应,所以其资料格式有一定的复杂性。
每个S H P 文件都包含一百个字节的文件头信息,文件头记录了文件中常用的基本信息,信息如表1所示:表1 主文件头的描述位置域值类型字节次序Byte 0文件代码9994整型B i g Byte 4未使用0整型B i g Byte 8未使用0整型B i g B yte 12未使用0整型B i g B yte 16未使用0整型B i g B yte 20未使用0整型B i g B yte 24文件长度文件长度整型B i g B yte 28版本1000整型Littl e B yte 32形状类型形状类型整型Littl e B yte 36边界盒X 坐标最小值双精度Littl e B yte 44边界盒Y 坐标最小值双精度Littl e B yte 52边界盒X 坐标最大值双精度Littl e B yte 60边界盒Y 坐标最大值双精度Littl e B yte 68边界盒Z 坐标最小值双精度Littl e B yte 76边界盒Z 坐标最大值双精度Littl e B yte 84边界盒M 最小值双精度Littl e B yte 92边界盒M 最大值双精度Littl e其中,0-3字节表示文件代码,固定值为9994,字节排列方式为倒序排列;3-19字节为空,固定值为0,字节排列方式为倒序排列;19-23字节为文件的大小,取值为文件的长度,字节排列方式为倒序排列(并以十六b it 存储);24-27字节为文件的版本,固定值为1000,字节排列方式为正序排列;28-31字节为地物的形状类型,取值如表二所示(x,y 为二维坐标,m 为度量坐标,z 为高程坐标),字节排列方式为正序排列:表2 形状类型值形状类型描述0NULL Shap e空地物类型1Poi n t 单点类型(包含x ,y 坐标)3Pol yL i ne 线类型(每个点包括x ,y 坐标)5Polygon 多边形类型(每个点包括x ,y 坐标)8M ulti Po i nt 多点类型(每个点包含x ,y 坐标)11Poi n t Z 单点类型(包含x ,y ,m,z 坐标)13Po l yL i neZ 线类型(每个点包含x ,y ,m,z 坐标)15Pol ygonZ 多边形类型(每个点包括x ,y ,m,z 坐标)18M u lti P oi n t Z 多点类型(每个点包括x ,y ,m,z 坐标)21Poi n M t单点类型(包括x ,y ,m 坐标)23Pol yL i ne M 线类型(每个点包括x ,y ,m 坐标)25Polygon M 多边形类型(每个点包括x ,y ,m 坐标)28M ulti P o i nM t多点对象(每个点包括x ,y ,m 坐标)32-100字节为四个坐标的范围,每个坐标占八位字节位。
在一个G IS 系统中,大部分工作是处理多边形地物元素,所以我们以多边形(Shape 文件中对应的Po l ygon 类型)为例,来探讨S H P 文件的编码方式。
每个Po l yg on 都有八比特的头信息,记录该P o lygon 的唯一标识和该P o lygon 所占有的字节数。
如表3所示:表3 多边形记录头信息位置域值类型字节次序0记录数Record N u m ber 整型B i g 4内容长度C onten t Lengt h整型B i g注意:内容长度是以16B it 存储。
在编程实现的时候其真实大小是该值的两倍。
头信息后存储为该多边形的坐标信息,存储的结构如表4所示:表4 多边形记录坐标信息位置域值类型数量字节次序B yt e 0形状类型3整型1Littl e B yt e 4边界盒Box 整型4Littl e B yt e 36部分数Nu m Parts 整型1Littl e B yt e 40点数NumPoi n ts 整型1Littl e B yt e 44部分串Parts 整型部分数Littl e Byte X点串Po i nts整型点数Littl e表4中形状类型字段代表地物的类型,因为该地物为多边形,所以为3,在表2中有介绍,该类型占四个字节;边界盒字段代表该多边形的X 、Y 坐标的最大和最小值,定义此字段的目的在于将该多边形所跨越的范围明确的固定下来,为空间查询提供依据;部分数字段代表该多边形包括的环的个数,在G IS 中,一个多边形包括多个环是很常见的;点数字段代表所有环所包含的顶点的个数;点串字段代表所有顶点的坐标序列,顶点的个数为N u mP o ints 。
图1为一个多边形的例子,这副图显示的是一个带洞的多边形地物元素,共有八个顶点。
在这个例子中,存在两个部分,共有十个顶点,顶点存储的顺序如图2所示。
3 应用说明应项目的需要,根据以上对S HP 文件的介绍,笔者利用V isual C ++开发环境,组织底层函数访问包对S H P 文件系统进行访问。
函数包的名称为S HPL i b ,该包是以面向对象的思想实现的,将S H P 文件中的点,线,面元素以类的形式表示出来,如面状元素在该库中表示为S H PP o l ygon 类,该类的主要属性包括面元素的I D,点串的坐标,范围等属性1整体的组织结构如图4所示:根据上面建立的函数库,笔者建立了一个应用程序模块L and XP ress ,该模块是针对土地利用现状图更新项目所做,该模块在向量方面包括以下功能11)向量资料的显示:对S H P 文件体系的空间资料和图3 S H PL i b 的组织结构属性信息进行了各种显示操作,包括放大、缩小、中心放大、中心缩小、漫游等。
2)向量空间资料的编辑:利用编辑工具可以对各种向量元素进行位置和顶点的移动和删除,利用合并和相交工具对面状地物元素进行合并和相交,在属性资料编辑窗口中可以对属性资料进行编辑,编辑完后可以对编辑后的空间和属性资料进行存储。
用户可以对向量资料进行颜色和填充模式的设置。
3)向量属性资料的编辑:在属性编辑窗口中利用属性资料编辑工具对属性资料进行编辑,包括,属性资料的删除,字段的添加和删除。
4)建立知识库:在栅格资料和向量资料迭加的情况下,在数据采集的模式下,对选中的和新添加的多边形元素进行各种常用属性信息的统计,包括各波段光谱值、光谱曲线、各波段极值特征、均值、方差、协方差、不变矩等,并将各种属性值入库。
5)文件的切割:以某个字段为参考字段,将该字段中值相同的元素重新放到一个新的文件中,为资料的后期更新做好准备。
6)与主流绘图软件、G IS 软件留有接口:可以直接使用主流的G IS 软件如A rc V ie w 、A rcG IS 等平台开发的成果,本模块编辑生成的资料可以直接在A rc V ie w 和A rcG IS 平台使用。
4 结论通过前面的描述,大家应该对多边形元素在SHP 文件中的具体表现形式以及如何以程序实现都有了一定的了解。
其它的向量图形元素如:点、线、路径等与多边形的表示方法基本类似,由于篇幅所限,笔者不能将其一一列举。
参考文献[1] 毛卫华,应荷香1DGN 资料格式转换的研究于实验[J].测绘通报,2001,(10):37O 391[2] 喻华1DGN 文件格式的探讨[J].测绘通报,2004,(10):52O 541[3] 张继贤1论土地利用与覆盖变化遥感信息提取技术框架[J].测绘科学,2003,(3):14O 161[4] 张继贤13S 技术支持得土地利用现状图更新[J].中国土地科学, 2001,16(1):20O 241[5] 张丽,张继贤1土地利用图件遥感快速更新方法的探索[J].测绘科学,2002,27(3):34O 361[6] 曾钰1土地利用基础图件更新软件系统的设计与开发[J]测绘科学,2005,(6):75O 771[7] 张继贤1单一时相遥感资料土地利用与覆盖变化自动检测方法[J ].测绘科学,2005,(4):295O 2991117第6期 刘 锋等 S HP 文件格式的研究与应用The App li cation of PPG IS in urban p l ann ing dec isi on Abstrac t:On the basis o f t he i n troduction o f PPG IS theory, this paper presen ts a fra m ewo rk o f PPG IS based on urban plann i ng dec i sion system firstly1T hen it ana l yses the o rganization f o r m of dis-tr i buted geo O database based on m etadata1F ina lly,it puts f o r w ard a conflict coordi na tion mechan i s m of publi c parti c i pati on,and con-structs a suitability ana lysism odel f o r PPG IS1K ey word s:PPG IS;distr i buted database;urban p lann i ng de-cisi on;con fli c t coo rd i nati onL I U L i n①②,TANG X i n O m i ng②,L I W an O wu③,QU G uo O q i ng①,ZHAO Yu O m e i④(①Coll ege o fG eo O i nfor m ation Science and Eng i neering,Shandong U n i versity o f Sc ience and T echno logy,Q ing-dao266510,China;②Ch i nese A cademy o f Survey ing and M ap-p i ng,Be iji ng100039,Chi na;③Co ll ege o f Info r m ati on Sc i ence and T echno l ogy,Shandong U n i versity o f Sc i ence and T echno l ogy, Q i ngdao266510,Ch i na;④Co lleg e of G eography and R esource M anagem ent,Ludong U niversity,Y anta i264025,Ch i na)S tudy on quality con trol of spatial da ta in th e Poyang lake area Ab stract:T he area o f P oyang L ake i s one of t he nine com-m erc ia l food production ba ses i n Ch i na1It's also the p l ace whe re fl oods o ften o ccur1In o rder to reduce the i m pa ct and da m ag e of fl oods on the li v es and properties o f people liv i ng i n t he Poy ang L ake A rea,the authors have deve loped a G eog raph ical Info r m a-ti on Sy ste m for preventing and contro lli ng fl oods i n the Poy ang L ake A rea w ith the strong assist of t he Sc i ence and T echno l og y O-f fice and t he W ate r Conserv ancy O ffi ce i n Jiangx i prov i nce1T he system uses v arious techn i que s to obta in,tran s m it and process spatia l da ta1T hese te chn i ques have produce a l a rg e quantity of m u lti source spatia l data,wh ich prov i des abundant and thorough info r m ation suppo rt for the fa st and accurate dec isi on on prev en-ti ng and contro lli ng fl oods,but,a t the sam e ti m e,needs a h i ghe r request to contro l the qua lity o f spa ti a l data1A ccord i ng to the oc-curr i ng sequence o f qua lity p rob l em s o f spa ti a l da ta,the authors classify these p rob l em s,analyse t he ir rea sons and propose a con-tro lm e thod1Th is pape r depicts and discusses the w ho l e process of the study,a t five stages of obta in i ng,storage,pro cess i ng,trans-i ti on and app lica ti on o f spatia l da ta1K ey word s:spati a l data;qua lity contro;l m etadata;G IS;Poy-ang L ake A reaL I U X iao O sheng①②,WU W ei O bo①(①Schoo l o f Env ironmenta l and A rchitectural Eng ineer i ng,JiangX i U niversity of Science and T echno l ogy,G anzhou341000,Ch i na;②C i v il Eng i neeri ng Instit u-te,T ong jiU n i versity,Shangha i200092,Ch i na)R esearch and app lication of S H P file format i n land over/u se m ap updati ngAb stract:In t he second l and O use search,mo st o f l and O use basic m ap is saved i n S H P file for m a t1So i n t he process of upda ti ng land O use basi c m ap,t he first proble m shou l d be so lved is to read and w rite o f S HP file f o r m at1In orde r to so l ve this prob le m,w e i n-terpret binary syste m i n t he S H P file for m a t parti cular and m aki ng the po l ygon e le m en t as exa m ple1Then,w e read and w rite the S HP file by progra mm i ng and app l y it i n pro ject su ffi c iency1K ey word s:land O use bas i c map;S HP file fo r ma t;po lygon e-l em entL I U Feng,ZHANG J i O x i an,L I H a i O tao(Chinese A cademy of Survey i ng andM app i ng,Beiji ng,100039)Prac tice of disaster manage m en t syste m based on G IS and R S Abstrac t:Chi na is a country w here t here have been frequent nature d i saste rs and have produced heavy casua lti es and econom i ca l losses every year1It has been an e ffective m eans t o dea lw ith d isas-ters by constructi ng disaster m anage m ent syste m,w hich has also brought about some good resu lts i n fact1In fact,disaster m anage-m ent is a l arge and com plicated run syste m wh i ch invo l ves many as-pects o f the m a tter1Based on G IS and R S,t h i s paper proposes som e pr i nciples and m eans f o r d i saste r m anag e m ent syste m1K ey word s:G IS;RS;disaster m anagementL I B i n,L I U Ji O pi ng,S H I L i O hong(Chi nese A cade m y o f Sur-vey i ng and M appi ng,Be iji ng100039,Chi na)Study on agen t O based techn i qu e for distri bu ted virtual G IS Abstract:O n t he basis o f trad itiona l m ulti O d i m ensi onal G IS techniques,ne w distr i buted V irtual G IS has been deve l oped by co m-b i n i ng v irtual rea lity and d i str i bu ted computati on techniques1W hen d istri buted V irt ua l G IS prope ls the appli cation of v irt ua l rea lity and G IS,it a lso bri ngs for w ard new prob le m s1In th i s paper,agent tech-no l ogy is app lied i nto the d istri buted V irtua l G IS,espec iall y d i scus-si ng the pr i nc i ples,design and arch itecture of agent O based d istri bu-ted v irtua l g eograph i c i nfor m a tion sy stem fro m the aspect o f i nte ll-i gent com putation and d i str i buted processi ng1T hen A g l e ts Soft w are Deve l op m ent K it from IB M is used to confir m the h i gh w ork i ng e ff-i ciency of agent O based distri buted V irtua l G IS by compar i ng w ith the traditi onal d istri buted system s1A t last,t h is paper su mm arizes the pro m isi ng app licati on of ag ent i n the distributed V irt ua l G IS,and m akes a prospect f o r it1K ey words:A gent;d istri buted;v irtua lG IS;ADVG IS;A g lets L I Q ian,L I M an O chun,HUA Q iang(D epa rt m en t of U rban and R esources Sciences,N an jing U niversity,N anji ng210093,Ch i na) Research and deve lop m ent of pub li c query syste m based on M O Abstract:B ased on ob ject O o riented techno logy o fG IS,this pa-per introduces character istic and adv antage o f second deve l op m en t syste m usi ng ComG IS andM ap O bjects1Comb i n i ng w it h the develop-m en t o f city G IS Publi c Q uery Syste m,t h is pape r e l abo ra tes the m ethod o f developi ng G IS appli cati on syste m using advanced prog ram langue C#and MO1In addition to t he functi on o f co mmon manage-m en t,t h is syste m has proper f unc ti on of G IS i n spa tia l ana l ysis and que ry1By the sa m e m ethod and techno logy,the si m ilar syste m can be estab lished,w hich has prac ti ca l sign ifi cance f o r enlarg i ng appl-i ca ti on scope and fie l d of G IS1K ey word s:G IS;M ap O bjects;ComG IS;public que ry sy stem KUANG Da i O zh i(R esources and Env iron m ent Science Q uanZhou N o r m al Co ll ege,Q uanzhou362000,Ch i na)W ave lets m ethod and its application to regressi on for monito-ring dataAb stract:A defor m ati on pred i ction mode l based on w ave l e t transfor m and regressi on esti m ati on is propo sed i n this paper1A s the w ave let coefficient is affected by thresho l d dur i ng wavelet decompos-i ti on,that is,no ise is restra i ned,the model is closed to the defor m a-ti on ru le and predicti on ism ore ex act1T he results show t hat the mode l i s effecti ve and suited to the pred i c tion o f defor m ati on m on itoring1K ey word s:pred icti on;wave let;regress i on;thresho l dJIANG T ing O chen①,ZHANG Q i ng②,JI AO M i ng O lian①, W ANG Ji O g ang①,W ANG X i u O pi ng①(①D ept1o f Space Info r ma-ti on Science,H ua H i a i Instit ute o f T echno logy,L ianyungang 222001,Ch i na;②Institute o f G eo O eng i neering and Survey i ng, Chang a'n U n i v ers it y,X ia'n710054,Ch i na)A parallel i m age m atch i ng al gor ithm runn i ng on clusterAbstract:It is t he key issue i n remo te sensing field to trans-for m m assive data i n t o i nfor m ation i n short ti m e1P arall e l i m age pro-cessi ng on h i gh perfo r m ance compu ti ng is one of t he key technolog i es to so lve th i s prob l em qu ick l y1T he pe rfor m ance o f para llel progra m i s close l y re l a ted to computer a rchitecture,besides CPU,i nc l udi ng sys-te m fra m e w ork,i nstructi on structure and access speed of storage u-n it1G ene ra lly there are severa l w ays to i m prove t he perfo r mance o f parallel progra m,such as coarse grain pa ra lle lis m,instruc ti on l eve l and m e m ory opti m izi ng1In this paper,a para llel i m ag e m atchi ng a-l go rith m on C l uste r is stud ied1Based on th i s a l gor it hm,t he i m ag e processi ng speed can be i m proved w ith the help of coarse g ra i n para-l le lis m,i nstruction leve l and m e m ory opti m izi ng1K ey word s:i m ag e m atch i ng;coarse g ra i n pa ra lle lis m;instruc-ti on l eve l opti m izi ng;memo ry opti m izi ng;c l usterZ HANG Chun O ling①,Q I U Zhen O ge②(①H e N an survey i ng and m apping bureau,Zhengzhou450052,Chi na;②K ey Laboratory o f N a-ti ona l surveyi ng and mappi ng bureau,C AS M,Beiji ng100039,China) A prac ticable m ethod of correcti on for at m os ph er ic refrac ti on i n p rec ise ED M trigono m e tr i c leve li n gAbstract:A t m ospher i c refraction i s the m a i n facto r to a ffect the#8#ABSTRACTS OF THE PRESENT ISSUE。