Go to the documentation of this file.
   40   inline const char* 
name()
 const { 
return "clip_tile"; };
 
   51   inline const char* 
name()
 const { 
return "clip_circle"; };
 
   62   inline const char* 
name()
 const { 
return "clip"; };
 
   73   inline const char* 
name()
 const { 
return "clip_z"; };
 
   84   inline const char* 
name()
 const { 
return "clip_x_below"; };
 
   95   inline const char* 
name()
 const { 
return "clip_x_above"; };
 
  106   inline const char* 
name()
 const { 
return "clip_y_below"; };
 
  117   inline const char* 
name()
 const { 
return "clip_y_above"; };
 
  128   inline const char* 
name()
 const { 
return "clip_z_below"; };
 
  139   inline const char* 
name()
 const { 
return "clip_z_above"; };
 
  150   inline const char* 
name()
 const { 
return "clip_raw_xy"; };
 
  161   inline const char* 
name()
 const { 
return "clip_raw_z"; };
 
  172   inline const char* 
name()
 const { 
return "clip_raw_x_below"; };
 
  183   inline const char* 
name()
 const { 
return "clip_raw_x_above"; };
 
  194   inline const char* 
name()
 const { 
return "clip_raw_y_below"; };
 
  205   inline const char* 
name()
 const { 
return "clip_raw_y_above"; };
 
  216   inline const char* 
name()
 const { 
return "clip_raw_z_below"; };
 
  227   inline const char* 
name()
 const { 
return "clip_raw_z_above"; };
 
  238   inline const char* 
name()
 const { 
return "keep_first"; };
 
  239   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  246   inline const char* 
name()
 const { 
return "keep_middle"; };
 
  247   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  254   inline const char* 
name()
 const { 
return "keep_last"; };
 
  255   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  262   inline const char* 
name()
 const { 
return "drop_first"; };
 
  263   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  270   inline const char* 
name()
 const { 
return "drop_middle"; };
 
  271   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  278   inline const char* 
name()
 const { 
return "drop_last"; };
 
  279   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  286   inline const char* 
name()
 const { 
return "keep_return_mask"; };
 
  298   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  309   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  319   inline const char* 
name()
 const { 
return "drop_scan_direction"; };
 
  330   inline const char* 
name()
 const { 
return "scan_direction_change_only"; };
 
  331   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  342   inline const char* 
name()
 const { 
return "edge_of_flight_line_only"; };
 
  343   inline int get_command(
char* 
string)
 const { 
return sprintf(
string, 
"-%s ", 
name()); };
 
  350   inline const char* 
name()
 const { 
return "keep_scan_angle"; };
 
  361   inline const char* 
name()
 const { 
return "drop_scan_angle_below"; };
 
  372   inline const char* 
name()
 const { 
return "drop_scan_angle_above"; };
 
  383   inline const char* 
name()
 const { 
return "drop_scan_angle_between"; };
 
  394   inline const char* 
name()
 const { 
return "keep_intensity"; };
 
  405   inline const char* 
name()
 const { 
return "drop_intensity_below"; };
 
  416   inline const char* 
name()
 const { 
return "drop_intensity_above"; };
 
  427   inline const char* 
name()
 const { 
return "drop_intensity_between"; };
 
  438   inline const char* 
name()
 const { 
return "keep_classification_mask"; };
 
  449   inline const char* 
name()
 const { 
return "keep_point_source"; };
 
  460   inline const char* 
name()
 const { 
return "keep_point_source_between"; };
 
  471   inline const char* 
name()
 const { 
return "drop_point_source_below"; };
 
  482   inline const char* 
name()
 const { 
return "drop_point_source_above"; };
 
  493   inline const char* 
name()
 const { 
return "drop_point_source_between"; };
 
  504   inline const char* 
name()
 const { 
return "keep_gps_time"; };
 
  515   inline const char* 
name()
 const { 
return "drop_gps_time_below"; };
 
  526   inline const char* 
name()
 const { 
return "drop_gps_time_above"; };
 
  537   inline const char* 
name()
 const { 
return "drop_gps_time_between"; };
 
  548   inline const char* 
name()
 const { 
return "keep_wavepacket_mask"; };
 
  559   inline const char* 
