1.shx文件的基本情况

shx文件又叫索引文件,主要包含坐标文件的索引信息,文件中每个记录包含对应的坐标文件记录距离坐标文件的初始位置的偏移量。通过索引文件可以很方便地在坐标文件中定位到指定目标的坐标信息。

2.shx文件的组成

索引文件也是由头文件和实体信息两部分构成,其中文件头部分是一个长度固定(100 bytes)的记录段,其内容与坐标文件的文件头基本一致(FileLength指shx文件的FileLength)。它的实体信息以记录为基本单位,每一条记录包括偏移量(offset)和记录段长度(Content Length)两个记录项。

2.1.shx文件文件头

索引文件文件头的组织形式与主文件文件头的描述是一样的,除了FileLength,其他的和shp文件文件头一样。

2.2 shx文件实体信息

它的实体信息以记录为基本单位,每一条记录包括偏移量(offset)和记录段长度(Content Length)两个记录项,它们的位序都是big,两个记录项都是int型。

第一条记录的位移量就是头文件的长度,头文件字节数为100,所以第一个位移量为100/2 = 50。

记录长度与shp文件中记录一一对应。

3.读取shx的代码

void readShx(CString filename)

{

//****读取shp、dbf之后打开shx文件

int n = filename.ReverseFind('.');

filename = filename.Left(n);

filename = filename + ".shx";

FILE* m_ShxFile_fp; //Shx文件指针

if ((m_ShxFile_fp = fopen(filename, "rb")) == NULL)//打开索引文件

return;

//****读取索引文件头的内容

int FileCode;

int Unused;

int FileLength;

int Version;

int ShapeType;

double Xmin;

double Ymin;

double Xmax;

double Ymax;

double Zmin;

double Zmax;

double Mmin;

double Mmax;

fread(&FileCode, sizeof(int), 1, m_ShxFile_fp);

FileCode = OnChangeByteOrder(FileCode);

for (int i = 0; i<5; i++)

fread(&Unused, sizeof(int), 1, m_ShxFile_fp);

fread(&FileLength, sizeof(int), 1, m_ShxFile_fp);

FileLength = OnChangeByteOrder(FileLength); //FileLength为shx文件的长度

fread(&Version, sizeof(int), 1, m_ShxFile_fp);

fread(&ShapeType, sizeof(int), 1, m_ShxFile_fp);

fread(&Xmin, sizeof(double), 1, m_ShxFile_fp);

fread(&Ymin, sizeof(double), 1, m_ShxFile_fp);

fread(&Xmax, sizeof(double), 1, m_ShxFile_fp);

fread(&Ymax, sizeof(double), 1, m_ShxFile_fp);

fread(&Zmin, sizeof(double), 1, m_ShxFile_fp);

fread(&Zmax, sizeof(double), 1, m_ShxFile_fp);

fread(&Mmin, sizeof(double), 1, m_ShxFile_fp);

fread(&Mmax, sizeof(double), 1, m_ShxFile_fp);

//****读取索引文件头的内容 结束

//****读取实体信息

int Offset, ContentLength;

while ((fread(&Offset, sizeof(int), 1, m_ShxFile_fp) != 0)) {

fread(&ContentLength, sizeof(int), 1, m_ShxFile_fp);

Offset = OnChangeByteOrder(Offset); //转化为十进制

ContentLength = OnChangeByteOrder(ContentLength); //转化为十进制

}

}

4.总结

至此,Shx文件读取方式也介绍完了。接下来三篇分别介绍Shp、Dbf、Shx的写(创建)。

