许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Unity读取并解析Shapefile地图文件:完整实现

Unity读取并解析Shapefile地图文件:完整实现

阅读数 109
点赞 0
article_banner

文章目录

  • 参考 一、文件介绍 1.shapefile组成 2.Main File(.shx)的文件结构 3.Index File(.shx)的文件结构 4.dBASE(.dbf)的文件结构 二、读取shp文件


参考

Github库:ShpLoader

有需要的同学请移步上面这位大佬的github库。我只是对内容做一个小小的总结。

一、文件介绍

1.shapefile组成

ESRI shapefile由一个主文件,一个索引文件组成。和一个dBASE表。主文件是一个直接访问、可变记录长度的文件,其中每条记录都用它的顶点列表来描述一个形状。在索引文件中。每条记录包含对应的主文件记录从主文件开始的偏移量。dBASE表包含每个特性一条记录的特性属性。几何图形和属性之间的一对一关系是基于记录号的。dBASE文件中的属性记录必须与主文件中的记录的顺序相同。

命名规范

   所有的文件名都遵循8.3命名约定。的主要文件。索引文件。和dBASE文件具有相同的前缀。前缀必须以字母数字字符(a-Z)开头。0 - 9)。后跟0个或最多7个字符(a-Z)。0 - 9)。主文件的后缀是.shp。索引文件的后缀是.shx。dBASE表的后缀是. dbf 。在具有区分大小写的文件名的操作系统上,文件名中的所有字母都是小写的。
在这里插入图片描述
数值类型

   shapefile存储整数和双精度数。本文件的其余部分将引用以下类型:整数:带符号的32位整数(4字节)双:带符号的64位IEEE双精度浮点数(8字节)浮点数必须是数值。正无穷。在shapefile中不允许出现负无穷和非数字(NaN)值。然而,shapefiles支持“无数据”值的概念。但它们目前仅用于测量。shapefile读取器认为任何小于10的浮点数表示“无数据”值。

2.Main File  (.shx)的文件结构

主文件(.shp)包含一个固定长度的文件头,后面跟着可变长度的记录。每个可变长度的记录由固定长度的记录头和可变长度的记录内容组成。图1说明了主文件的组织。
在这里插入图片描述
字节序

   shapefile中的所有内容可以分为两类:

  • 相关的数据
       
  • 相关文件管理
       

组成文件头(下面标识)中的数据描述字段和主文件中的记录内容的整数和双精度整数采用小端字节顺序(PC或Intel)。构成文件和文件管理的其余部分的整数和双精度浮点数采用大端字节顺序(Sun或Motorola)。相关参考浅谈字节序(Byte Order)及其相关操作

主文件的Header

   主文件头的长度为100字节。表1显示了文件头中的字段及其字节位置、值、类型和字节顺序。在表中,位置与文件的开始有关。
在这里插入图片描述

   文件长度的值是以16位字表示的文件总长度(包括组成头的50个16位字)。shapefile中的所有非空形状都需要具有相同的形状类型。形状类型的值如下:
在这里插入图片描述

   目前,shapefile被限制为包含与上面指定的形状相同类型的形状。在未来。shapefiles可以允许包含一种以上的形状类型。如果实现了混合形状类型,头中的形状类型字段将标志该文件主文件头中的 Bounding Box 文件中形状的实际范围:与包含所有形状的X和Y轴(可能还有M和Z轴)正交的最小边框。如果shapefile是空的(即没有record)。Xmin,Ymin,Xmax,Ymax是未指定的。Mmin和Mmax可以包含“no data”值,用于测量形状类型的shapefile,这些形状文件不包含度量值。

Record Headers

   每个记录的头存储记录编号和记录的内容长度。记录头的长度为8字节。表2显示了文件头中的字段及其字节位置、值、类型和字节序。在表中,position和record的start有关。
在这里插入图片描述

   记录数字从1开始。记录的内容长度是记录内容部分的长度,用16位的字来度量。每条记录,因此。将(4 +内容长度)16位的字作为文件的总长度,存储在文件头的第24字节。

Record Content
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空