免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 3951|回复: 4
收起左侧

[经验共享] 如何检测当前shapefile使用了什么编码类型?

  [复制链接]

88

主题

3345

铜板

3

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
735
发表于 2017-11-9 17:02 | 显示全部楼层 |阅读模式
shapfile本身是个开放格式,当然我们有很多种途径查看shapefile的内部,读者中不乏代码大牛,只要了解数据规范应该方法多多。

我这里就分享一种通过 python 查看编码类型的简单的方法,使用python中的 struct模块 可以处理二进制数据,从而探测下 shapefile 的子文件 dbf 的头文件中的 LDID 信息是什么。

python代码示例:
  1. #-*-coding:utf-8 -*-
  2. __author__ = 'kikita'

  3. import struct

  4. dbf = u'D:\ExportShapefiles\中文字段.dbf'
  5. dat = open(dbf, 'rb').read(30)[29:]
  6. id = struct.unpack('B', dat)[0]

  7. print(id, hex(id))
复制代码
例如,得到这样的打印结果:例如,得到这样的打印结果:
  1. [b](77, '0x4d')[/b]
复制代码
通过这样的 ID 到 编码表 中查到就是 CodelPage 936。

如何检测当前shapefile使用了什么编码类型

如何检测当前shapefile使用了什么编码类型



评分

参与人数 1铜板 +4 收起 理由
天外来客 + 4 地信网的成长离不开您的支持!

查看全部评分

38

主题

2万

铜板

49

好友

地信专家组

Rank: 14Rank: 14Rank: 14Rank: 14

积分
2479

精华勋章爱心勋章组织勋章灌水勋章荣誉会员勋章活跃勋章地信专家组VIP勋章贡献勋章冰雪节勋章成就学员勋章12周年纪念勋章

发表于 2017-11-9 18:53 手机频道 | 显示全部楼层
虽然没看懂,但还是顶一下,
回复 支持 反对

使用道具 举报

0

主题

1万

铜板

0

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
696
发表于 2017-11-14 18:17 | 显示全部楼层
这种判断方式不一定有用
有些软体像QGIS
或是用程序产生的SHP
并不会照这个方式加入信息
只会显示'0×00'
回复 支持 反对

使用道具 举报

10

主题

1万

铜板

19

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3720
发表于 2021-11-13 21:20 | 显示全部楼层
感谢分享!
回复

使用道具 举报

30

主题

2万

铜板

59

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6290
QQ
发表于 2022-1-24 10:07 | 显示全部楼层
感谢分享:mg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表