name()
 const { 
return "keep_every_nth"; };
 
  571   inline const char* 
name()
 const { 
return "keep_random_fraction"; };
 
  582   inline const char* 
name()
 const { 
return "thin_with_grid"; };
 
  656     if ((
U32)pos_y >= *array_size)
 
  658       U32 array_size_new = ((pos_y/1024)+1)*1024;
 
  662         *array = (
U32**)realloc(*array, array_size_new*
sizeof(
U32*));
 
  663         *array_sizes = (
U16*)realloc(*array_sizes, array_size_new*
sizeof(
U16));
 
  668         *array = (
U32**)malloc(array_size_new*
sizeof(
U32*));
 
  669         *array_sizes = (
U16*)malloc(array_size_new*
sizeof(
U16));
 
  671       for (
U32 i = *array_size; i < array_size_new; i++)
 
  674         (*array_sizes)[i] = 0;
 
  676       *array_size = array_size_new;
 
  681       (*ankers)[pos_y] = pos_x;
 
  685     U32 pos_x_pos = pos_x/32;
 
  686     if (pos_x_pos >= (*array_sizes)[pos_y])
 
  688       U32 array_sizes_new = ((pos_x_pos/256)+1)*256;
 
  689       if ((*array_sizes)[pos_y])
 
  691         (*array)[pos_y] = (
U32*)realloc((*array)[pos_y], array_sizes_new*
sizeof(
U32));
 
  695         (*array)[pos_y] = (
U32*)malloc(array_sizes_new*
sizeof(
U32));
 
  697       for (
U16 i = (*array_sizes)[pos_y]; i < array_sizes_new; i++)
 
  699         (*array)[pos_y][i] = 0;
 
  701       (*array_sizes)[pos_y] = array_sizes_new;
 
  703     U32 pos_x_bit = 1 << (pos_x%32);
 
  704     if ((*array)[pos_y][pos_x_pos] & pos_x_bit) 
