⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lasdiff.cpp

📁 Lidar数据处理时
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    {
      fprintf(stderr, "  generating_software: %s %s\n", lasheader1->generating_software, lasheader2->generating_software);
    }
    if (lasheader1->file_creation_day != lasheader2->file_creation_day || lasheader1->file_creation_year != lasheader2->file_creation_year)
    {
      fprintf(stderr, "  file_creation day.year: %d.%d %d.%d\n", lasheader1->file_creation_day, lasheader1->file_creation_year, lasheader2->file_creation_day, lasheader2->file_creation_year);
    }
    if (lasheader1->header_size != lasheader2->header_size)
    {
      fprintf(stderr, "  header_size: %d %d\n", lasheader1->header_size, lasheader2->header_size);
      fatal_difference = true;
    }
    if (lasheader1->offset_to_point_data != lasheader2->offset_to_point_data)
    {
      fprintf(stderr, "  offset_to_point_data: %d %d\n", lasheader1->offset_to_point_data, lasheader2->offset_to_point_data);
    }
    if (lasheader1->point_data_format != lasheader2->point_data_format)
    {
      fprintf(stderr, "  point_data_format: %d %d\n", lasheader1->point_data_format, lasheader2->point_data_format);
      fatal_difference = true;
    }
    if (lasheader1->point_data_record_length != lasheader2->point_data_record_length)
    {
      fprintf(stderr, "  point_data_record_length: %d %d\n", lasheader1->point_data_record_length, lasheader2->point_data_record_length);
      fatal_difference = true;
    }
    if (lasheader1->number_of_point_records != lasheader2->number_of_point_records)
    {
      fprintf(stderr, "  number_of_point_records: %d %d\n", lasheader1->number_of_point_records, lasheader2->number_of_point_records);
      fatal_difference = true;
    }
    if (lasheader1->number_of_points_by_return[0] != lasheader2->number_of_points_by_return[0] || lasheader1->number_of_points_by_return[1] != lasheader2->number_of_points_by_return[1] || lasheader1->number_of_points_by_return[2] != lasheader2->number_of_points_by_return[2] || lasheader1->number_of_points_by_return[3] != lasheader2->number_of_points_by_return[3] || lasheader1->number_of_points_by_return[4] != lasheader2->number_of_points_by_return[4])
    {
      fprintf(stderr, "  number_of_points_by_return: (%d,%d,%d,%d,%d) (%d,%d,%d,%d,%d)\n", lasheader1->number_of_points_by_return[0], lasheader1->number_of_points_by_return[1], lasheader1->number_of_points_by_return[2], lasheader1->number_of_points_by_return[3], lasheader1->number_of_points_by_return[4], lasheader2->number_of_points_by_return[0], lasheader2->number_of_points_by_return[1], lasheader2->number_of_points_by_return[2], lasheader2->number_of_points_by_return[3], lasheader2->number_of_points_by_return[4]);
    }
    if (lasheader1->x_scale_factor != lasheader2->x_scale_factor)
    {
      lidardouble2string(printstring, lasheader1->x_scale_factor, lasheader2->x_scale_factor); fprintf(stderr, "  x_scale_factor: %s\n", printstring);
      fatal_difference = true;
    }
    if (lasheader1->y_scale_factor != lasheader2->y_scale_factor)
    {
      lidardouble2string(printstring, lasheader1->y_scale_factor, lasheader2->y_scale_factor); fprintf(stderr, "  y_scale_factor: %s\n", printstring);
      fatal_difference = true;
    }
    if (lasheader1->z_scale_factor != lasheader2->z_scale_factor)
    {
      lidardouble2string(printstring, lasheader1->z_scale_factor, lasheader2->z_scale_factor); fprintf(stderr, "  z_scale_factor: %s\n", printstring);
      fatal_difference = true;
    }
    if (lasheader1->x_offset != lasheader2->x_offset)
    {
      lidardouble2string(printstring, lasheader1->x_offset, lasheader2->x_offset); fprintf(stderr, "  x_offset: %s\n", printstring);
      fatal_difference = true;
    }
    if (lasheader1->y_offset != lasheader2->y_offset)
    {
      lidardouble2string(printstring, lasheader1->y_offset, lasheader2->y_offset); fprintf(stderr, "  y_offset: %s\n", printstring);
      fatal_difference = true;
    }
    if (lasheader1->z_offset != lasheader2->z_offset)
    {
      lidardouble2string(printstring, lasheader1->z_offset, lasheader2->z_offset); fprintf(stderr, "  z_offset: %s\n", printstring);
      fatal_difference = true;
    }
    if (lasheader1->max_x != lasheader2->max_x)
    {
      lidardouble2string(printstring, lasheader1->max_x, lasheader2->max_x); fprintf(stderr, "  max_x: %s\n", printstring);
    }
    if (lasheader1->min_x != lasheader2->min_x)
    {
      lidardouble2string(printstring, lasheader1->min_x, lasheader2->min_x); fprintf(stderr, "  min_x: %s\n", printstring);
    }
    if (lasheader1->max_y != lasheader2->max_y)
    {
      lidardouble2string(printstring, lasheader1->max_y, lasheader2->max_y); fprintf(stderr, "  max_y: %s\n", printstring);
    }
    if (lasheader1->min_y != lasheader2->min_y)
    {
      lidardouble2string(printstring, lasheader1->min_y, lasheader2->min_y); fprintf(stderr, "  min_y: %s\n", printstring);
    }
    if (lasheader1->max_z != lasheader2->max_z)
    {
      lidardouble2string(printstring, lasheader1->max_z, lasheader2->max_z); fprintf(stderr, "  max_z: %s\n", printstring);
    }
    if (lasheader1->min_z != lasheader2->min_z)
    {
      lidardouble2string(printstring, lasheader1->min_z, lasheader2->min_z); fprintf(stderr, "  min_z: %s\n", printstring);
    }
    if (fatal_difference)
    {
      fprintf(stderr, "difference was fatal ... no need to check points\n");
      exit(1);
    }
  }

  // check variable header (and user data)

  if (lasreader1->header.offset_to_point_data == lasreader2->header.offset_to_point_data)
  {
    bool already_output = false;
    for (unsigned int u = lasreader1->header.header_size; u < lasreader1->header.offset_to_point_data; u++)
    {
      if (fgetc(file_in1) != fgetc(file_in2))
      {
        if (!already_output)
        {
          fprintf(stderr, "variable header (or user data) is different at byte %d of %d\n", lasreader1->header.header_size - u, lasreader1->header.offset_to_point_data - u);
          already_output = true;
        }
      }
    }
  }
  else
  {
    unsigned int u;
    fprintf(stderr, "skipping check of variable header (or user data) due to length difference\n");
    for (u = lasreader1->header.header_size; u < lasreader1->header.offset_to_point_data; u++) fgetc(file_in1);
    for (u = lasreader2->header.header_size; u < lasreader2->header.offset_to_point_data; u++) fgetc(file_in2);
  }

  // check points

  while (true)
  {
    if (lasreader1->read_point())
    {
      if (lasreader2->read_point())
      {
        if (memcmp((const void*)&(lasreader1->point), (const void*)&(lasreader2->point), sizeof(LASpoint)))
        {
          fprintf(stderr, "point %d of %d is different\n", lasreader1->p_count, lasreader1->npoints);
          if (lasreader1->point.x != lasreader2->point.x)
          {
            fprintf(stderr, "  x: %d %d\n", lasreader1->point.x, lasreader2->point.x);
          }
          if (lasreader1->point.y != lasreader2->point.y)
          {
            fprintf(stderr, "  y: %d %d\n", lasreader1->point.y, lasreader2->point.y);
          }
          if (lasreader1->point.z != lasreader2->point.z)
          {
            fprintf(stderr, "  z: %d %d\n", lasreader1->point.z, lasreader2->point.z);
          }
          if (lasreader1->point.intensity != lasreader2->point.intensity)
          {
            fprintf(stderr, "  intensity: %d %d\n", lasreader1->point.intensity, lasreader2->point.intensity);
          }
          if (lasreader1->point.return_number != lasreader2->point.return_number)
          {
            fprintf(stderr, "  return_number: %d %d\n", lasreader1->point.return_number, lasreader2->point.return_number);
          }
          if (lasreader1->point.number_of_returns_of_given_pulse != lasreader2->point.number_of_returns_of_given_pulse)
          {
            fprintf(stderr, "  number_of_returns_of_given_pulse: %d %d\n", lasreader1->point.number_of_returns_of_given_pulse, lasreader2->point.number_of_returns_of_given_pulse);
          }
          if (lasreader1->point.scan_direction_flag != lasreader2->point.scan_direction_flag)
          {
            fprintf(stderr, "  scan_direction_flag: %d %d\n", lasreader1->point.scan_direction_flag, lasreader2->point.scan_direction_flag);
          }
          if (lasreader1->point.edge_of_flight_line != lasreader2->point.edge_of_flight_line)
          {
            fprintf(stderr, "  edge_of_flight_line: %d %d\n", lasreader1->point.edge_of_flight_line, lasreader2->point.edge_of_flight_line);
          }
          if (lasreader1->point.classification != lasreader2->point.classification)
          {
            fprintf(stderr, "  classification: %d %d\n", lasreader1->point.classification, lasreader2->point.classification);
          }
          if (lasreader1->point.scan_angle_rank != lasreader2->point.scan_angle_rank)
          {
            fprintf(stderr, "  scan_angle_rank: %d %d\n", lasreader1->point.scan_angle_rank, lasreader2->point.scan_angle_rank);
          }
          if (lasreader1->point.user_data != lasreader2->point.user_data)
          {
            fprintf(stderr, "  user_data: %d %d\n", lasreader1->point.user_data, lasreader2->point.user_data);
          }
          if (lasreader1->point.point_source_ID != lasreader2->point.point_source_ID)
          {
            fprintf(stderr, "  point_source_ID: %d %d\n", lasreader1->point.point_source_ID, lasreader2->point.point_source_ID);
          }
          exit(1);
        }
      }
      else
      {
        fprintf(stderr, "%s has fewer points (%d) than %s\n", lasreader2->p_count, file_name_in2, file_name_in1);
        exit(1);
      }
    }
    else
    {
      if (lasreader2->read_point())
      {
        fprintf(stderr, "%s has more points (%d) than %s\n", file_name_in2, lasreader2->p_count, file_name_in1);
        exit(1);
      }
      else
      {
        break;
      }
    }
  }

  fprintf(stderr, "files are identical. both have %d points\n", lasreader1->p_count);

  lasreader1->close();
  lasreader2->close();

  fclose(file_in1);
  fclose(file_in2);

  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -