GDAL 矢量属性数据修改(python)

2023-05-16

Case:需要给一个现有的shp数据创建一个字段,并将属性表中原有的一个文本类型的属性转换为整型后填入新创建的字段。

Problem:新字段创建成功,但是赋值操作无效,即无法成功给字段写入值。

solution:对字段进行赋值后需要,重新写入Feature,否则赋值无效,即layer.SetFeature(feature)

特别注意:在对数据进行读写操作,一定要以读写的方式打开,即Open(filePath,1),该方法的原型为Open(pszName,int bUpdate = false),并且具有返回值,参数说明如下:


名称    说明
pszName    需要打开文件或数据源的路径
bUpdate    是否需要更新数据集,默认为只读,如果需要对数据进行读写操作,需要给此参数赋值1
返回值    返回数据集的指针,如果为NULL,则表明打开数据集失败
以下将给出创建字段和获取字段值、子段赋值的实例。

1.为矢量数据创建字段

    # 添加字段
    defn = layer.GetLayerDefn()
    fieldIndex=defn.GetFieldIndex('SSSS')
    if fieldIndex<0:
        # 添加字段
        fieldDefn = ogr.FieldDefn('SSSS', ogr.OFTInteger)
        fieldDefn.SetPrecision(9)
        layer0.CreateField(fieldDefn,1);
    fieldIndex2 = defn.GetFieldIndex('SSSS')
    if fieldIndex2>0:
        print("字段创建成功:",fieldIndex)


2.获取字段值及字段赋值

    indexA = defn.GetFieldIndex('code')
    indexB = defn.GetFieldIndex('SSSS')
    oField = defn.GetFieldDefn(indexB)
    fieldName = oField.GetNameRef()
    for feature in layer:
        valueA= feature.GetFieldAsInteger(indexA)
        if valueA is None:
            feature.SetFieldNull(indexB)
            continue
        feature.SetField2(fieldName, valueA)
        layer.SetFeature(feature)       
        feature = None
    ds.Destroy()