return TRUE;
 
  705     (*array)[pos_y][pos_x_pos] |= pos_x_bit;
 
  807   fprintf(stderr,
"Filter points based on their coordinates.\n");
 
  808   fprintf(stderr,
"  -clip_tile 631000 4834000 1000 (ll_x, ll_y, size)\n");
 
  809   fprintf(stderr,
"  -clip_circle 630250.00 4834750.00 100 (x, y, radius)\n");
 
  810   fprintf(stderr,
"  -clip 630000 4834000 631000 4836000 (min_x, min_y, max_x, max_y)\n");
 
  811   fprintf(stderr,
"  -clip_x_below 630000.50 (min_x)\n");
 
  812   fprintf(stderr,
"  -clip_y_below 4834500.25 (min_y)\n");
 
  813   fprintf(stderr,
"  -clip_x_above 630500.50 (max_x)\n");
 
  814   fprintf(stderr,
"  -clip_y_above 4836000.75 (max_y)\n");
 
  815   fprintf(stderr,
"  -clip_z 11.125 130.725 (min_z, max_z)\n");
 
  816   fprintf(stderr,
"  -clip_z_below 11.125 (min_z)\n");
 
  817   fprintf(stderr,
"  -clip_z_above 130.725 (max_z)\n");
 
  818   fprintf(stderr,
"Filter points based on their return number.\n");
 
  819   fprintf(stderr,
"  -first_only -keep_first -drop_first\n");
 
  820   fprintf(stderr,
"  -last_only -keep_last -drop_last\n");
 
  821   fprintf(stderr,
"  -keep_middle -drop_middle\n");
 
  822   fprintf(stderr,
"  -keep_return 1 2 3\n");
 
  823   fprintf(stderr,
"  -drop_return 3 4\n");
 
  824   fprintf(stderr,
"  -keep_single -drop_single\n");
 
  825   fprintf(stderr,
"  -keep_double -drop_double\n");
 
  826   fprintf(stderr,
"  -keep_triple -drop_triple\n");
 
  827   fprintf(stderr,
"  -keep_quadruple -drop_quadruple\n");
 
  828   fprintf(stderr,
"  -keep_quintuple -drop_quintuple\n");
 
  829   fprintf(stderr,
"Filter points based on the scanline flags.\n");
 
  830   fprintf(stderr,
"  -drop_scan_direction 0\n");
 
  831   fprintf(stderr,
"  -scan_direction_change_only\n");
 
  832   fprintf(stderr,
"  -edge_of_flight_line_only\n");
 
  833   fprintf(stderr,
"Filter points based on their intensity.\n");
 
  834   fprintf(stderr,
"  -keep_intensity 20 380\n");
 
  835   fprintf(stderr,
"  -drop_intensity_below 20\n");
 
  836   fprintf(stderr,
"  -drop_intensity_above 380\n");
 
  837   fprintf(stderr,
"  -drop_intensity_between 4000 5000\n");
 
  838   fprintf(stderr,
"Filter points based on their classification.\n");
 
  839   fprintf(stderr,
"  -keep_class 1 3 7\n");
 
  840   fprintf(stderr,
"  -drop_class 4 2\n");
 
  841   fprintf(stderr,
"Filter points based on their point source ID.\n");
 
  842   fprintf(stderr,
"  -keep_point_source 3\n");
 
  843   fprintf(stderr,
"  -keep_point_source_between 2 6\n");
 
  844   fprintf(stderr,
"  -drop_point_source_below 6\n");
 
  845   fprintf(stderr,
"  -drop_point_source_above 15\n");
 
  846   fprintf(stderr,
"  -drop_point_source_between 17 21\n");
 
  847   fprintf(stderr,
"Filter points based on their scan angle.\n");
 
  848   fprintf(stderr,
"  -keep_scan_angle -15 15\n");
 
  849   fprintf(stderr,
"  -drop_scan_angle_below -15\n");
 
  850   fprintf(stderr,
"  -drop_scan_angle_above 15\n");
 
  851   fprintf(stderr,
"  -drop_scan_angle_between -25 -23\n");
 
  852   fprintf(stderr,
"Filter points based on their gps time.\n");
 
  853   fprintf(stderr,
"  -keep_gps_time 11.125 130.725\n");
 
  854   fprintf(stderr,
"  -drop_gps_time_below 11.125\n");
 
  855   fprintf(stderr,
"  -drop_gps_time_above 130.725\n");
 
  856   fprintf(stderr,
"  -drop_gps_time_between 22.0 48.0\n");
 
  857   fprintf(stderr,
"Filter points based on their wavepacket.\n");
 
  858   fprintf(stderr,
"  -keep_wavepacket 1 2\n");
 
  859   fprintf(stderr,
"  -drop_wavepacket 0\n");
 
  860   fprintf(stderr,
"Filter points with simple thinning.\n");
 
  861   fprintf(stderr,
"  -keep_every_nth 2\n");
 
  862   fprintf(stderr,
"  -keep_random_fraction 0.1\n");
 
  863   fprintf(stderr,
"  -thin_with_grid 1.0\n");
 
  870   U32 keep_return_mask = 0;
 
  871   U32 drop_return_mask = 0;
 
  873   U32 keep_classification_mask = 0;
 
  874   U32 drop_classification_mask = 0;
 
  876   U32 keep_wavepacket_mask = 0;
 
  877   U32 drop_wavepacket_mask = 0;
 
  879   for (i = 1; i < 
argc; i++)
 
  881     if (
argv[i][0] == 
'\0')
 
  885     else if (strcmp(
argv[i],
"-h") == 0 || strcmp(
argv[i],
"-help") == 0)
 
  890     else if (strcmp(
argv[i],
"-clip_tile") == 0)
 
  894         fprintf(stderr,
"ERROR: '%s' needs 3 arguments: llx lly size\n", 
argv[i]);
 
  900     else if (strcmp(
argv[i],
"-clip_circle") == 0)
 
  904         fprintf(stderr,
"ERROR: '%s' needs 3 arguments: center_x center_y radius\n", 
argv[i]);
 
  910     else if (strcmp(
argv[i],
"-clip") == 0 || strcmp(
argv[i],
"-clip_xy") == 0)
 
  914         fprintf(stderr,
"ERROR: '%s' needs 4 arguments: min_x min_y max_x max_y\n", 
argv[i]);
 
  920     else if (strcmp(
argv[i],
"-clip_z") == 0)
 
  924         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min_z max_z\n", 
argv[i]);
 
  930     else if (strcmp(
argv[i],
"-clip_x_below") == 0)
 
  934         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_x\n", 
argv[i]);
 
  938       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
  940     else if (strcmp(
argv[i],
"-clip_y_below") == 0)
 
  944         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_y\n", 
argv[i]);
 
  948       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
  950     else if (strcmp(
argv[i],
"-clip_z_below") == 0)
 
  954         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_z\n", 
argv[i]);
 
  958       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
  960     else if (strcmp(
argv[i],
"-clip_x_above") == 0)
 
  964         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_x\n", 
argv[i]);
 
  968       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
  970     else if (strcmp(
argv[i],
"-clip_y_above") == 0)
 
  974         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_y\n", 
argv[i]);
 
  978       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
  980     else if (strcmp(
argv[i],
"-clip_z_above") == 0)
 
  984         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_z\n", 
argv[i]);
 
  988       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
  990     else if (strcmp(
argv[i],
"-clip_raw") == 0 || strcmp(
argv[i],
"-clip_raw_xy") == 0)
 
  994         fprintf(stderr,
"ERROR: '%s' needs 4 arguments: min_raw_x min_raw_y max_raw_x max_raw_y\n", 
argv[i]);
 
 1000     else if (strcmp(
argv[i],
"-clip_raw_z") == 0)
 
 1004         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min_raw_z max_raw_z\n", 
argv[i]);
 
 1010     else if (strcmp(
argv[i],
"-clip_raw_x_below") == 0)
 
 1014         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_raw_x\n", 
argv[i]);
 
 1018       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1020     else if (strcmp(
argv[i],
"-clip_raw_y_below") == 0)
 
 1024         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_raw_y\n", 
argv[i]);
 
 1028       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1030     else if (strcmp(
argv[i],
"-clip_raw_z_below") == 0)
 
 1034         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_raw_z\n", 
argv[i]);
 
 1038       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1040     else if (strcmp(
argv[i],
"-clip_raw_x_above") == 0)
 
 1044         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_raw_x\n", 
argv[i]);
 
 1048       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1050     else if (strcmp(
argv[i],
"-clip_raw_y_above") == 0)
 
 1054         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_raw_y\n", 
argv[i]);
 
 1058       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1060     else if (strcmp(
argv[i],
"-clip_raw_z_above") == 0)
 
 1064         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_raw_z\n", 
argv[i]);
 
 1068       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1070     else if ((strcmp(
argv[i],
"-first_only") == 0) || (strcmp(
argv[i],
"-keep_first") == 0))
 
 1075     else if (strcmp(
argv[i],
"-keep_middle") == 0)
 
 1080     else if ((strcmp(
argv[i],
"-last_only") == 0) || (strcmp(
argv[i],
"-keep_last") == 0))
 
 1085     else if (strcmp(
argv[i],
"-drop_first") == 0)
 
 1090     else if (strcmp(
argv[i],
"-drop_middle") == 0)
 
 1095     else if (strcmp(
argv[i],
"-drop_last") == 0)
 
 1100     else if (strcmp(
argv[i],
"-keep_return") == 0)
 
 1104         fprintf(stderr,
"ERROR: '%s' needs at least 1 argument: return_number\n", 
argv[i]);
 
 1111         keep_return_mask |= (1 << atoi(
argv[i]));
 
 1114       } 
while ((i < 
argc) && (
'0' <= *
argv[i]) && (*
argv[i] <= 
'9'));
 
 1117     else if (strcmp(
argv[i],
"-keep_return_mask") == 0)
 
 1121         fprintf(stderr,
"ERROR: '%s' needs 1 argument: return_mask\n", 
argv[i]);
 
 1124       keep_return_mask = atoi(
argv[i+1]);
 
 1125       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1127     else if (strcmp(
argv[i],
"-drop_return") == 0)
 
 1131         fprintf(stderr,
"ERROR: '%s' needs at least 1 argument: return_number\n", 
argv[i]);
 
 1138         drop_return_mask |= (1 << atoi(
argv[i]));
 
 1141       } 
