// DecodeTKey returns a spatial index from a image block key. // TODO: Extend this when necessary to allow any form of spatial indexing like CZYX. func DecodeTKey(tk storage.TKey) (*dvid.IndexZYX, error) { ibytes, err := tk.ClassBytes(keyImageBlock) if err != nil { return nil, err } var zyx dvid.IndexZYX if err = zyx.IndexFromBytes(ibytes); err != nil { return nil, fmt.Errorf("Cannot recover ZYX index from image block key %v: %v\n", tk, err) } return &zyx, nil }
func DecodeBlockTKey(tk storage.TKey) (pt dvid.ChunkPoint3d, err error) { ibytes, err := tk.ClassBytes(keyBlock) if err != nil { return } var idx dvid.IndexZYX if err = idx.IndexFromBytes(ibytes); err != nil { return } pt = dvid.ChunkPoint3d(idx) return }
// DecodeTKey returns the components of a tile request based on an imagetile-specific key component. func DecodeTKey(tk storage.TKey) (tile dvid.ChunkPoint3d, plane dvid.DataShape, scale Scaling, err error) { if len(tk) < 21 { err = fmt.Errorf("imagetile-specific key component has too few bytes (%d)", len(tk)) return } plane, err = dvid.BytesToDataShape(tk[0:dvid.DataShapeBytes]) if err != nil { return } scale = Scaling(tk[dvid.DataShapeBytes]) var idx dvid.IndexZYX if err = idx.IndexFromBytes(tk[dvid.DataShapeBytes+2:]); err != nil { return } tile = dvid.ChunkPoint3d(idx) return }