获取数据与更新数据
python SDK 获取数据集管理系统的数据,并对获取到的数据进行更新处理
全局的TDA对象提供了数据检索的功能,方便您按照条件检索查询您已经同步到数据集管理系统的数据。
分页检索数据
tda.GetData(offset=0, limit=100, metaKey="", metaValue="", label="", sensor="")
参数
类型
必填
说明
offset
int
否
检索数据的起始位置,默认为0,大于0
limit
int
否
检索数据的数量,默认为1000,最大为1000
metaData
dict
否
按meta信息检索数据,检索时会按并列(and)关系从上传时设置的meta信息中匹配键值
label
string
否
按lebel检索,目前仅支持按单个label检索
sensor
string
否
按sensor检索
返回结果为一个dict
字段
类型
说明
total
int
本次检索的数据总量
files
list
元素为testindata.dataset.updatefile.UpdateFile 的list,每一个元素为一个文件
分页检索更类似文件列表的检索,所以检索结果无标注结果,要取得标注结果需按fid检索数据。样例代码:
page = 0
limit = 100
while True:
offset = page * limit
fileData = tda.GetData(offset, limit)
if len(fileData["files"]) <= 0:
break
page += 1
for file in fileData["files"]:
#文件的相关信息
print(file.fid)#文件fid
print(file.name)#文件basename
print(file.referId)#文件ref_id
print(file.metaData)#文件meta信息
print(file.md5)#文件md5
print(file.path)#文件oss路径
print(file.url)#文件临时可访问地址
print(file.size)#文件大小
print(file.frameId)#融合数据的frameId
print(file.sensor) #融合数据的sensor
print(file.createAt)#文件上传时间,unix 时间戳
print(file.updateAt)#文件上次更新时间, unix 时间戳
print(file.ToList())#将数据转为list,方便使用
#下载这个文件
res = requests.get(file.url)
with open('/path/to/saveFile', 'wb') as f:
f.write(res.content)
#删除这个文件及相关信息
print(file.Delete())
按fid或者referId(ref_id)检索数据
tda.GetFileAndLabel(fid="", referId="")
参数
类型
必填
说明
fid
string
否
按fid检索数据
referId
string
否
按ref_id检索,如果上传数据或者更新数据时同一数据集内传入了多个相同的ref_id,则本次检索仅会检索出第一个符合条件的结果
返回结果为testindata.dataset.updatefile.UpdateFile 的对象,该对象包含本次检索文件的所有信息。
file = tda.GetFileAndLabel(fid="fs_wB2HyED8iCxm9EqrUE0_")
print(file.anotations.labels)#该文件的所有标注结果
print(file.fid)#文件fid
print(file.name)#文件basename
print(file.referId)#文件ref_id
print(file.metaData)#文件meta信息
print(file.md5)#文件md5
print(file.path)#文件oss路径
print(file.url)#文件临时可访问地址
print(file.size)#文件大小
print(file.frameId)#融合数据的frameId
print(file.sensor) #融合数据的sensor
print(file.createAt)#文件上传时间
print(file.updateAt)#文件上次更新时间
print(file.ToList())#将数据转为list,方便您使用
#下载这个文件
res = requests.get(file.url)
with open('/path/to/saveFile', 'wb') as f:
f.write(res.content)
#删除这个文件及相关信息
print(file.Delete())
更新数据
我们可以利testindata.dataset.updatefile.UpdateFile 对象该对该文件的数据做更新操作。目前更新仅支持以下字段:
字段
类型
说明
referId
string
文件的ref_id,同一数据集如果传入多个相同的ref_id,按该字段检索时仅会返回第一个符合要求的结果
metaData
dict
文件的meta信息,修改时会覆盖原有结果
name
string
文件basename
sensor
string
点云融合数据的传感器名称,填入的值为枚举值,pointcloud为点云,camera_0 至 camera_9为相机
frameId
string
点云融合数据帧id,用于关联不同传感器的可视化,最大长度64
anotations
object
该文件的标注结果,需要调用AddBox2D(), AddLine() 等方法操作添加数据,修改时会覆盖原有结果
示例代码:
updateFile = tda.GetFileAndLabel(fid="fs_wB2HyED8iCxm9EqrUE0_")
updateFile.referId = "test_refer_id"
updateFile.metaData = {
"key1":"test_val"
}
updateFile.name = "23333.jpg"
updateFile.sensor = "camera_1"
updateFile.frameId = "test_frame_id"
box = {
"x": 10,
"y": 10,
"width": 100,
"height": 100,
}
label = "myTestLabelName"
attr = {
"attrKey1":"attrVal1",
"attrKey2":"attrVal2",
"attrKey3":"attrVal3",
}
updateFile.AddBox2D(box, label=label, attrs=attr)
print(updateFile.Update())
方法返回为一个dict
{'file_succ': 1, 'file_fail': 0, 'anotations_succ': 1, 'anotations_fail': 0}
字段
类型
说明
file_succ
int
文件信息成功更新的文件数量
file_succ
int
文件信息更新失败的数量
anotations_succ
int
标注结果更新成功数量
anotations_fail
int
标注结果更新失败数量
Last updated
Was this helpful?