while ((i < 
argc) && (
'0' <= *
argv[i]) && (*
argv[i] <= 
'9'));
 
 1144     else if (strcmp(
argv[i],
"-keep_single") == 0 || strcmp(
argv[i],
"-single_only") == 0)
 
 1149     else if (strcmp(
argv[i],
"-keep_double") == 0 || strcmp(
argv[i],
"-double_only") == 0)
 
 1154     else if (strcmp(
argv[i],
"-keep_triple") == 0 || strcmp(
argv[i],
"-triple_only") == 0)
 
 1159     else if (strcmp(
argv[i],
"-keep_quadruple") == 0 || strcmp(
argv[i],
"-quadruple_only") == 0)
 
 1164     else if (strcmp(
argv[i],
"-keep_quintuple") == 0 || strcmp(
argv[i],
"-quintuple_only") == 0)
 
 1169     else if (strcmp(
argv[i],
"-drop_single") == 0)
 
 1174     else if (strcmp(
argv[i],
"-drop_double") == 0)
 
 1179     else if (strcmp(
argv[i],
"-drop_triple") == 0)
 
 1184     else if (strcmp(
argv[i],
"-drop_quadruple") == 0)
 
 1189     else if (strcmp(
argv[i],
"-drop_quintuple") == 0)
 
 1194     else if (strcmp(
argv[i],
"-drop_scan_direction") == 0)
 
 1197       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1199     else if (strcmp(
argv[i],
"-scan_direction_change_only") == 0 || strcmp(
argv[i],
"-scan_direction_change") == 0)
 
 1204     else if (strcmp(
argv[i],
"-edge_of_flight_line_only") == 0 || strcmp(
argv[i],
"-edge_of_flight_line") == 0)
 
 1209     else if (strcmp(
argv[i],
"-keep_intensity") == 0)
 
 1213         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min max\n", 
argv[i]);
 
 1219     else if (strcmp(
argv[i],
"-drop_intensity_above") == 0)
 
 1223         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max\n", 
argv[i]);
 
 1227       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1229     else if (strcmp(
argv[i],
"-drop_intensity_below") == 0)
 
 1233         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min\n", 
argv[i]);
 
 1237       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1239     else if (strcmp(
argv[i],
"-drop_intensity_between") == 0)
 
 1243         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min max\n", 
argv[i]);
 
 1249     else if (strcmp(
argv[i],
"-keep_scan_angle") == 0 || strcmp(
argv[i],
"-keep_scan") == 0)
 
 1253         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min max\n", 
argv[i]);
 
 1259     else if (strcmp(
argv[i],
"-drop_scan_angle_above") == 0 || strcmp(
argv[i],
"-drop_scan_above") == 0)
 
 1263         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max\n", 
argv[i]);
 
 1267       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1269     else if (strcmp(
argv[i],
"-drop_scan_angle_below") == 0 || strcmp(
argv[i],
"-drop_scan_below") == 0)
 
 1273         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min\n", 
argv[i]);
 
 1277       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1279     else if (strcmp(
argv[i],
"-drop_scan_angle_between") == 0 || strcmp(
argv[i],
"-drop_scan_between") == 0)
 
 1283         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min max\n", 
argv[i]);
 
 1289     else if (strcmp(
argv[i],
"-keep_classification") == 0 || strcmp(
argv[i],
"-keep_class") == 0)
 
 1293         fprintf(stderr,
"ERROR: '%s' needs 1 at least argument: classification\n", 
argv[i]);
 
 1300         keep_classification_mask |= (1 << atoi(
argv[i]));
 
 1303       } 
while ((i < 
argc) && (
'0' <= *
argv[i]) && (*
argv[i] <= 
'9'));
 
 1306     else if (strcmp(
argv[i],
"-keep_classification_mask") == 0)
 
 1310         fprintf(stderr,
"ERROR: '%s' needs 1 argument: classifications_mask\n", 
argv[i]);
 
 1313       keep_classification_mask = atoi(
argv[i+1]);
 
 1314       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1316     else if (strcmp(
argv[i],
"-drop_classification") == 0 || strcmp(
argv[i],
"-drop_class") == 0)
 
 1320         fprintf(stderr,
"ERROR: '%s' needs at least 1 argument: classification\n", 
argv[i]);
 
 1327         drop_classification_mask |= (1 << atoi(
argv[i]));
 
 1330       } 