————————————————
版权声明:本文为CSDN博主「Martian.Alien」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/feixiegis/article/details/80319568

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GDAL 矢量属性数据修改(python) 的相关文章

  • 大数据的感想

    1 大数据即全数据 xff08 即n 61 All xff0c 这里n为数据的大小 xff09 xff0c 其旨在收集和分析与某事物相关的 全部 数据 xff0c 而非仅分析 部分 数据 2 N 61 All xff08 所有 xff09
  • 完全搞懂shell脚本第一行:#!/bin/bash的含义

    shell脚本的第一行一般会写有以下字样 xff1a bin bash 或者 bin sh 或者 bin awk 比较常见的说法是 xff1a 第一行的内容指定了shell脚本解释器的路径 xff0c 而且这个指定路径只能放在文件的第一行
  • Python3 超好用的音频播放模块 playsound

    Python3 超好用的音频播放模块 playsound 前言playsound模块介绍一 模块安装二 使用三 使用中遇到大坑 xff1a 文件无法解除占用 xff01 前言 python2有个很好用的音频播放模块MP3player xff
  • ros中rviz查看激光雷达数据 hokuyo

    一开始没加tf会报错如下 WARN 1531227099 238940419 MessageFilter target 61 map Dropped 100 00 of messages so far 解决如下 启动传感器驱动 xff0c
  • ubuntu vscode 学习

    扩展 visual studio keymap 快捷键 Open the Command Palette View gt Command Palette Ctrl 43 Shift 43 P See an overview of the u
  • repo sync出现错误的解决方法

    1 xff1a 多次出现 fatal The remote end hung up unexpectedly fatal early EOF fatal index pack failed 网络不好 xff0c 挂VPN或使用其他的镜像源
  • python函数参数改不改变的问题

    python函数参数改不改变的问题 结论 xff1a python有可变对象和不可变对象之分 如果传入的参数是不可变对象 xff0c 则在函数体内对形参的修改不会导致实参被修改 xff0c 而如果传入的是可变对象 xff0c 实参有可能会变
  • Google 开源项目风格指南 (中文版)

    Google 开源项目风格指南 中文版 在线文档托管在 ReadTheDocs 在线阅读最新版本中文风格指南 GitHub 托管地址 xff1a zh google styleguide Note 声明 本项目并非 Google 官方项目
  • 富斯,迈克,天地飞4合1接收机说明书

    xff08 上图 xff0c 飞机用的接收机 xff09 xff08 上图 xff0c 车用的接收机 xff09 目录 1 如何和遥控器对码 xff1f 富斯FLLYSKY xff0c 天地飞 MC6C MC7C 2 如何切换对码另一个摇控
  • matlab: Unsupported shape type PolyLineZ

    参考 xff1a https gis stackexchange com questions 40613 importing shapefile in matlab Matlab使用shaperead读取shp文件时 xff0c 出现错误
  • 解决:mount: unknown filesystem type ‘ntfs’ 问题

    使用 mount dev sdb1 mnt usb 挂载U盘报错 mount unknown filesystem type ntfs 上网查询说是系统不支持ntfs文件 解决方法 xff1a 使用 ntfs 3g 来解决 打开ntfs 3
  • Centos7 进入单用户模式

    Centos7 进入单用户模式 当我们设置用户密码时 xff0c 有可能会忘记 xff0c 这时如何登陆呢 xff0c 单用户模式就可以 首先我们进入开机界面 xff0c 按e进行选择 会进入以下界面 xff0c 然后找到图中红线标注的该行
  • centos关机、重启、图形界面与命令行界面切换命令

    1 关机 xff1a init0 poweroff halt shutdown 2 重启 xff1a init1 reboot 3 图形界面切换到命令行界面 xff1a init3 或者 xff0c 修改配置文件 xff1a vi etc
  • CentOS连接Wifi及无法连接问题

    1 查看是否需要安装固件 大多无线网卡还需要固件 内核一般会自动探测并加载两者 xff0c 如果您得到类似 SIOCSIFFLAGS No such file or directory 的输出 xff0c 意味着您得手动加载固件 若不确定
  • Linux挂载windows网盘

    Linux挂载windows网盘 sudo mount t cifs o username 61 yourusername password 61 yourpsw 172 8 8 8 subpath mnt mountpath 安装问题解决
  • Linux命令行curl访问有登陆页面的网络

    curl d 34 username 61 yourusrname amp password 61 yourpsw amp pwd 61 yourpsw amp secret 61 true 34 X POST http 192 8 8 8
  • Windows下搜索指定类型文件,并写入txt中

    使用方式 xff0c dir会搜索包含子目录下的文件 dir path file type b s gt list txt 例如 xff1a 搜索wav文件夹下所以的wav文件 xff0c 包括子目录下的wav文件 xff0c 将结果写入w
  • MRT(MODIS Reprojection Tool)安装、影像批量拼接、重投影和格式转换

    一 安装MRT MODIS Reprojection Tool 安装准备 xff1a 检查是否安装java exe Java版本至少为Java 2 Runtime Environment version 1 5或者是Java 2 SDK v
  • arcpy.da.SearchCursor RuntimeError: cannot open '.shp'

    arcpy在使用arcpy da SearchCursor读取shp时报错RuntimeError cannot open 39 shp 39 xff0c 代码如下 xff1a coding utf8 import arcpy path 6
  • 一种基于卡尔曼滤波的语音增强方法

    一种基于卡尔曼滤波的语音增强方法 摘要 本文考虑了只有损坏的语音信号可供处理时 的语音增强问题 为此 xff0c 研究了卡尔曼滤波方法 xff0c 并与维纳滤波方法进行了比较 卡尔曼滤波方法 的 性能明显优于维纳滤波方法 提出了一种延迟卡尔

随机推荐