Java字节流读取shp_shp系列(四)——利用C++进行Shx文件的读(打开)相关推荐

  1. Java字节流读取shp_SHN系列语音卡调试文档.doc

    三汇系列语音卡 杭 州 三 汇 信 息 工 程 有 限 公 司修订记录 时间修订内容修订人版本批准人20-11-22创建郑王峰V0.102012-06-08完善DTMF收发方式部分以及STUN与NAT ...

  2. java面试常考系列四

    转载自 java面试常考系列四 题目一 大O符号(big-O notation)的作用是什么?有哪些使用方法? 大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好 ...

  3. java 字节流读取图片,字符流读取,二进制读取

    这两天在学习java中如何对文件进行读取,首先当然是对最简单的文件txt文件进行操练了.并且,逐渐的了解了Java中IO流是如何对文件进行操作的 操练了一段时间,便开始了对图片进行读取,开始的想法如下 ...

  4. java字节流读取文件_字节流读取文件 java的几种IO流读取文件方式

    java字节流怎么读取数据 字节流读取数据例子如下: import java.io.File;import java.io.FileInputStream;import java.io.FileNot ...

  5. shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言

    博客背景和目的 最近在用C++写一个底层的东西,需要读取和创建shp文件.虽然接触shp文件已经几年了,但是对于shp文件内到底包含什么东西一直是一知半解.以前使用shp文件都是利用软件(如ArcGI ...

  6. shp系列(七)——利用C++进行Shx文件的写(创建)

    之前介绍了Shp文件和Dbf的写(创建),最后来介绍一下Shx文件的写(创建).Shx文件是三者之中最简单的一个,原因有两个:第一是Shx文件的头文件与Shp文件的头文件几乎一样(除了FileLeng ...

  7. 【Java】(二十四)File类(文件操作,文件夹操作,FileFilter接口);Properties属性集合

    继续上一章,学习JavaIO框架 [Java](二十三)IO框架:流的概念与分类,字节流(对象流[序列化.反序列化]),编码方式,字符流(打印流,转换流) 上一节的学习(字节流,字符流)都是对文件内容 ...

  8. java字节流读取esc_什么是“esc”的VT100转义代码?键盘键本身

    VT-100(或使用转义序列的其他终端)上的ESC键没有"转义序列". 转义字符ASCII 27用于表示以下字符序列具有特殊含义.这通常会将终端设置为简单的状态机.一般来说,规则是 ...

  9. java字节流读取word_java怎么样读取word文档,inputstream好像只可以读取记事本 啊...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package com.xiaoye5; import java.io.File; import java.io.FileInputStream; imp ...

最新文章

  1. Session,ViewState用法
  2. IDEA打包成war部署web项目
  3. python绘图和可视化_Python 绘图和可视化详细介绍
  4. 进程、线程、端口、服务间关系
  5. camuda流程引擎如此简单「五」
  6. QT的QCalendarWidget类的使用
  7. Java面向对象(二)面向对象的特征 --- 封装 、 继承、 多态
  8. leetcode1011. 在 D 天内送达包裹的能力(二分查找)
  9. C#中几种常用的集合的用法
  10. 本周Web2.0小工具推荐[2008-08-24]
  11. 39 MM配置-采购-采购订单-STO配置-定义工厂的装运数据
  12. 运维在浏览器搜索linux日志,Graylog日志管理系统---搜索查询方法使用简介
  13. [算法]海量数据问题之一
  14. 一个有趣的说法:多层神经网络的致命问题与过拟合
  15. 在自定义HttpHandler 中使用Session
  16. 用AD9画51单片机的最小系统
  17. 计算机硬件基础与计算机组装知识总结
  18. python中的sort和sorted是什么意思_python中sort和sorted的另类用法
  19. luogu 2698 [USACO12MAR]花盆Flowerpot 单调队列
  20. 考研数据结构学习与总结笔记---1.1数据结构的基本概念

热门文章

  1. 8 年 Java 开发含泪刷题,架构岗现在好难进,有点崩溃
  2. JVM内存和垃圾回收-12.String Table
  3. 电音(5)Bass类电音
  4. Gym - 101350I - Mirrored String II (马拉车)
  5. 重要的表格数据误删了,用EasyRecovery快速恢复!
  6. ESP32 通过NVS存储WiFi账号和密码至Flash
  7. ThinkPad E425 1198A19 在win7下安装Ubuntu双系统卡在安装界面的问题
  8. 3D全景+展馆,带来不一样的参观体验_华锐互动
  9. win10照片文件夹里面图片,突然不显示缩略图
  10. 组装电脑千万不要随便买