while ((i < 
argc) && (
'0' <= *
argv[i]) && (*
argv[i] <= 
'9'));
 
 1333     else if (strcmp(
argv[i],
"-keep_wavepacket") == 0)
 
 1337         fprintf(stderr,
"ERROR: '%s' needs 1 at least argument: index\n", 
argv[i]);
 
 1344         keep_wavepacket_mask |= (1 << atoi(
argv[i]));
 
 1347       } 
while ((i < 
argc) && (
'0' <= *
argv[i]) && (*
argv[i] <= 
'9'));
 
 1350     else if (strcmp(
argv[i],
"-drop_wavepacket") == 0)
 
 1354         fprintf(stderr,
"ERROR: '%s' needs at least 1 argument: index\n", 
argv[i]);
 
 1361         drop_wavepacket_mask |= (1 << atoi(
argv[i]));
 
 1364       } 
while ((i < 
argc) && (
'0' <= *
argv[i]) && (*
argv[i] <= 
'9'));
 
 1367     else if (strcmp(
argv[i],
"-keep_point_source") == 0)
 
 1371         fprintf(stderr,
"ERROR: '%s' needs 1 argument: ID\n", 
argv[i]);
 
 1375       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1377     else if (strcmp(
argv[i],
"-keep_point_source_between") == 0)
 
 1381         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min_ID max_ID\n", 
argv[i]);
 
 1387     else if (strcmp(
argv[i],
"-drop_point_source_below") == 0)
 
 1391         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_ID\n", 
argv[i]);
 
 1395       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1397     else if (strcmp(
argv[i],
"-drop_point_source_above") == 0)
 
 1401         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_ID\n", 
argv[i]);
 
 1405       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1407     else if (strcmp(
argv[i],
"-drop_point_source_between") == 0)
 
 1411         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min_ID max_ID\n", 
argv[i]);
 
 1417     else if (strcmp(
argv[i],
"-keep_gps_time") == 0 || strcmp(
argv[i],
"-keep_gpstime") == 0)
 
 1421         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min max\n", 
argv[i]);
 
 1427     else if (strcmp(
argv[i],
"-drop_gps_time_above") == 0 || strcmp(
argv[i],
"-drop_gpstime_above") == 0)
 
 1431         fprintf(stderr,
"ERROR: '%s' needs 1 argument: max_gps_time\n", 
argv[i]);
 
 1435       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1437     else if (strcmp(
argv[i],
"-drop_gps_time_below") == 0 || strcmp(
argv[i],
"-drop_gpstime_below") == 0)
 
 1441         fprintf(stderr,
"ERROR: '%s' needs 1 argument: min_gps_time\n", 
argv[i]);
 
 1445       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1447     else if (strcmp(
argv[i],
"-drop_gps_time_between") == 0 || strcmp(
argv[i],
"-drop_gpstime_between") == 0)
 
 1451         fprintf(stderr,
"ERROR: '%s' needs 2 arguments: min max\n", 
argv[i]);
 
 1457     else if (strcmp(
argv[i],
"-keep_every_nth") == 0)
 
 1461         fprintf(stderr,
"ERROR: '%s' needs 1 argument: nth\n", 
argv[i]);
 
 1465       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1467     else if (strcmp(
argv[i],
"-keep_random_fraction") == 0)
 
 1471         fprintf(stderr,
"ERROR: '%s' needs 1 argument: fraction\n", 
argv[i]);
 
 1475       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1477     else if (strcmp(
argv[i],
"-thin_with_grid") == 0)
 
 1481         fprintf(stderr,
"ERROR: '%s' needs 1 argument: grid_spacing\n", 
argv[i]);
 
 1485       *
argv[i]=
'\0'; *
argv[i+1]=
'\0'; i+=1;
 
 1489   if (drop_return_mask)
 
 1491     if (keep_return_mask == 0) keep_return_mask = 255 & ~drop_return_mask;
 
 1495   if (drop_classification_mask)
 
 1497     if (keep_classification_mask == 0) keep_classification_mask = ~drop_classification_mask;
 
 1501   if (drop_wavepacket_mask)
 
 1503     if (keep_wavepacket_mask == 0) keep_wavepacket_mask = ~drop_wavepacket_mask;
 
  
