《SHP文件的读取》由会员分享,可在线阅读,更多相关《SHP文件的读取(9页珍藏版)》请在金锄头文库上搜索。
1、问题是什么,由SHP文件得得到相应的图,问题进一步简化将shp的二进制文件读入一个已定义的 结构体,解决问题的方法,读取文件 的 C 函数 :1.fopen(FILE * stream,”rb”);2.fread(void * buffer,size_t size,size_t count, FILE*strem);将文件读取到内存中的buffer所指向的位置。3.关闭文件流 stream;此外的C函数还有:long ftell(FILE *stream);得到当前位置int fseek(FILE *stream, long offset, int fromwhere);Fromwhere:
2、0:文件头;1:当前位置;2:文件尾;,读取文件还需要三种逻辑结构,ShpReader.c读取文件的流程图(插图),关闭文件流,特定模块的代码详解:点文件,fseek(file,-28L,2);/ 从文件尾后退一个 点文件长度,读取最后一个 点文件的记录序号,得到点的数目o,RecordNum,ShapeType,X,Y,ContentLength,点文件记录:,records.Point=(SHP_POINT *)malloc(sizeof(SHP_POINT)*numPoints);/ 从文件尾后退一个 点文件长度,读取最后一个 点文件的记录序号,得到点的数目o,特定模块的代码详解:线面文件,读完所有的记录头,得到线的数目以及记录的长度,特定模块的代码详解线面文件,线文件,面文件,为records的其他数据项 赋值,实验 过程 ,由于采用的是先读完一次文件,得到文件的文件 数目;所以需要使用fseek,ftell等函数来在分配内存后将指针指向位置变为文件头读取后的位置,即第101个字节;,大小端 的变换:在读取大端 变量后 ,再用函数转换,得到正确的数值,结果,“让我们改变一下对构建程序的态度:不要把我们的主要工作想象为教计算机怎么做,相反,让我们集中精力向人们解释我们想让机器做什么。” 高德纳(Donald Knuth)。现代计算机鼻祖,计算机程序设计艺术作者,