Run the lasheader and laspoint validation check
| 151 | |
| 152 | /// Run the lasheader and laspoint validation check |
| 153 | void LAScheck::check(ValidationResult& results, std::string& crsdescription, BOOL no_CRS_fail, F64 tile_size) { |
| 154 | U32 i = 0; |
| 155 | U32 j = 0; |
| 156 | |
| 157 | // check file signature |
| 158 | |
| 159 | LASMessage(LAS_VERY_VERBOSE, "check file signature"); |
| 160 | |
| 161 | if ((lasheader->file_signature[0] != 'L') || (lasheader->file_signature[1] != 'A') || (lasheader->file_signature[2] != 'S') || (lasheader->file_signature[3] != 'F')) { |
| 162 | set_oss_content(note_oss, "should be 'LASF' and not '", lasheader->file_signature, "'"); |
| 163 | results.add_fail("file signature", note_oss.str()); |
| 164 | } |
| 165 | |
| 166 | // check global encoding |
| 167 | |
| 168 | LASMessage(LAS_VERY_VERBOSE, "check global encoding"); |
| 169 | |
| 170 | if ((lasheader->version_major == 1) && (lasheader->version_minor <= 1)) { |
| 171 | if (lasheader->global_encoding > 0) { |
| 172 | set_oss_content(note_oss, "should 0 for LAS ", static_cast<int>(lasheader->version_major), ".", static_cast<int>(lasheader->version_minor), |
| 173 | " but is ", lasheader->global_encoding); |
| 174 | results.add_fail("global encoding", note_oss.str()); |
| 175 | } |
| 176 | } else if ((lasheader->version_major == 1) && (lasheader->version_minor <= 2)) { |
| 177 | if (lasheader->global_encoding > 1) { |
| 178 | set_oss_content(note_oss, "should be <= 1 for LAS ", static_cast<int>(lasheader->version_major), ".", |
| 179 | static_cast<int>(lasheader->version_minor), " but is ", lasheader->global_encoding); |
| 180 | results.add_fail("global encoding", note_oss.str()); |
| 181 | } |
| 182 | } else if ((lasheader->version_major == 1) && (lasheader->version_minor <= 3)) { |
| 183 | if (lasheader->global_encoding > 15) { |
| 184 | set_oss_content(note_oss, "should be <= 15 for LAS ", static_cast<int>(lasheader->version_major), ".", |
| 185 | static_cast<int>(lasheader->version_minor), " but is ", lasheader->global_encoding); |
| 186 | results.add_fail("global encoding", note_oss.str()); |
| 187 | } |
| 188 | } else if ((lasheader->version_major == 1) && (lasheader->version_minor <= 4)) { |
| 189 | if (lasheader->global_encoding > 31) { |
| 190 | set_oss_content(note_oss, "should be <= 31 for LAS ", static_cast<int>(lasheader->version_major), ".", |
| 191 | static_cast<int>(lasheader->version_minor), " but is ", lasheader->global_encoding); |
| 192 | results.add_fail("global encoding", note_oss.str()); |
| 193 | } |
| 194 | } else if ((lasheader->version_major == 1) && (lasheader->version_minor <= 5)) { |
| 195 | if (lasheader->global_encoding > 127) { |
| 196 | set_oss_content(note_oss, "should be <= 127 for LAS ", static_cast<int>(lasheader->version_major), ".", static_cast<int>(lasheader->version_minor), |
| 197 | " but is ", lasheader->global_encoding); |
| 198 | results.add_fail("global encoding", note_oss.str()); |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | if (lasheader->global_encoding & 64) { |
| 203 | if ((lasheader->version_major == 1) && (lasheader->version_minor <= 4)) { |
| 204 | set_oss_content(note_oss, "bit 6 not defined for LAS 1.", static_cast<int>(lasheader->version_minor)); |
| 205 | results.add_fail("global encoding", note_oss.str()); |
| 206 | } |
| 207 | } |
| 208 | |
| 209 | if (lasheader->global_encoding & 32) { |
| 210 | if ((lasheader->version_major == 1) && (lasheader->version_minor <= 5)) { |
nothing calls this directly
no test coverage detected