int get_command(char *string) const
I32 above_point_source_id
LAScriterionClipRawZBelow(I32 below_z)
I32 below_point_source_id
LAScriterionKeepScanAngle(I32 below_scan, I32 above_scan)
int get_command(char *string) const
BOOL filter(const LASpoint *point)
LAScriterionScanDirectionChangeOnly()
int get_command(char *string) const
int get_command(char *string) const
U32 drop_classification_mask
BOOL filter(const LASpoint *point)
~LAScriterionThinWithGrid()
int get_command(char *string) const
int unparse(char *string) const
int get_command(char *string) const
int get_command(char *string) const
const char * name() const
const char * name() const
BOOL filter(const LASpoint *point)
LAScriterionDropIntensityBetween(I32 below_intensity, I32 above_intensity)
int get_command(char *string) const
I32 above_point_source_id
const char * name() const
const char * name() const
const char * name() const
I32 below_point_source_id
const char * name() const
BOOL filter(const LASpoint *point)
const char * name() const
BOOL inside_tile(const F32 ll_x, const F32 ll_y, const F32 ur_x, const F32 ur_y) const
int get_command(char *string) const
int get_command(char *string) const
LAScriterionClipRawYAbove(I32 above_y)
LAScriterionDropGpsTimeAbove(F64 above_gpstime)
const char * name() const
int get_command(char *string) const
int get_command(char *string) const
BOOL filter(const LASpoint *point)
LAScriterionKeepReturns(U32 keep_return_mask)
int get_command(char *string) const
const char * name() const
BOOL filter(const LASpoint *point)
const char * name() const
int get_command(char *string) const
BOOL filter(const LASpoint *point)
int get_command(char *string) const
const char * name() const
const char * name() const
BOOL filter(const LASpoint *point)
LAScriterionDropPointSourceBelow(I32 below_point_source_id)
BOOL filter(const LASpoint *point)
const char * name() const
int get_command(char *string) const
const char * name() const
const char * name() const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
int get_command(char *string) const
BOOL filter(const LASpoint *point)
int get_command(char *string) const
const char * name() const
int get_command(char *string) const
LAScriterionDropGpsTimeBetween(F64 below_gpstime, F64 above_gpstime)
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
LAScriterionClipRawZ(I32 below_z, I32 above_z)
BOOL filter(const LASpoint *point)
const char * name() const
I32 above_point_source_id
const char * name() const
BOOL filter(const LASpoint *point)
int get_command(char *string) const
void add_criterion(LAScriterion *criterion)
const char * name() const
LAScriterionClipZAbove(F64 above_z)
LAScriterionClipTile(F32 ll_x, F32 ll_y, F32 tile_size)
const char * name() const
const char * name() const
LAScriterionClipYAbove(F64 above_y)
const char * name() const
int get_command(char *string) const
const char * name() const
LAScriterionDropSpecificNumberOfReturns(U32 numberOfReturns)
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
int get_command(char *string) const
BOOL filter(const LASpoint *point)
const char * name() const
int get_command(char *string) const
const char * name() const
const char * name() const
const char * name() const
BOOL inside_circle(const F64 center_x, const F64 center_y, F64 squared_radius) const
int get_command(char *string) const
LAScriterionClipCircle(F64 x, F64 y, F64 radius)
const char * name() const
int get_command(char *string) const
LAScriterionClipRawXAbove(I32 above_x)
BOOL parse(int argc, char *argv[])
LAScriterionKeepGpsTime(F64 below_gpstime, F64 above_gpstime)
int get_command(char *string) const
const char * name() const
BOOL filter(const LASpoint *point)
const char * name() const
const char * name() const
int get_command(char *string) const
int get_command(char *string) const
BOOL filter(const LASpoint *point)
int get_command(char *string) const
BOOL filter(const LASpoint *point)
int get_command(char *string) const
int get_command(char *string) const
int get_command(char *string) const
const char * name() const
const char * name() const
BOOL filter(const LASpoint *point)
LAScriterionClipRawXBelow(I32 below_x)
LAScriterionDropPointSourceBetween(I32 below_point_source_id, I32 above_point_source_id)
int get_command(char *string) const
BOOL filter(const LASpoint *point)
const char * name() const
int get_command(char *string) const
I32 below_point_source_id
LAScriterionDropIntensityAbove(I32 above_intensity)
BOOL filter(const LASpoint *point)
int get_command(char *string) const
LAScriterionClipYBelow(F64 below_y)
LAScriterionClipXBelow(F64 below_x)
LAScriterionKeepEveryNth(I32 every)
int get_command(char *string) const
LAScriterionKeepRandomFraction(F32 fraction)
const char * name() const
BOOL filter(const LASpoint *point)
LAScriterionKeepClassifications(U32 keep_classification_mask)
const char * name() const
BOOL filter(const LASpoint *point)
void addScanDirectionChangeOnly()
LAScriterionClipRawZAbove(I32 above_z)
BOOL filter(const LASpoint *point)
LAScriterionDropIntensityBelow(I32 below_intensity)
BOOL filter(const LASpoint *point)
const char * name() const
BOOL inside_rectangle(const F64 r_min_x, const F64 r_min_y, const F64 r_max_x, const F64 r_max_y) const
const char * name() const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
int get_command(char *string) const
LAScriterionClipRawXY(I32 below_x, I32 below_y, I32 above_x, I32 above_y)
int get_command(char *string) const
int get_command(char *string) const
LAScriterionDropPointSourceAbove(I32 above_point_source_id)
BOOL filter(const LASpoint *point)
LAScriterionDropScanDirection(I32 scan_direction)
const char * name() const
LAScriterionClipZ(F64 below_z, F64 above_z)
int get_command(char *string) const
LAScriterionKeepWavepackets(U32 keep_wavepacket_mask)
int get_command(char *string) const
BOOL filter(const LASpoint *point)
LAScriterionKeepSpecificNumberOfReturns(U32 numberOfReturns)
BOOL filter(const LASpoint *point)
int get_command(char *string) const
int get_command(char *string) const
const char * name() const
BOOL filter(const LASpoint *point)
const char * name() const
BOOL filter(const LASpoint *point)
LAScriterionKeepPointSource(I32 point_source_id)
LAScriterionKeepIntensity(I32 below_intensity, I32 above_intensity)
U8 number_of_returns_of_given_pulse
BOOL filter(const LASpoint *point)
LAScriterionClipZBelow(F64 below_z)
int get_command(char *string) const
virtual int get_command(char *string) const =0
void addClipCircle(F64 x, F64 y, F64 radius)
int get_command(char *string) const
const char * name() const
BOOL filter(const LASpoint *point)
const char * name() const
LAScriterionClipRawYBelow(I32 below_y)
const char * name() const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
const char * name() const
int get_command(char *string) const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
const char * name() const
LAScriterionDropGpsTimeBelow(F64 below_gpstime)
LAScriterionKeepPointSourceBetween(I32 below_point_source_id, I32 above_point_source_id)
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
LAScriterionDropScanAngleBetween(I32 below_scan, I32 above_scan)
int get_command(char *string) const
LAScriterionThinWithGrid(F32 grid_spacing)
int get_command(char *string) const
const char * name() const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
const char * name() const
const char * name() const
int get_command(char *string) const
int get_command(char *string) const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
const char * name() const
LAScriterionDropScanAngleBelow(I32 below_scan)
LAScriterionDropScanAngleAbove(I32 above_scan)
LAScriterionClipXAbove(F64 above_x)
LAScriterionClipXY(F64 below_x, F64 below_y, F64 above_x, F64 above_y)
const char * name() const
int get_command(char *string) const
BOOL filter(const LASpoint *point)
BOOL filter(const LASpoint *point)
int get_command(char *string) const
const char * name() const
lvr2
Author(s): Thomas Wiemann 
, Sebastian Pütz , Alexander Mock , Lars Kiesow , Lukas Kalbertodt , Tristan Igelbrink , Johan M. von Behren , Dominik Feldschnieders , Alexander Löhr 
autogenerated on Wed Mar 2 2022 00:37:23