解决python ogr shp字段写入中文乱码的问题


Posted in Python onDecember 31, 2018

首先,先确认一下你的字段值是不是乱码,如果是,按照以下方法:

我的字段值是来自于一个geojson字符串,我在对它解析时做了如下处理:

properties = fea.get("properties")
pro_json=json.dumps(properties)
pro_json.replace('u\'','\'')#将unicode编码转化为中文先处理一下
pro_json=pro_json.decode("unicode-escape") #将unicode编码转化为中文
properties=json.loads(pro_json)

这样即可消除字段值中的中文乱码。

字段值没有乱码了,可是这样写入shp,shp中会出现乱码,使用如下方法解决:

首先,你需要用driver方法创建shp文件而不是直接用ogr.open:

driver=ogr.GetDriverByName("ESRI Shapefile")
ds =driver.CreateDataSource(shp_path)#打开要写入的数据源

然后,在driver创建之前加入如下两句:

gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
gdal.SetConfigOption("SHAPE_ENCODING", "GBK")

成了。

源码如下:

def create_shp_with_geoJson2(a,shp_path):
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")
gdal.SetConfigOption("SHAPE_ENCODING", "GBK")
driver=ogr.GetDriverByName("ESRI Shapefile")
ds =driver.CreateDataSource(shp_path)#打开要写入的数据源
if ds is None:
sys.exit('Could not open this folder!')
if ds.GetLayer('test_polygon'):
ds.DeleteLayer('test_polygon')#如果存在,就删除该数据
feature0=a['features'][0]
geo = feature0.get("geometry")
geo_type = geo.get('type')#获取图层类型
properties = feature0.get("properties")
keys=properties.keys()#获取字段名称数组
if geo_type=='Polygon' or 'MultiPolygon':
ogr_type=ogr.wkbPolygon
else:
if geo_type=='Point':
ogr_type=ogr.wkbPoint
else:
if geo_type=='LineString' or 'MultiLineString':
ogr_type=ogr.wkbLineString
out_lyr=ds.CreateLayer('test_polygon',None,ogr_type)#创建图层
#接下来往图层中写入feature
for key in keys:
field_testfield = ogr.FieldDefn(key, ogr.OFTString)#创建字段
field_testfield.SetWidth(254)
out_lyr.CreateField(field_testfield)
for fea in a['features']:
geometry_json=fea.get("geometry")
properties = fea.get("properties")
pro_json=json.dumps(properties)
pro_json.replace('u\'','\'')#将unicode编码转化为中文先处理一下
pro_json=pro_json.decode("unicode-escape") #将unicode编码转化为中文
properties=json.loads(pro_json)
geom=ogr.CreateGeometryFromJson(str(geometry_json))
out_defn=out_lyr.GetLayerDefn()
out_feat=ogr.Feature(out_defn)
out_feat.SetGeometry(geom)#创建geometry
for i in range(len(keys)):
value=properties.get(keys[i])#获取属性值
print(value)
out_feat.SetField(i,value)
out_lyr.CreateFeature(out_feat)#在图层中插入该要素
if __name__ == '__main__':
create_shp_with_geoJson2(a,'web')

以上这篇解决python ogr shp字段写入中文乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的文件夹清理程序分享
Nov 22 Python
python列表的增删改查实例代码
Jan 30 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
python 对key为时间的dict排序方法
Oct 17 Python
python处理multipart/form-data的请求方法
Dec 26 Python
python2使用bs4爬取腾讯社招过程解析
Aug 14 Python
Pytorch模型转onnx模型实例
Jan 15 Python
jupyter notebook 增加kernel教程
Apr 10 Python
Python filter()及reduce()函数使用方法解析
Sep 05 Python
python 基于opencv去除图片阴影
Jan 26 Python
Python爬取某拍短视频
Jun 11 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 #Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 #Python
python实现播放音频和录音功能示例代码
Dec 30 #Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 #Python
python中partial()基础用法说明
Dec 30 #Python
python读取各种文件数据方法解析
Dec 29 #Python
python 读取鼠标点击坐标的实例
Dec 29 #Python
You might like
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
js href的用法
2010/05/13 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
jQuery插件HighCharts实现2D柱状图、折线图的组合多轴图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Django实现随机图形验证码的示例
2020/10/15 Python
python drf各类组件的用法和作用
2021/01/12 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
实习生体会的自我评价范文
2013/11/28 职场文书
高校自主招生自荐信
2013/12/09 职场文书
暑期培训班招生方案
2014/08/26 职场文书
迎新生标语大全
2014/10/06 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
通知格式
2015/04/27 职场文书
廉洁自律证明
2015/06/24 职场文书
酒店温馨提示语
2015/07/14 职场文书
新学期家长寄语2016
2015/12/03 职场文书
入党申请书怎么写?
2019/06/21 职场文书