Skip to content

Clarification about backwards compatibility #145

@mfsch

Description

@mfsch

What is the issue about?

Inquiry about the specification

Issue description

I’m trying to understand what the considerations with regard to backwards compatibility of the v1.3 and v1.4 specifications were. Since they both introduced additional fields in the public header block, it is impossible to correctly read the VLRs of v1.3/v1.4 for a reader that is only aware of v1.2, no matter whether the v1.4 file is making use of any of the new features. Why then does the v1.4 format retain the “legacy” number of points, if it is anyway not possible to write a v1.4 file that can be parsed correctly by a v1.2 reader?

If the new header fields had instead been placed after the VLRs, just before the point-data offset, it would be possible to write v1.3 & v1.4 files that can be parsed correctly by a v1.2-aware reader, as long as none of the new features are used. But as the spec is defined now, we might as well think of v1.2, v1.3 and v1.4 as completely separate formats, no? Or is this meant to accommodate processing tools that do not need CRS/VLR data but only support v1.2?

If I am understanding this compatibility issue correctly, then the “legacy compatibility” section of the spec is a bit misleading to me. In particular, it mentions that a v1.4 writer should only write VRLs and no EVLRs if it wants to maintain backward compatibility, but how can an older reader read v1.4 VLRs if it is not aware of the new starting position of VLRs? Are these compatibility considerations just meant to make it easier to implement partial support for a newer format, e.g. explicit support for v1.4 files but not for EVLRs?

It looks like the discussion in #109 is somewhat related.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions