上一篇介绍了shp文件的创建,接下来介绍dbf的创建. 推荐结合读取dbf的博客一起看! 推荐结合读取dbf的博客一起看! 推荐结合读取dbf的博客一起看! 1.Dbf头文件的创建 Dbf头文件的结构如下: 记录项数组说明: 字段类型说明: 关于每项的具体含义参照读取dbf文件的解释,这里重点解释几项: HeaderByteNum指dbf头文件的字节数,数值不用除于2,具体为:从version到Reserved2(共32) + n个字段 * 每一个字段长度 32 + terminator. Re…
1.DBF文件要点 DBF文件又叫属性文件,也叫dBASE文件,文件后缀是.dbf,实际上ArcGIS打开后的属性表就是DBF的信息.DBF文件遵循以下几个条件: 每个要素在表中必须要包含一个与之相对应的记录. 记录的顺序必须与要素在主文件中(*.shp)的顺序一样. dBASE 文件头中的年份值必须要晚于 1900 年. 2.DBF文件的组成 属性文件(.dbf)用于记录属性信息.它是一个标准的DBF文件,也是由头文件和实体信息两部分构成: 3.DBF文件的头文件 文件头部分的长度是不定长的,…
之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建).Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLength):第二是Shx文件的主体只有两个记录项,分别是Offset和ContentLength. 推荐结合读取shx的博客一起看! 推荐结合读取shx的博客一起看! 推荐结合读取shx的博客一起看! 1.Shx头文件 Shx头文件的各项和Shp文件一样,字节数为100.FileLength代表本Shx…
前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表格内容!!) 它支持 xlsx 和 xls 格式的excel表格: 与之对应的还有一个xlrd包,用于读取excel中的数据. 二.安装xlwt模块 命令行中输入:pip install xlwt 下载安装包进行离线安装 三.xlwt应用举例 3.1 xlwt基本应用实例 import xlwt #…
最近在做一个给卫计委做数据上报的数据接口,接口要求使用奇葩的dBase 3数据库存储上报数据,忙活了几天总算搞好了,使用开发工具为powerbuild 12,222个字段的上报数据表生成DBF文件,写个随笔记录一下踩坑过程. 已踩的坑: 1.网上很少能找到dBASE 3数据库的资料,数据结构,设计工具都很少,试过了一些工具,推荐使用DatabaseNet4. 推荐使用这个工具,是因为这个工具较好的帮助我解决了部分问题. 2.由于才开始没有原始的DBF文件(空库表),我便尝试使用各种工具按照接口数…
最近在做一个给卫计委做数据上报的数据接口,接口要求使用奇葩的dBase 3数据库存储上报数据,忙活了几天总算搞好了,使用开发工具为powerbuild 12,222个字段的上报数据表生成DBF文件,写个随笔记录一下踩坑过程. 已踩的坑: 1.网上很少能找到dBASE 3数据库的资料,数据结构,设计工具都很少,试过了一些工具,推荐使用DatabaseNet4. 推荐使用这个工具,是因为这个工具较好的帮助我解决了部分问题. 2.由于才开始没有原始的DBF文件(空库表),我便尝试使用各种工具按照接口数…
之前介绍了shp文件.dbf文件和shx文件的的读取,接下来将分别介绍它们的创建过程.一般来说,读和写的一一对应的,写出的文件就是为了保存数据供以后读取的.写的文件要符合shapefile的标准.之前读取的时候使用的函数是fread,写的函数对应为fwrite,文件为二进制流文件. 建议本博客和之前shp读取的博客一起看! 建议本博客和之前shp读取的博客一起看! 建议本博客和之前shp读取的博客一起看! 1.位序little转为big shp文件中部分参数是big类型,读取的时候读取的big要…
博客背景和目的 最近在用C++写一个底层的东西,需要读取和创建shp文件.虽然接触shp文件已经几年了,但是对于shp文件内到底包含什么东西一直是一知半解.以前使用shp文件都是利用软件(如ArcGIS)直接打开,保存:创建文件则需要专门利用ArcToolBox等创建图形. 网上有现成的有关shp文件的库,如GDAL等,可以结合这些库来读写shp文件.但是由于编程环境问题.库的版本.编译.引用等等问题,在现有情况下无法正常使用,加之使用现有的库不能让我从底层完全了解shp文件的组织方式,遂决心一…
1.各数据类型及其字节数 BYTE 1;       char 1;    short 2;      int 4;    double 8; 2.位序big和little及其转换 对于位序是big的数据我们在读取时要小心.通常,数据的位序都是Little,但在有些情况下可能会是big,二者的区别在于它们位序的顺序相反.一个位序为big的数据,如果我们想得到它的真实数值,需要将它的位序转换成Little即可.转换原理就是交换字节顺序,下面是转换代码(big->little): int OnCha…
最近架构一个项目,实现行情的接入和分发,需要达到极致的低时延特性,这对于证券系统是非常重要的.接入的行情源是可以配置,既可以是Level-1,也可以是Level-2或其他第三方的源.虽然Level-1行情没有Level-2快,但是作为系统支持的行情源,我们还是需要优化它,使得从文件读取,到用户通过socket收到行情,端到端的时延尽可能的低.本文主要介绍对level-1行情dbf文件读取的极致优化方案.相信对其他的dbf文件读取应该也有借鉴意义. Level-1行情是由行情小站,定时每隔几秒把d…