[liblas] 07/15: Drop patch 0001-remove-old-LAStools-utilities-that-don-t-belong-in-liblas.patch, included upstream.

Bas Couwenberg sebastic at xs4all.nl
Sun Aug 3 12:17:28 UTC 2014


This is an automated email from the git hooks/post-receive script.

sebastic-guest pushed a commit to branch experimental
in repository liblas.

commit 00ecb35f82fba4795d0471c8d708c8e4f8b29414
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sun Aug 3 12:19:17 2014 +0200

    Drop patch 0001-remove-old-LAStools-utilities-that-don-t-belong-in-liblas.patch, included upstream.
---
 ...ols-utilities-that-don-t-belong-in-liblas.patch | 2201 --------------------
 debian/patches/series                              |    1 -
 2 files changed, 2202 deletions(-)

diff --git a/debian/patches/0001-remove-old-LAStools-utilities-that-don-t-belong-in-liblas.patch b/debian/patches/0001-remove-old-LAStools-utilities-that-don-t-belong-in-liblas.patch
deleted file mode 100644
index ad4c951..0000000
--- a/debian/patches/0001-remove-old-LAStools-utilities-that-don-t-belong-in-liblas.patch
+++ /dev/null
@@ -1,2201 +0,0 @@
-From 834f1ab517d6e93233fe10391a78ae390ceb200b Mon Sep 17 00:00:00 2001
-From: Howard Butler <hobu.inc at gmail.com>
-Date: Fri, 6 Jun 2014 16:42:36 -0500
-Subject: remove old LAStools utilities that don't belong in liblas #39
-Origin: https://github.com/libLAS/libLAS/commit/834f1ab517d6e93233fe10391a78ae390ceb200b
-
-
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -142,13 +142,13 @@ else()
-   # Recommended C++ compilation flags
-   # -Weffc++
-   set(LIBLAS_COMMON_CXX_FLAGS
--	"-pedantic -ansi -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wfloat-equal -Wredundant-decls -Wno-long-long")
-+	" -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wfloat-equal -Wredundant-decls -Wno-long-long")
- 
-   if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
- 
-     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBLAS_COMMON_CXX_FLAGS}")
-     if (CMAKE_COMPILER_IS_GNUCXX)
--      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98")
-+      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -ansi")
-     endif()
- 
-   elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER}" MATCHES "clang")
---- a/apps/CMakeLists.txt
-+++ b/apps/CMakeLists.txt
-@@ -14,12 +14,8 @@ include_directories(
- ###############################################################################
- # Collect programs to build
- 
--set(LASINFO_OLD lasinfo-old)
- set(LASINFO lasinfo)
--set(LASMERGE lasmerge)
- set(LAS2LAS las2las)
--set(LAS2LAS_OLD las2las-old)
--set(LAS2TXT_OLD las2txt-old)
- set(LAS2TXT las2txt)
- set(TXT2LAS txt2las)
- set(TS2LAS ts2las)
-@@ -45,8 +41,8 @@ endif()
- 
- 
- set(LIBLAS_UTILITIES
--    ${LASINFO_OLD} ${LASINFO} ${LASMERGE} ${LAS2LAS} ${LAS2TXT_OLD} ${TXT2LAS} 
--    ${LAS2OGR} ${LAS2LAS} ${LAS2LAS_OLD} ${LASBLOCK} ${TS2LAS}  ${LAS2TXT} )
-+    ${LASINFO} ${LAS2LAS} ${TXT2LAS} 
-+    ${LAS2OGR} ${LAS2LAS} ${LASBLOCK} ${TS2LAS}  ${LAS2TXT} )
- 
- # TODO: Experimental and requires testing --mloskot
- # Generate user-specific settings for Visual Studio project
-@@ -84,20 +80,6 @@ link_directories(${Boost_LIBRARY_DIRS})
- #    add_executable(lasschematest lasschematest.cpp laskernel.cpp)
- #    target_link_libraries(lasschematest ${APPS_CPP_DEPENDENCIES} ${LIBXML2_LIBRARIES})
- 
--# Build lasinfo
--if(LASINFO_OLD)
--    set(LASINFO_OLD_SRC lascommon.c ${LASINFO_OLD}.c)
--    add_executable(${LASINFO_OLD} ${LASINFO_OLD_SRC})
--    target_link_libraries(${LASINFO_OLD} ${LIBLAS_C_LIB_NAME})
--endif()
--
--# Build las2las
--if(LAS2LAS_OLD)
--    set(LAS2LAS_OLD_SRC lascommon.c ${LAS2LAS_OLD}.c)
--    add_executable(${LAS2LAS_OLD} ${LAS2LAS_OLD_SRC})
--    target_link_libraries(${LAS2LAS_OLD} ${LIBLAS_C_LIB_NAME})
--endif()
--
- 
- if(LAS2LAS)
-     add_executable(${LAS2LAS} las2las.cpp laskernel.cpp)
-@@ -109,13 +91,6 @@ if(LASINFO)
-     target_link_libraries(${LASINFO} ${APPS_CPP_DEPENDENCIES}  )
- endif()
- 
--# Build las2txt
--if(LAS2TXT_OLD)
--    set(LAS2TXT_OLD_SRC lascommon.c ${LAS2TXT}.c)
--    add_executable(${LAS2TXT_OLD} ${LAS2TXT_OLD_SRC})
--    target_link_libraries(${LAS2TXT_OLD} ${LIBLAS_C_LIB_NAME})
--endif()
--
- if(LAS2TXT)
-     add_executable( ${LAS2TXT}  las2txt.cpp laskernel.cpp )
-     target_link_libraries(${LAS2TXT} ${APPS_CPP_DEPENDENCIES}  )
-@@ -133,13 +108,6 @@ if(TS2LAS)
-     target_link_libraries(${TS2LAS} ${APPS_CPP_DEPENDENCIES} )
- endif()
- 
--# Build lasmerge
--if(LASMERGE)
--    set(LASMERGE_SRC lascommon.c ${LASMERGE}.c)
--    add_executable(${LASMERGE} ${LASMERGE_SRC})
--    target_link_libraries(${LASMERGE} ${LIBLAS_C_LIB_NAME})
--endif()
--
- # Build lasblock
- if(LASBLOCK)
-     set(LASBLOCK_SRC lasblock.cpp laskernel.cpp)
---- a/apps/las2las-old.c
-+++ /dev/null
-@@ -1,1165 +0,0 @@
--/***************************************************************************
-- * $Id$
-- * $Date$
-- *
-- * Project: libLAS -- C/C++ read/write library for LAS LIDAR data
-- * Purpose: LAS translation with optional configuration
-- * Author:  Martin Isenburg isenburg at cs.unc.edu 
-- ***************************************************************************
-- * Copyright (c) 2007, Martin Isenburg isenburg at cs.unc.edu 
-- *
-- * See LICENSE.txt in this source distribution for more information.
-- **************************************************************************/
--
--#include "liblas.h"
--#include "lascommon.h"
--
--/* std */
--#include <assert.h>
--#include <time.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--
--#ifdef _WIN32
--#define compare_no_case(a,b,n)  _strnicmp( (a), (b), (n) )
--#else
--#define compare_no_case(a,b,n)  strncasecmp( (a), (b), (n) )
--#endif
--
--LASPointSummary* SummarizePoints(LASReaderH reader);
--void print_point_summary(FILE *file, LASPointSummary* summary, LASHeaderH header);
--void print_point(FILE *file, LASPointH point);
--void print_header(FILE *file, LASHeaderH header, const char* file_name, int bSkipVLR);
--void repair_header(FILE *file, LASHeaderH header, LASPointSummary* summary) ;
--
--#define LAS_FORMAT_10 0
--#define LAS_FORMAT_11 1
--#define LAS_FORMAT_12 2
--
--void do_bulk_copy(const char* infile, size_t in_start_point, const char* outfile)
--{
--    /* bulk copy assumes that the header has already been written to outfile 
--       as it is supposed to be, and that we're just going to copy all of the 
--       points in infile as they are.  
--    */
--    FILE* file_out = 0;
--    FILE* file_in = 0;
--    
--    size_t read = 0;
--    size_t written = 0;
--    size_t size = 1000;
--
--    char *buffer = 0;
--    
--    buffer = (char*) malloc(size * sizeof(char));
--    
--    if (buffer == 0) {
--        LASError_Print("unable to allocate buffer copy");
--        exit(1);
--    }
--    file_in = fopen(infile, "rb");
--    fseek(file_in, in_start_point, SEEK_SET);
--    
--    if (file_in == 0) {
--        LASError_Print("input filename not valid for bulk copy");
--        exit(1);
--    }
--    file_out = fopen(outfile, "ab+");
--    if (file_out == 0) {
--        LASError_Print("output filename not valid for bulk copy");
--        exit(1);
--    }
--    
--    while (feof(file_in) == 0) {
--        read = fread(buffer, 1, size, file_in);
--        written = fwrite(buffer, 1, read, file_out);
--        
--        if (read != written) {
--            LASError_Print("unable to write data in bulk copy");
--            exit(1);
--        }
--    }
--    
--    fclose(file_in);
--    fclose(file_out);
--    free(buffer);
--}
--
--
--void usage()
--{
--    fprintf(stderr,"----------------------------------------------------------\n");
--    fprintf(stderr,"    las2las-old (version %s) usage:\n", LAS_GetFullVersion());
--    fprintf(stderr,"----------------------------------------------------------\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Clip las file to a bounding box, throwing out points that have invalid data:\n");
--    fprintf(stderr,"  las2las-old -i in.las -clip 63000000 483450000 63050000 483500000 -o out.las --skip_invalid\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Read from stdin, eliminate intensities below 2000, and write to stdout:\n");
--    fprintf(stderr,"  las2las-old --eliminate_intensity_below 2000 --stdin --stdout < in.las > out.las \n");
--    fprintf(stderr,"\n");
--    
--    fprintf(stderr,"Eliminate return number two:\n");
--    fprintf(stderr,"  las2las-old -i in.las -eliminate_return 2 -o out.las\n");
--    fprintf(stderr,"\n");
--    
--    fprintf(stderr,"Eliminate scan angles above 15:\n");
--    fprintf(stderr,"  las2las-old -i in.las -eliminate_scan_angle_above 15 -o out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Eliminate intensities below 1000:\n");
--    fprintf(stderr,"  las2las-old -i in.las -eliminate_intensity_below 1000 --stdout > out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Eliminate intensities below 1000 and classifications that equal 2 (ground):\n");
--    fprintf(stderr,"  las2las-old -i in.las --eliminate_class 2 --out out.las\n");
--    fprintf(stderr,"\n");
--        
--    fprintf(stderr,"Capture only first returns and clip to bounding box:\n");
--    fprintf(stderr,"  las2las-old -i in.las -first_only -clip 63000000 483450000 63050000 483500000 -o out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Capture only last returns, eliminate intensities below 2000, and write to stdout:\n");
--    fprintf(stderr,"  las2las-old --input in.las --last_only --eliminate_intensity_below 2000 --stdout > out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Reproject the data (requires GDAL support):\n");
--    fprintf(stderr,"  las2las-old -v in.las output.las -xyz_offset 0 0 0 "
--                   "-t_srs EPSG:4326 --xyz_scale 0.0000001 0.0000001 0.0000001"
--                   "-s_srs EPSG:26915\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr, "\nFor more information, see the full documentation for las2las-old at:\n"
--                    " http://liblas.org/utilities/las2las-old.html\n");
--    fprintf(stderr,"----------------------------------------------------------\n");
--
--}
--
--void ptime(const char *const msg)
--{
--  float t= ((float)clock())/CLOCKS_PER_SEC;
--  fprintf(stderr, "cumulative CPU time thru %s = %f\n", msg, t);
--}
--
--int main(int argc, char *argv[])
--{
--    int i;
--    int verbose = FALSE;
--    int use_stdin = FALSE;
--    int use_stdout = FALSE;
--    char* file_name_in = 0;
--    char* file_name_out = 0;
--    char* proj4_text = NULL;
--    double *clip_xy_min = NULL;
--    double *clip_xy_max = NULL;
--    int clip = FALSE;
--    int remove_extra_header = FALSE;
--    int elim_return = 0;
--    int elim_scan_angle_above = 0;
--    int elim_intensity_below = 0;
--    int elim_class = 0;
--    int clsidx = 0;
--    int first_only = FALSE;
--    int last_only = FALSE;
--    int skip_invalid = FALSE;
--    int format = LAS_FORMAT_12;
--    int bulk_copy = FALSE;
--    
--    LASReaderH reader = NULL;
--    LASHeaderH header = NULL;
--    LASHeaderH surviving_header = NULL;
--    LASPointH p = NULL;
--    LASWriterH writer = NULL;
--    
--    LASSRSH in_srs = NULL;
--    LASSRSH out_srs = NULL;
--    int use_min_offset = FALSE;
--    int do_reprojection = FALSE;
--    int do_set_offset = FALSE;
--    int do_set_scale = FALSE;
--    int do_pad_header = FALSE;
--    
--    int header_pad = 0;
--    
--    int first_surviving_point = TRUE;
--    unsigned int surviving_number_of_point_records = 0;
--    unsigned int surviving_number_of_points_by_return[] = {0,0,0,0,0,0,0,0};
--    LASPointH surviving_point_min = NULL;
--    LASPointH surviving_point_max = NULL;
--    double surviving_gps_time_min;
--    double surviving_gps_time_max;
--    int verticalCSType = -1, verticalDatum = -1, verticalUnits = 9001;
--    const char *verticalCitation = "";
--
--    int clipped = 0;
--    int eliminated_return = 0;
--    int eliminated_scan_angle = 0;
--    int eliminated_intensity = 0;
--    int eliminated_class = 0;
--    int eliminated_first_only = 0;
--    int eliminated_last_only = 0; 
--    int thinned = 0;
--    
--    int bThin = FALSE;
--    int nThin = 0;
--
--    double xyz_scale[3] = {0.0, 0.0, 0.0};
--    double xyz_offset[3] = {0.0, 0.0, 0.0};
--    
--    double minx, maxx, miny, maxy, minz, maxz;
--    
--    LASPointSummary* summary = NULL;
--    
--    int ret = 0;
--    
--    for (i = 1; i < argc; i++) {
--        if (    strcmp(argv[i],"-h") == 0 ||
--                strcmp(argv[i],"--help") == 0
--            )
--        {
--            usage();
--            exit(0);
--        }
--        else if (   strcmp(argv[i],"-v") == 0 ||
--                    strcmp(argv[i],"--verbose") == 0
--            )
--        {
--            verbose = TRUE;
--        }
--        else if (   strcmp(argv[i],"-s") == 0 ||
--                    strcmp(argv[i],"--skip_invalid") == 0
--            )
--        {
--            skip_invalid = TRUE;
--        }
--        else if (   strcmp(argv[i],"-b") == 0 ||
--                    strcmp(argv[i],"--bulk") == 0
--            )
--        {
--            bulk_copy = TRUE;
--        }
--        
--        else if (   strcmp(argv[i],"--input") == 0  ||
--                    strcmp(argv[i],"-input") == 0   ||
--                    strcmp(argv[i],"-i") == 0       ||
--                    strcmp(argv[i],"-in") == 0
--                )
--        {
--            i++;
--            file_name_in = argv[i];
--        }
--        else if (   strcmp(argv[i],"--output") == 0  ||
--                    strcmp(argv[i],"--out") == 0     ||
--                    strcmp(argv[i],"-out") == 0     ||
--                    strcmp(argv[i],"-o") == 0       
--                )
--        {
--            i++;
--            file_name_out = argv[i];
--        }
--
--        else if (   strcmp(argv[i],"--stdout") == 0  ||
--                    strcmp(argv[i],"-olas") == 0    
--                )
--        {
--            use_stdout = TRUE;
--            file_name_out = "stdout";
--        }
--        else if (   strcmp(argv[i],"--clip") == 0   ||
--                    strcmp(argv[i],"-clip") == 0    ||
--                    strcmp(argv[i],"-clip_xy") == 0 
--                )
--        {
--            clip_xy_min = (double*) malloc (2 * sizeof(double));
--            clip_xy_max = (double*) malloc( 2 * sizeof(double));
--            i++;
--            clip_xy_min[0] = atof(argv[i]);
--            i++;
--            clip_xy_min[1] = atof(argv[i]);
--            i++;
--            clip_xy_max[0] = atof(argv[i]);
--            i++;
--            clip_xy_max[1] = atof(argv[i]);
--            clip = TRUE;
--        }
--        else if (   strcmp(argv[i],"--format") == 0   ||
--                    strcmp(argv[i],"-f") == 0    ||
--                    strcmp(argv[i],"-format") == 0 
--                )
--        {
--            i++;
--            if (strcmp(argv[i], "1.0") == 0) {
--                format = LAS_FORMAT_10;
--            }
--            else if (strcmp(argv[i], "1.1") == 0) {
--                format = LAS_FORMAT_11;
--            } 
--            else if (strcmp(argv[i], "1.2") == 0) {
--                format = LAS_FORMAT_12;
--            }
--            else {
--                LASError_Print("Format must be specified as 1.0, 1.1, or 1.2");
--            }
--
--        }
--
--        else if (   strcmp(argv[i],"--eliminate_return") == 0  ||
--                    strcmp(argv[i],"-eliminate_return") == 0   ||
--                    strcmp(argv[i],"-elim_return") == 0       ||
--                    strcmp(argv[i],"-elim_ret") == 0
--                )        
--        {
--            i++;
--            elim_return |= (1 << atoi(argv[i]));
--        }
--        else if (   strcmp(argv[i],"--eliminate_scan_angle_above") == 0  ||
--                    strcmp(argv[i],"-eliminate_scan_angle_above") == 0   ||
--                    strcmp(argv[i],"-elim_scan_angle_above") == 0       ||
--                    strcmp(argv[i],"--clip_scan_above") == 0
--                )        
--        {
--            i++;
--            elim_scan_angle_above = atoi(argv[i]);
--        }
--        else if (   strcmp(argv[i],"--eliminate_class") == 0  ||
--                    strcmp(argv[i],"-eliminate_class") == 0   ||
--                    strcmp(argv[i],"-elim_class") == 0       ||
--                    strcmp(argv[i],"--class") == 0
--                )        
--        {
--            i++;
--            elim_class = atoi(argv[i]);
--        }
--        else if (   strcmp(argv[i],"--eliminate_intensity_below") == 0  ||
--                    strcmp(argv[i],"-eliminate_intensity_below") == 0   ||
--                    strcmp(argv[i],"-elim_intensity_below") == 0       ||
--                    strcmp(argv[i],"--clip_intensity_below") == 0
--                )        
--        {
--            i++;
--            elim_intensity_below = atoi(argv[i]);
--        }
--        else if (   strcmp(argv[i], "--stdin") == 0 ||
--                    strcmp(argv[i], "-ilas") == 0
--                ) 
--        {
--            use_stdin = TRUE;
--        }
--        else if (   strcmp(argv[i], "--first_only") == 0 ||
--                    strcmp(argv[i], "-first_only") == 0
--                ) 
--        {
--            first_only = TRUE;
--        }
--        else if (   strcmp(argv[i], "--last_only") == 0 ||
--                    strcmp(argv[i], "-last_only") == 0
--                ) 
--        {
--            last_only = TRUE;
--        }
--        else if (   strcmp(argv[i], "--remove_extra_header") == 0 ||
--                    strcmp(argv[i], "-remove_extra_header") == 0
--                ) 
--        {
--            remove_extra_header = TRUE;
--        }
--        else if (   strcmp(argv[i],"--s_srs") == 0  ||
--                    strcmp(argv[i],"-s_srs") == 0    
--                )
--        {
--            ++i;
--            if (LAS_IsGDALEnabled()) {
--                in_srs = LASSRS_Create();
--                ret = LASSRS_SetFromUserInput(in_srs, argv[i]);
--                if (ret) {
--                    LASError_Print("Unable to import assigned SRS");
--                    exit(1);
--                }
--            }
--        }
--        else if (   strcmp(argv[i],"--t_srs") == 0  ||
--                    strcmp(argv[i],"-t_srs") == 0    ||
--                    strcmp(argv[i],"-t") == 0 
--                )
--        {
--            ++i;
--            if (LAS_IsGDALEnabled()) {
--                out_srs = LASSRS_Create();
--                ret = LASSRS_SetFromUserInput(out_srs, argv[i]);
--                if (ret) {
--                    LASError_Print("Unable to import output SRS");
--                    exit(1);
--                }
--                do_reprojection = TRUE;
--            }
--        }
--        else if (   strcmp(argv[i],"--a_srs") == 0  ||
--                    strcmp(argv[i],"-a_srs") == 0 
--                )
--        {
--            ++i;
--            if (LAS_IsGDALEnabled()) {
--                out_srs = LASSRS_Create();
--                ret = LASSRS_SetFromUserInput(out_srs, argv[i]);
--                if (ret) {
--                    LASError_Print("Unable to import output SRS");
--                    exit(1);
--                }
--            }
--        }
--        else if (   strcmp(argv[i],"--a_vertcs") == 0  ||
--                    strcmp(argv[i],"-a_vertcs") == 0 
--                )
--        {
--            ++i;
--            verticalCSType = atoi(argv[i]);
--            ++i;
--            if( i < argc && argv[i][0] != '-' )
--            {
--                verticalCitation = argv[i];
--                ++i;
--
--                if( i < argc && argv[i][0] != '-' )
--                {
--                    verticalDatum = atoi(argv[i]);
--                    ++i;
--                    if( i < argc && argv[i][0] != '-' )
--                    {
--                        verticalUnits = atoi(argv[i]);
--                        ++i;
--                    }
--                }
--            }
--        }
--        else if (   strcmp(argv[i],"--scale") == 0  ||
--                    strcmp(argv[i],"-scale") == 0    
--                )
--        {
--
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[2]));
--            xyz_scale[0] = xyz_scale[1] = xyz_scale[2];
--            do_set_scale = TRUE;
--        }
--        else if (   strcmp(argv[i],"--xyz_scale") == 0  ||
--                    strcmp(argv[i],"-xyz_scale") == 0    
--                )
--
--        {
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[0]));
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[1]));
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[2]));
--            do_set_scale = TRUE;
--        }
--        else if (   strcmp(argv[i],"--xyz_offset") == 0  ||
--                    strcmp(argv[i],"-xyz_offset") == 0    
--                )
--        {
--            i++;
--            if (!compare_no_case(argv[i], "min", 3)) {
--                use_min_offset = TRUE;
--                do_set_offset = TRUE;
--            } else
--            {
--                sscanf(argv[i], "%lf", &(xyz_offset[0]));
--                i++;
--                sscanf(argv[i], "%lf", &(xyz_offset[1]));
--                i++;
--                sscanf(argv[i], "%lf", &(xyz_offset[2]));
--                do_set_offset = TRUE;
--            }
--        }
--        else if (   strcmp(argv[i],"--pad-header") == 0  ||
--                    strcmp(argv[i],"-pad-header") == 0   ||
--                    strcmp(argv[i],"-ph") == 0 
--                )        
--        {
--            i++;
--            do_pad_header = TRUE;
--            header_pad = atoi(argv[i]);
--        }
--        else if (   strcmp(argv[i],"--thin") == 0  ||
--                    strcmp(argv[i],"-y") == 0    
--                )
--        {
--            i++;
--            bThin = TRUE;
--            nThin = atoi(argv[i]);
--        }
--        else if (file_name_in == NULL && file_name_out == NULL)
--        {
--            file_name_in = argv[i];
--        }
--        else if (file_name_in != NULL && file_name_out == NULL)
--        {
--            file_name_out = argv[i];
--        }
--        else 
--        {
--            fprintf(stderr, "ERROR: unknown argument '%s'\n",argv[i]);
--            usage();
--            exit(1);
--        }
--    }
--
--    if (use_stdin) file_name_in="stdin";
--    if (file_name_in)
--    {
--        reader = LASReader_Create(file_name_in);
--        if (!reader) { 
--            LASError_Print("Could not open file to read");
--            exit(1);
--        }
--    }
--    else
--    {
--        LASError_Print("no input specified");
--        usage();
--        exit(1);
--    }
--
--        
--    header = LASReader_GetHeader(reader);
--    if (!header) { 
--        LASError_Print("Could not fetch header");
--        exit(1);
--    } 
--
--    if (verbose) {
--        ptime("start.");
--        fprintf(stderr, "first pass reading %d points ...\n", LASHeader_GetPointRecordsCount(header));
--    }
--
--    p  = LASReader_GetNextPoint(reader);
--
--    if (!p) {
--        if (LASError_GetLastErrorNum()) 
--            LASError_Print("Not able to fetch a point.  LASReader is invalid");
--        else
--            LASError_Print("File does not contain any points to read.");
--        exit(1);
--    }
--    
--    i = 0;
--    while (p)
--    {
--        if (bThin && ((i % nThin) != 0)) {
--            thinned++;
--            i++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (last_only && LASPoint_GetReturnNumber(p) != LASPoint_GetNumberOfReturns(p))
--        {
--            eliminated_last_only++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (first_only && LASPoint_GetReturnNumber(p) != 1)
--        {
--            eliminated_first_only++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--    
--        if (clip && (LASPoint_GetX(p) < clip_xy_min[0] || LASPoint_GetY(p) < clip_xy_min[1]))
--        {
--            clipped++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (clip && (LASPoint_GetX(p) > clip_xy_max[0] || LASPoint_GetY(p) > clip_xy_max[1]))
--        {
--            clipped++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        } 
--        if (elim_return && (elim_return & (1 << LASPoint_GetReturnNumber(p))))
--        {
--            eliminated_return++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (elim_scan_angle_above && (LASPoint_GetScanAngleRank(p) > elim_scan_angle_above || LASPoint_GetScanAngleRank(p) < -elim_scan_angle_above))
--        {
--            eliminated_scan_angle++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--
--        clsidx = LASPoint_GetClassification(p);
--        clsidx = (clsidx & 31); /* 31 is max index in classification lookup table */
--        assert(clsidx <= 31);
--        if (elim_class && (elim_class == clsidx))
--        {
--            eliminated_class++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--
--        if (elim_intensity_below && LASPoint_GetIntensity(p) < elim_intensity_below)
--        {
--            eliminated_intensity++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        surviving_number_of_point_records++;
--
--        if (LASPoint_GetReturnNumber(p))
--            surviving_number_of_points_by_return[LASPoint_GetReturnNumber(p)-1]++;
--        else
--            surviving_number_of_points_by_return[LASPoint_GetReturnNumber(p)]++;        
--
--        if (first_surviving_point)
--        {
--            surviving_point_min = LASPoint_Copy(p);
--            surviving_point_max = LASPoint_Copy(p);
--            surviving_gps_time_min = LASPoint_GetTime(p);
--            surviving_gps_time_max = LASPoint_GetTime(p);
--            first_surviving_point = FALSE;
--        }
--        else
--        {
--            if (LASPoint_GetX(p) < LASPoint_GetX(surviving_point_min))
--                LASPoint_SetX(surviving_point_min,LASPoint_GetX(p));
--            else if (LASPoint_GetX(p) > LASPoint_GetX(surviving_point_max)) 
--                LASPoint_SetX(surviving_point_max,LASPoint_GetX(p));
--
--            if (LASPoint_GetY(p) < LASPoint_GetY(surviving_point_min)) 
--                LASPoint_SetY(surviving_point_min,LASPoint_GetY(p));
--            else if (LASPoint_GetY(p) > LASPoint_GetY(surviving_point_max)) 
--                LASPoint_SetY(surviving_point_max,LASPoint_GetY(p));
--
--            if (LASPoint_GetZ(p) < LASPoint_GetZ(surviving_point_min))
--                LASPoint_SetZ(surviving_point_min,LASPoint_GetZ(p));
--            else if (LASPoint_GetZ(p) > LASPoint_GetZ(surviving_point_max))   
--                LASPoint_SetZ(surviving_point_max,LASPoint_GetZ(p));
--
--            if (LASPoint_GetIntensity(p) < LASPoint_GetIntensity(surviving_point_min)) 
--                LASPoint_SetIntensity(surviving_point_min,LASPoint_GetIntensity(p));
--            else if (LASPoint_GetIntensity(p) > LASPoint_GetIntensity(surviving_point_max)) 
--                LASPoint_SetIntensity(surviving_point_max,LASPoint_GetIntensity(p));
--
--            if (LASPoint_GetFlightLineEdge(p) < LASPoint_GetFlightLineEdge(surviving_point_min)) 
--                LASPoint_SetFlightLineEdge(surviving_point_min,LASPoint_GetFlightLineEdge(p));
--            else if (LASPoint_GetFlightLineEdge(p) > LASPoint_GetFlightLineEdge(surviving_point_max)) 
--                LASPoint_SetFlightLineEdge(surviving_point_max,LASPoint_GetFlightLineEdge(p));
--
--            if (LASPoint_GetScanDirection(p) < LASPoint_GetScanDirection(surviving_point_min)) 
--                LASPoint_SetScanDirection(surviving_point_min,LASPoint_GetScanDirection(p));
--            else if (LASPoint_GetScanDirection(p) > LASPoint_GetScanDirection(surviving_point_max)) 
--                LASPoint_SetScanDirection(surviving_point_max,LASPoint_GetScanDirection(p));
--
--            if (LASPoint_GetNumberOfReturns(p) < LASPoint_GetNumberOfReturns(surviving_point_min)) 
--                LASPoint_SetNumberOfReturns(surviving_point_min,LASPoint_GetNumberOfReturns(p));
--            else if (LASPoint_GetNumberOfReturns(p) > LASPoint_GetNumberOfReturns(surviving_point_max)) 
--                LASPoint_SetNumberOfReturns(surviving_point_max,LASPoint_GetNumberOfReturns(p));
--
--            if (LASPoint_GetReturnNumber(p) < LASPoint_GetReturnNumber(surviving_point_min)) 
--                LASPoint_SetReturnNumber(surviving_point_min,LASPoint_GetReturnNumber(p));
--            else if (LASPoint_GetReturnNumber(p) > LASPoint_GetReturnNumber(surviving_point_max)) 
--                LASPoint_SetReturnNumber(surviving_point_max,LASPoint_GetReturnNumber(p));
--
--            if (LASPoint_GetClassification(p) < LASPoint_GetClassification(surviving_point_min)) 
--                LASPoint_SetClassification(surviving_point_min,LASPoint_GetClassification(p));
--            else if (LASPoint_GetReturnNumber(p) > LASPoint_GetClassification(surviving_point_max)) 
--                LASPoint_SetClassification(surviving_point_max,LASPoint_GetClassification(p));
--
--            if (LASPoint_GetScanAngleRank(p) < LASPoint_GetScanAngleRank(surviving_point_min)) 
--                LASPoint_SetScanAngleRank(surviving_point_min,LASPoint_GetScanAngleRank(p));
--            else if (LASPoint_GetScanAngleRank(p) > LASPoint_GetScanAngleRank(surviving_point_max)) 
--                LASPoint_SetScanAngleRank(surviving_point_max,LASPoint_GetScanAngleRank(p));
--
--            if (LASPoint_GetUserData(p) < LASPoint_GetUserData(surviving_point_min)) 
--                LASPoint_SetUserData(surviving_point_min,LASPoint_GetUserData(p));
--            else if (LASPoint_GetUserData(p) > LASPoint_GetUserData(surviving_point_max)) 
--                LASPoint_SetUserData(surviving_point_max,LASPoint_GetUserData(p));
--
--            if (LASPoint_GetTime(p) < LASPoint_GetTime(surviving_point_min)) 
--                LASPoint_SetTime(surviving_point_min,LASPoint_GetTime(p));
--            else if (LASPoint_GetTime(p) > LASPoint_GetTime(surviving_point_max)) 
--                LASPoint_SetTime(surviving_point_max,LASPoint_GetTime(p));
--
--        }
--  
--        p  = LASReader_GetNextPoint(reader);
--        i++;
--    }
--
--    if (eliminated_first_only) 
--        fprintf(stderr, 
--                "eliminated based on first returns only: %d\n",
--                eliminated_first_only);
--    if (eliminated_last_only) 
--        fprintf(stderr, 
--                "eliminated based on last returns only: %d\n", 
--                eliminated_last_only);
--    if (eliminated_class) 
--        fprintf(stderr, 
--                "eliminated classification: %d\n", 
--                eliminated_class);
--    if (clipped) 
--        fprintf(stderr, 
--                "clipped: %d\n", 
--                clipped);
--    if (eliminated_return) 
--        fprintf(stderr, 
--                "eliminated based on return number: %d\n", 
--                eliminated_return);
--    if (eliminated_scan_angle) 
--        fprintf(stderr, 
--                "eliminated based on scan angle: %d\n", 
--                eliminated_scan_angle);
--    if (eliminated_intensity) 
--        fprintf(stderr, 
--        "eliminated based on intensity: %d\n", 
--        eliminated_intensity);
--
--    if (bThin) 
--        fprintf(stderr, 
--        "thinned: %d\n", 
--        thinned);
--    
--    if (surviving_number_of_point_records == 0) {
--        fprintf(stderr, "All points were eliminated!\n");
--        exit(0);
--    }
--    
--    LASReader_Destroy(reader);
--    LASHeader_Destroy(header);
--  
--    if (verbose)
--    {
--        fprintf(stderr, 
--                "x %.3f %.3f %.3f\n",
--                LASPoint_GetX(surviving_point_min), 
--                LASPoint_GetX(surviving_point_max), 
--                LASPoint_GetX(surviving_point_max) - LASPoint_GetX(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "y %.3f %.3f %.3f\n",
--                LASPoint_GetY(surviving_point_min), 
--                LASPoint_GetY(surviving_point_max), 
--                LASPoint_GetY(surviving_point_max) - LASPoint_GetY(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "z %.3f %.3f %.3f\n",
--                LASPoint_GetZ(surviving_point_min), 
--                LASPoint_GetZ(surviving_point_max), 
--                LASPoint_GetZ(surviving_point_max) - LASPoint_GetZ(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "intensity %d %d %d\n",
--                LASPoint_GetIntensity(surviving_point_min), 
--                LASPoint_GetIntensity(surviving_point_max), 
--                LASPoint_GetIntensity(surviving_point_max) - LASPoint_GetIntensity(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "edge_of_flight_line %d %d %d\n",
--                LASPoint_GetFlightLineEdge(surviving_point_min), 
--                LASPoint_GetFlightLineEdge(surviving_point_max), 
--                LASPoint_GetFlightLineEdge(surviving_point_max) - LASPoint_GetFlightLineEdge(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "scan_direction_flag %d %d %d\n",
--                LASPoint_GetScanDirection(surviving_point_min), 
--                LASPoint_GetScanDirection(surviving_point_max), 
--                LASPoint_GetScanDirection(surviving_point_max) - LASPoint_GetScanDirection(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "number_of_returns_of_given_pulse %d %d %d\n",
--                LASPoint_GetNumberOfReturns(surviving_point_min), 
--                LASPoint_GetNumberOfReturns(surviving_point_max), 
--                LASPoint_GetNumberOfReturns(surviving_point_max) - LASPoint_GetNumberOfReturns(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "return_number %d %d %d\n",
--                LASPoint_GetReturnNumber(surviving_point_min), 
--                LASPoint_GetReturnNumber(surviving_point_max), 
--                LASPoint_GetReturnNumber(surviving_point_max) - LASPoint_GetReturnNumber(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "classification %d %d %d\n",
--                LASPoint_GetClassification(surviving_point_min), 
--                LASPoint_GetClassification(surviving_point_max), 
--                LASPoint_GetClassification(surviving_point_max) - LASPoint_GetClassification(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "scan_angle_rank %d %d %d\n",
--                LASPoint_GetScanAngleRank(surviving_point_min), 
--                LASPoint_GetScanAngleRank(surviving_point_max), 
--                LASPoint_GetScanAngleRank(surviving_point_max) - LASPoint_GetScanAngleRank(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "user_data %d %d %d\n",
--                LASPoint_GetUserData(surviving_point_min), 
--                LASPoint_GetUserData(surviving_point_max), 
--                LASPoint_GetUserData(surviving_point_max) - LASPoint_GetUserData(surviving_point_min)
--                );
--        fprintf(stderr, 
--                "gps_time %.8f %.8f %.8f\n",
--                LASPoint_GetTime(surviving_point_min), 
--                LASPoint_GetTime(surviving_point_max), 
--                LASPoint_GetTime(surviving_point_max) - LASPoint_GetTime(surviving_point_min)
--                );
--
--    }
--
--    if (file_name_out == NULL && !use_stdout)
--    {
--        LASError_Print("no output specified. exiting...");
--        exit(1);
--    }
--
--
--    fprintf(stderr, "Creating another reader...\n");
--    if (file_name_in)
--    {
--        reader = LASReader_Create(file_name_in);
--      if (!reader) { 
--          LASError_Print("Could not open file to read");
--          exit(1);
--      } 
--    }
--    else
--    {
--        LASError_Print("no input specified");
--        usage();
--        exit(1);
--    }
--
--    
--    header = LASReader_GetHeader(reader);
--    if (!header) { 
--        LASError_Print("Could not read header");
--        exit(1);
--    } 
--
--
--    surviving_header = LASHeader_Copy(header);
--
--    LASHeader_SetPointRecordsCount(surviving_header, surviving_number_of_point_records);
--    LASHeader_SetSystemId(surviving_header, "MODIFICATION");
--
--    for (i = 0; i < 5; i++) LASHeader_SetPointRecordsByReturnCount(surviving_header, i, surviving_number_of_points_by_return[i]);
--
--    minx =  LASPoint_GetX(surviving_point_min) * \
--            LASHeader_GetScaleX(surviving_header) + \
--            LASHeader_GetOffsetX(surviving_header);
--            
--    maxx = LASPoint_GetX(surviving_point_max) * LASHeader_GetScaleX(surviving_header) + LASHeader_GetOffsetX(surviving_header);
--
--    miny = LASPoint_GetY(surviving_point_min) * LASHeader_GetScaleY(surviving_header) + LASHeader_GetOffsetY(surviving_header);
--    maxy = LASPoint_GetY(surviving_point_max) * LASHeader_GetScaleY(surviving_header) + LASHeader_GetOffsetY(surviving_header);
--
--    minz = LASPoint_GetZ(surviving_point_min) * LASHeader_GetScaleZ(surviving_header) + LASHeader_GetOffsetZ(surviving_header);
--    maxz = LASPoint_GetZ(surviving_point_max) * LASHeader_GetScaleZ(surviving_header) + LASHeader_GetOffsetZ(surviving_header);
--    
--    if (format == LAS_FORMAT_10) {
--        LASHeader_SetVersionMinor(surviving_header, 0);
--    } else if (format == LAS_FORMAT_11){
--        LASHeader_SetVersionMinor(surviving_header, 1);
--    } else if (format == LAS_FORMAT_12) {
--        LASHeader_SetVersionMinor(surviving_header, 2);
--    }
--
--    if (do_set_offset) {
--        if (use_min_offset) {
--            if (verbose) {
--                fprintf(stderr, 
--                    "Setting xyz offset to minimums...\n");
--            }
--            LASHeader_SetOffset(surviving_header, 
--                                LASPoint_GetX(surviving_point_min), 
--                                LASPoint_GetY(surviving_point_min), 
--                                LASPoint_GetZ(surviving_point_min));
--        } else {
--            if (verbose) {
--                fprintf(stderr, 
--                    "Setting xyz offset to %.8f %.8f %.8f...\n", xyz_offset[0], xyz_offset[1], xyz_offset[2]);
--            }
--            LASHeader_SetOffset(surviving_header,
--                                xyz_offset[0],
--                                xyz_offset[1],
--                                xyz_offset[2]);
--        }
--    }
--
--    if (do_set_scale) {
--        if (verbose) {
--            fprintf(stderr, 
--                "Setting xyz scale to %.8f %.8f %.8f...\n", xyz_scale[0], xyz_scale[1], xyz_scale[2]);
--        }
--        LASHeader_SetScale( surviving_header, 
--                            xyz_scale[0],
--                            xyz_scale[1],
--                            xyz_scale[2]);
--    }
--    
--    if (do_pad_header){
--        if (verbose) {
--            fprintf(stderr, 
--                "Padding header by %d bytes. New header will be %d bytes long instead of %d bytes ...\n", 
--                header_pad, 
--                LASHeader_GetDataOffset(surviving_header)+abs(header_pad), 
--                LASHeader_GetDataOffset(surviving_header));
--        }
--        
--        LASHeader_SetDataOffset(surviving_header, LASHeader_GetDataOffset(surviving_header)+abs(header_pad));
--    }
--    
--    /* Do we have vertical cs info to set? */
--    if( verticalCSType > 0 )
--    {
--        if( out_srs == NULL )
--            out_srs = LASHeader_GetSRS(surviving_header);
--
--        if( out_srs == NULL )
--            out_srs = LASSRS_Create();
--
--        LASSRS_SetVerticalCS( out_srs,
--                              verticalCSType, 
--                              verticalCitation, 
--                              verticalDatum, 
--                              verticalUnits );
--    }
--
--    if (do_reprojection) {
--        if (verbose) {
--            proj4_text =  LASSRS_GetProj4(out_srs);
--            fprintf(stderr,
--                "Setting new coordinate system to %s", proj4_text);
--            LASString_Free(proj4_text);
--        }
--        
--        /* keep around the header's SRS if we don't have one set by the user */
--        if (in_srs == NULL) {
--            in_srs = LASHeader_GetSRS(surviving_header);
--        }
--        
--        LASHeader_SetSRS(surviving_header, out_srs);
--    }
--
--    /* Are we just assigning an override SRS? (-a_srs) */
--    else if( out_srs != NULL )
--    {
--        LASHeader_SetSRS(surviving_header, out_srs);
--    }
--
--    if (verbose) {
--        fprintf(stderr, 
--                "second pass reading %d and writing %d points ...\n", 
--                LASHeader_GetPointRecordsCount(surviving_header), 
--                surviving_number_of_point_records);
--    }
--    
--    
--    if (use_stdout) file_name_out = "stdout";
--    
--    writer = LASWriter_Create(  file_name_out, 
--                                surviving_header, 
--                                LAS_MODE_WRITE);
--    if (!writer) { 
--        LASError_Print("Could not open file to write");
--        exit(1);
--    }  
--
--    if (do_reprojection) {
--        if (in_srs != NULL) {
--            char* in_wkt = LASSRS_GetWKT(in_srs);
--            if (strlen(in_wkt) == 0) {
--                LASString_Free(in_wkt);
--                LASError_Print("Input SRS is empty, please specify with -s_srs");
--                exit(1);
--            }
--            LASString_Free(in_wkt);
--            LASWriter_SetInputSRS(writer, in_srs);
--        } else {
--            
--        }
--    
--        if (out_srs != NULL) {
--            if (verbose) {
--                fprintf(stderr,
--                    "Setting LASWriter_SetOutputSRS to %s", LASSRS_GetProj4(out_srs));
--            }
--            LASWriter_SetOutputSRS(writer, out_srs);
--        }
--    }
--/*
--
--  if (!remove_extra_header)
--  {
--    for (unsigned int u = lasreader->header.header_size; u < lasreader->header.offset_to_point_data; u++)
--    {
--      fputc(fgetc(file_in),file_out);
--    }
--  }
--*/
--
--    
--    LASReader_Destroy(reader);
--    reader = NULL;
--    if (file_name_in)
--    {
--        reader = LASReader_Create(file_name_in);
--        if (!reader) { 
--            LASError_Print("Could not open file to read");
--            exit(1);
--        } 
--    }
--    else
--    {
--        LASError_Print("no input specified");
--        usage();
--        exit(1);
--    }
--
--    
--    p = LASReader_GetNextPoint(reader);
--    if (!p) {
--        if (LASError_GetLastErrorNum()) 
--            LASError_Print("Not able to fetch a point.  LASReader is invalid");
--        else
--            LASError_Print("File does not contain any points to read.");
--        exit(1);
--    }
--    
--    i = 0;
--    while (p) {
--
--        if (bThin && ((i % nThin) != 0)) {
--            i++;
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        
--        if (skip_invalid && !LASPoint_IsValid(p)) {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (last_only && LASPoint_GetReturnNumber(p) != LASPoint_GetNumberOfReturns(p))
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (first_only && LASPoint_GetReturnNumber(p) != 1)
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--
--        }
--        if (clip_xy_min && (LASPoint_GetX(p) < clip_xy_min[0] || LASPoint_GetY(p) < clip_xy_min[1]))
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (clip_xy_max && (LASPoint_GetX(p) > clip_xy_max[0] || LASPoint_GetY(p) > clip_xy_max[1]))
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (elim_return && (elim_return & (1 << LASPoint_GetReturnNumber(p))))
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (elim_scan_angle_above && (LASPoint_GetScanAngleRank(p) > elim_scan_angle_above || LASPoint_GetScanAngleRank(p) < -elim_scan_angle_above))
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        if (elim_intensity_below && LASPoint_GetIntensity(p) < elim_intensity_below)
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--
--        clsidx = LASPoint_GetClassification(p);
--        clsidx = (clsidx & 31); /* 31 is max index in classification lookup table */
--        assert(clsidx <= 31);
--        if (elim_class && (elim_class == clsidx))
--        {
--            p = LASReader_GetNextPoint(reader);
--            continue;
--        }
--        ret = LASWriter_WritePoint(writer,p);
--        
--        if (ret == LE_Warning) {
--            LASError_Print("Unable to write invalid point.  Use --skip_invalid to avoid this problem (you will lose data in the translation)");
--            exit(1);
--        }
--        p  = LASReader_GetNextPoint(reader);
--        i++;
--    }
--
--    LASWriter_Destroy(writer);
--    LASReader_Destroy(reader);
--    LASHeader_Destroy(header);
--    LASHeader_Destroy(surviving_header);
--
--    if (surviving_point_max != NULL)
--        LASPoint_Destroy(surviving_point_max);
--    if (surviving_point_min != NULL)
--        LASPoint_Destroy(surviving_point_min);
--
--    reader = LASReader_Create(file_name_out);
--    if (!reader) { 
--        LASError_Print("Could not open file to read");
--        exit(1);
--    }
--
--    header = LASReader_GetHeader(reader);
--    if (!header) { 
--        LASError_Print("Could not read header");
--        exit(1);
--    }
--
--    
--    summary = SummarizePoints(reader);
--    if (verbose) {
--        print_point_summary(stderr, summary, header);
--    }
--    repair_header(stderr, header, summary) ;
--
--    if (summary != NULL) {
--        if (summary->pmin != NULL)
--            LASPoint_Destroy(summary->pmin);
--        if (summary->pmax != NULL)
--            LASPoint_Destroy(summary->pmax);
--        free(summary);
--    }
--
--    if (reader != NULL) {
--        LASReader_Destroy(reader);
--        reader = NULL;
--    }
--    
--    writer = LASWriter_Create(file_name_out, header, LAS_MODE_APPEND);
--    if (!writer) {
--        LASError_Print("Problem creating LASWriterH object for append");
--        LASHeader_Destroy(header);
--        header = NULL;
--        exit(1);
--    }
--    LASWriter_Destroy(writer);
--    writer = NULL;
--    LASHeader_Destroy(header);
--    header = NULL;
--    
--    if (out_srs != NULL)
--        LASSRS_Destroy(out_srs);
--    
--    if (in_srs != NULL)
--        LASSRS_Destroy(in_srs);
--
--    if (verbose) ptime("done.");
--
--    return 0;
--}
---- a/apps/lasinfo-old.c
-+++ /dev/null
-@@ -1,420 +0,0 @@
--/***************************************************************************
--* $Id$
--* $Date$
--*
--* Project: libLAS -- C/C++ read/write library for LAS LIDAR data
--* Purpose: LAS information reporting and setting
--* Author:  Martin Isenburg isenburg at cs.unc.edu 
--***************************************************************************
--* Copyright (c) 2007, Martin Isenburg isenburg at cs.unc.edu 
--*
--* See LICENSE.txt in this source distribution for more information.
--**************************************************************************/
--
--/* TODO: Remove before releasing */
--#if defined(_MSC_VER) && defined(USE_VLD)
--#include <vld.h>
--#endif
--
--/* liblas */
--#include <liblas.h>
--/* std */
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--
--#ifdef HAVE_GDAL
--#include <cpl_multiproc.h>
--#include <cpl_string.h>
--#endif
--
--#include "lascommon.h"
--
--LASPointSummary* SummarizePoints(LASReaderH reader);
--void print_point_summary(FILE *file, LASPointSummary* summary, LASHeaderH header);
--void print_header(FILE *file, LASHeaderH header, const char* file_name, int bSkipVLR, int bWKT);
--
--void usage()
--{
--    char* version = LAS_GetFullVersion();
--    fprintf(stderr,"----------------------------------------------------------\n");
--    fprintf(stderr,"    lasinfo-old (version %s) usage:\n", version);
--    fprintf(stderr,"----------------------------------------------------------\n");
--    fprintf(stderr,"\n");
--    LASString_Free(version);
--    version = NULL;
--
--    fprintf(stderr,"Printing simple header info:\n");
--    fprintf(stderr,"  lasinfo-old lidar.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Checking point information:\n");
--    fprintf(stderr,"  lasinfo-old --input lidar.las --check\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Print header info and point summary and redirect output to a file:\n");
--    fprintf(stderr,"  lasinfo-old --check --input lidar.las 2> output.txt\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Read from stdin, scan the points, and skip printing VLR info:\n");
--    fprintf(stderr,"  lasinfo-old --stdin --check --skip_vlr < lidar.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Repairing header info to reflect point data:\n");
--    fprintf(stderr,"  lasinfo-old -i lidar.las --repair\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Altering header info:\n");
--    fprintf(stderr, "  lasinfo-old -i lidar.las --system_identifier \"hello world!\" "
--                    "--generating_software \"this is a test (-:\"  --file_creation 8 2007\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Print this output:\n");
--    fprintf(stderr, "  lasinfo-old --help\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr, "\nFor more information, see the full documentation for lasinfo-old at:\n"
--                    " http://liblas.org/utilities/lasinfo-old.html\n");
--    fprintf(stderr,"----------------------------------------------------------\n");
--}
--
--int main(int argc, char *argv[])
--{
--    int i = 0;
--    char* file_name = NULL;
--
--    LASReaderH reader = NULL;
--    LASHeaderH header = NULL;
--    LASWriterH writer = NULL;
--
--    int check_points = FALSE;
--    int repair_header = FALSE;
--    int change_header = FALSE;
--    int repair_bounding_box = FALSE;
--    int use_stdin = FALSE;
--    int update_return_counts = FALSE;
--    int skip_vlr = FALSE;
--    int wkt = FALSE;
--
--    char *system_identifier = NULL;
--    char *generating_software = NULL;
--    unsigned char file_creation_day = 0;
--    unsigned char file_creation_year = 0;
--
--    int err = 0;
--
--    LASPointSummary* summary = NULL;
--
--    for (i = 1; i < argc; i++)
--    {
--        if (strcmp(argv[i],"-v") == 0 || strcmp(argv[i],"--version") == 0)
--        {
--            char* ver = LAS_GetFullVersion();
--            fprintf(stderr,"%s", ver);
--            LASString_Free(ver);
--            exit(0);
--        }
--        else if (strcmp(argv[i],"-h") == 0 || strcmp(argv[i],"--help") == 0)
--        {
--            usage();
--            exit(0);
--        }
--        else if (strcmp(argv[i],"--input") == 0
--              || strcmp(argv[i],"-input") == 0
--              || strcmp(argv[i],"-i") == 0
--              || strcmp(argv[i],"-in") == 0)
--        {
--            i++;
--            file_name = argv[i];
--        }
--        else if (strcmp(argv[i], "--points") == 0
--              || strcmp(argv[i], "--check") == 0
--              || strcmp(argv[i], "--check_points") == 0
--              || strcmp(argv[i], "-c") == 0
--              || strcmp(argv[i], "-points") == 0
--              || strcmp(argv[i], "-check") == 0
--              || strcmp(argv[i], "-check_points") == 0)
--        {
--            check_points = TRUE;
--        }
--        else if (strcmp(argv[i], "--nocheck") == 0
--              || strcmp(argv[i], "-nocheck") == 0)
--        {
--            check_points = FALSE;
--        }
--        else if (strcmp(argv[i], "--stdin") == 0
--              || strcmp(argv[i], "-ilas") == 0) 
--        {
--            use_stdin = TRUE;
--        }
--        else if (strcmp(argv[i], "--repair") == 0
--              || strcmp(argv[i], "-r") == 0
--              || strcmp(argv[i], "-repair_header") == 0
--              || strcmp(argv[i], "-repair") == 0) 
--        {
--            repair_header = TRUE;
--            check_points = TRUE;
--        }
--        else if (strcmp(argv[i], "--repair_bb") == 0
--              || strcmp(argv[i], "--repair_bounding_box") == 0
--              || strcmp(argv[i], "--repair_boundingbox") == 0
--              || strcmp(argv[i], "-repair_bb") == 0
--              || strcmp(argv[i], "-repair_bounding_box") == 0
--              || strcmp(argv[i], "-repair_boundingbox") == 0
--              || strcmp(argv[i], "-repair") == 0
--              || strcmp(argv[i], "-rb") == 0) 
--        {
--            repair_bounding_box = TRUE;
--            check_points = TRUE;
--        }
--
--        else if (strcmp(argv[i],"--system_identifier") == 0
--              || strcmp(argv[i],"-system_identifier") == 0
--              || strcmp(argv[i],"-s") == 0
--              || strcmp(argv[i],"-sys_id") == 0)
--        {
--            i++;
--            system_identifier = (char*) malloc(31 * sizeof(char));
--            strcpy(system_identifier, argv[i]);
--            change_header = TRUE;
--        }
--
--        else if (strcmp(argv[i],"--generating_software") == 0
--              || strcmp(argv[i],"-generating_software") == 0
--              || strcmp(argv[i],"-g") == 0
--              || strcmp(argv[i],"-gen_soft") == 0)
--        {
--            i++;
--            generating_software = (char*) malloc(31*sizeof(char));
--            strcpy(generating_software, argv[i]);
--            change_header = TRUE;
--        }
--        else if (strcmp(argv[i],"--file_creation") == 0
--              || strcmp(argv[i],"-file_creation") == 0)
--        {
--            /* XXX - mloskot: Consider replacing atoi with strtol,
--            see http://www.iso-9899.info/wiki/Converting */
--            i++;
--            file_creation_day = (unsigned char)atoi(argv[i]);
--            i++;
--            file_creation_year = (unsigned char)atoi(argv[i]);
--            change_header = TRUE;
--        }
--        else if (strcmp(argv[i],"--skip_vlr") == 0 || strcmp(argv[i],"--no_vlr") == 0)
--        {
--            skip_vlr = TRUE;
--        }
--        else if (strcmp(argv[i],"--wkt") == 0)
--        {
--            wkt = TRUE;
--        }    
--        else if (file_name == NULL)
--        {
--            file_name = argv[i];
--        } 
--        else
--        {
--            usage();
--            fprintf(stderr, "ERROR: unknown argument '%s'\n",argv[i]);
--            exit(1);
--        }
--    }
--
--    if (use_stdin) {
--        file_name = "stdin";
--    }
--
--    if (!file_name) {
--        LASError_Print("No filename was provided to be opened");
--        usage();
--        exit(1);
--    }
--
--    reader = LASReader_Create(file_name);
--    if (!reader) { 
--        LASError_Print("Could not open file ");
--        exit(1);
--    } 
--
--    header = LASReader_GetHeader(reader);
--    if (!header) { 
--        LASError_Print("Could not get LASHeader ");
--        exit(1);
--    } 
--
--    print_header(stdout, header, file_name, skip_vlr, wkt);
--
--    if (change_header) {
--        if (system_identifier) {
--            err = LASHeader_SetSystemId (header, system_identifier);
--            if (err) LASError_Print("Could not set SystemId");
--        }
--        if (generating_software) {
--            err = LASHeader_SetSoftwareId(header, generating_software);
--            if (err) LASError_Print("Could not set SoftwareId");
--        }
--        if ( file_creation_day || file_creation_year) {
--            err = LASHeader_SetCreationDOY(header, file_creation_day);
--            if (err) LASError_Print("Could not set file creation day");
--            err = LASHeader_SetCreationYear(header, file_creation_year);
--            if (err) LASError_Print("Could not set file creation year");
--        }
--
--        /* We need to wipe out the reader and make a writer. */
--        if (reader) {
--            LASReader_Destroy(reader);
--            reader = NULL;
--        }
--
--        writer = LASWriter_Create(file_name, header, LAS_MODE_APPEND);
--        if (!writer) {
--            LASError_Print("Problem creating LASWriterH object");
--            LASHeader_Destroy(header);
--            header = NULL;
--            exit(1);
--        }
--
--        if (writer) LASWriter_Destroy(writer);
--        writer = NULL;
--        if (header) LASHeader_Destroy(header);
--        header = NULL;
--    }
--
--    if (check_points)
--    {
--        if (!reader) {
--            reader = LASReader_Create(file_name);
--            if (!reader) { 
--                LASError_Print("Could not open file ");
--                exit(1);
--            } 
--        }
--
--        if (! header) {
--            header = LASReader_GetHeader(reader);
--            if (!header) { 
--                LASError_Print("Could not get LASHeader ");
--                exit(1);
--            } 
--        } 
--
--        if (!summary)
--            summary = SummarizePoints(reader);
--        print_point_summary(stdout, summary, header);
--
--        if (repair_header) {
--            fprintf(stdout, "\n---------------------------------------------------------\n");
--            fprintf(stdout, "  Repair Summary\n");
--            fprintf(stdout, "---------------------------------------------------------\n");
--
--            if (use_stdin) {
--                LASError_Print("Cannot update header information on piped input!");
--                exit(1);
--            }
--
--            if (! header) {
--                header = LASReader_GetHeader(reader);
--                if (!header) { 
--                    LASError_Print("Could not get LASHeader ");
--                    exit(1);
--                }
--            } 
--
--            if (! repair_bounding_box) {
--                if ( LASHeader_GetMinX(header) != LASPoint_GetX(summary->pmin) )
--                    repair_bounding_box = TRUE;
--                if ( LASHeader_GetMinY(header) != LASPoint_GetY(summary->pmin) )
--                    repair_bounding_box = TRUE;
--                if ( LASHeader_GetMinZ(header) != LASPoint_GetZ(summary->pmin) )
--                    repair_bounding_box = TRUE;
--
--                if ( LASHeader_GetMaxX(header) != LASPoint_GetX(summary->pmax) )
--                    repair_bounding_box = TRUE;
--                if ( LASHeader_GetMaxY(header) != LASPoint_GetY(summary->pmax) )
--                    repair_bounding_box = TRUE;
--                if ( LASHeader_GetMaxZ(header) != LASPoint_GetZ(summary->pmax) )
--                    repair_bounding_box = TRUE;
--            }
--
--            if (repair_bounding_box) {
--                fprintf(stdout, "  Reparing Bounding Box...\n");
--                err = LASHeader_SetMin( header, 
--                    LASPoint_GetX(summary->pmin), 
--                    LASPoint_GetY(summary->pmin), 
--                    LASPoint_GetZ(summary->pmin)
--                    );
--                if (err) {
--                    LASError_Print("Could not set minimum for header ");
--                    exit(1);
--                }
--                err = LASHeader_SetMax( header, 
--                    LASPoint_GetX(summary->pmax), 
--                    LASPoint_GetY(summary->pmax), 
--                    LASPoint_GetZ(summary->pmax)
--                    );
--                if (err) {
--                    LASError_Print("Could not set minimum for header ");
--                    exit(1);
--                }
--            }
--
--            for (i = 0; i < 5; i++) {
--
--                if (LASHeader_GetPointRecordsByReturnCount(header, i) != 
--                    summary->number_of_points_by_return[i]) 
--                {
--                    update_return_counts = TRUE;
--                    break;
--                }
--            }
--
--            if (update_return_counts) {
--                fprintf(stdout, "  Reparing Point Count by Return...\n");
--                for (i = 0; i < 5; i++) {
--                    LASHeader_SetPointRecordsByReturnCount( header,  
--                        i, 
--                        summary->number_of_points_by_return[i]);
--                }                
--            }
--
--            if (reader) {
--                LASReader_Destroy(reader);
--                reader = NULL;
--            }
--
--            writer = LASWriter_Create(file_name, header, LAS_MODE_APPEND);
--            if (!writer) {
--                LASError_Print("Problem creating LASWriterH object for append");
--                LASHeader_Destroy(header);
--                header = NULL;
--                exit(1);
--            }
--            LASWriter_Destroy(writer);
--            writer = NULL;
--            LASHeader_Destroy(header);
--            header = NULL;            
--        }
--
--        if (summary) {
--            LASPoint_Destroy(summary->pmin);
--            LASPoint_Destroy(summary->pmax);
--            free(summary);
--
--        }
--    }   
--
--    if (reader) LASReader_Destroy(reader);
--    if (header) LASHeader_Destroy(header);
--
--#ifdef HAVE_GDAL
--    /* Various GDAL related cleanups */
--#ifdef OSRCleanup
--    OSRCleanup();
--#endif
--    CPLFinderClean();
--    CPLFreeConfig();
--    CPLCleanupTLS();
--#endif
--
--    return 0;
--}
---- a/apps/lasmerge.c
-+++ /dev/null
-@@ -1,507 +0,0 @@
--/***************************************************************************
-- * $Id$
-- * $Date$
-- *
-- * Project: libLAS -- C/C++ read/write library for LAS LIDAR data
-- * Purpose: LAS file merging
-- * Author:  Martin Isenburg isenburg at cs.unc.edu 
-- ***************************************************************************
-- * Copyright (c) 2007, Martin Isenburg isenburg at cs.unc.edu 
-- *
-- * See LICENSE.txt in this source distribution for more information.
-- **************************************************************************/
--
--
--#include <time.h>
--#include <stdio.h>
--#include <stdlib.h>
--#include <string.h>
--
--#include "liblas.h"
--#include "lascommon.h"
--
--LASPointSummary* SummarizePoints(LASReaderH reader);
--void print_point_summary(FILE *file, LASPointSummary* summary, LASHeaderH header);
--void print_header(FILE *file, LASHeaderH header, const char* file_name, int bSkipVLR);
--
--void usage()
--{
--
--    fprintf(stderr,"----------------------------------------------------------\n");
--    fprintf(stderr,"    lasmerge (version %s) usage:\n", LAS_GetFullVersion());
--    fprintf(stderr,"----------------------------------------------------------\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Merge using a list of files:\n");
--    fprintf(stderr,"  lasmerge -i lasfiles.txt -o out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Manually list files to merge:\n");
--    fprintf(stderr,"  lasmerge -i file1.las -i file2.las -i file3.las -o out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Merge to stdout:\n");
--    fprintf(stderr,"  lasmerge -i file1.las -i file2.las --stdout\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Merge and set scale:\n");
--    fprintf(stderr, "  lasmerge --input lasfiles.txt --scale 0.01 --output out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Merge and set scale individually:\n");
--    fprintf(stderr, "  lasmerge --input lasfiles.txt --xyz_scale 0.01 0.01 0.1 --output out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Merge and set offset individually:\n");
--    fprintf(stderr, "  lasmerge --input lasfiles.txt --xyz_offset 0.01 0.01 0.1 --output out.las\n");
--    fprintf(stderr,"\n");
--
--    fprintf(stderr,"Print this output:\n");
--    fprintf(stderr, "  lasmerge --help\n");
--    fprintf(stderr,"\n");
--    
--    fprintf(stderr, "For more information, see the full documentation for lasmerge at:\n"
--                    " http://liblas.org/utilities/lasmerge.html\n");
--    fprintf(stderr,"----------------------------------------------------------\n");
--
--}
--
--void ptime(const char *const msg)
--{
--    float t= ((float)clock())/CLOCKS_PER_SEC;
--    fprintf(stderr, "cumulative CPU time thru %s = %f\n", msg, t);
--}
--
--int main(int argc, char *argv[])
--{
--    int i;
--    int verbose = FALSE;
--    int skip_vlr = FALSE;
--    int num_file_name_in = 0;
--    int alloced_file_name_in = 32;
--    char** file_names_in = (char**)malloc(sizeof(char*)*alloced_file_name_in);
--    char* file_name_out = 0;
--    int use_stdout = FALSE;
--    double xyz_scale[3] = {0.0, 0.0, 0.0};
--    double xyz_offset[3] = {0.0, 0.0, 0.0};
--
--    double minx, miny, maxx, maxy, minz, maxz;
--    double x_scale_factor, y_scale_factor, z_scale_factor;
--
--  
--    LASHeaderH merged_header=NULL;
--    LASHeaderH header = NULL;
--    LASReaderH reader = NULL;
--    LASWriterH writer = NULL;
--    LASPointH p = NULL;
--  
--    FILE* file = NULL;
--
--    int smallest_int = (1<<31)+10;
--    int largest_int = smallest_int-1-20;
--
--    int same = TRUE;
--    LASPointSummary* summary = NULL;
--
--    for (i = 1; i < argc; i++)
--    {
--        if (    strcmp(argv[i],"-h") == 0 ||
--                strcmp(argv[i],"--help") == 0
--            )
--        {
--            usage();
--            exit(0);
--        }
--        else if (   strcmp(argv[i],"-v") == 0 ||
--                    strcmp(argv[i],"--verbose") == 0
--            )
--        {
--            verbose = TRUE;
--        }        
--        else if (   strcmp(argv[i],"--input") == 0  ||
--                    strcmp(argv[i],"-input") == 0   ||
--                    strcmp(argv[i],"-i") == 0       ||
--                    strcmp(argv[i],"-in") == 0
--                )
--        {
--            i++;
--            if (num_file_name_in == alloced_file_name_in)
--            {
--                alloced_file_name_in *= 2;
--                file_names_in = (char**)realloc(file_names_in,sizeof(char*)*alloced_file_name_in);
--            }
--            file_names_in[num_file_name_in] = argv[i];
--            num_file_name_in++;
--        }
--        else if (   strcmp(argv[i],"--output") == 0  ||
--                    strcmp(argv[i],"--out") == 0     ||
--                    strcmp(argv[i],"-out") == 0     ||
--                    strcmp(argv[i],"-o") == 0       
--                )
--        {
--            i++;
--            file_name_out = argv[i];
--        }
--        else if (   strcmp(argv[i],"--scale") == 0  ||
--                    strcmp(argv[i],"-scale") == 0     ||
--                    strcmp(argv[i],"-s") == 0       
--                )
--        {
--
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[2]));
--            xyz_scale[0] = xyz_scale[1] = xyz_scale[2];
--        }
--        else if (   strcmp(argv[i],"--xyz_scale") == 0  ||
--                    strcmp(argv[i],"-xyz_scale") == 0    
--                )
--
--        {
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[0]));
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[1]));
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_scale[2]));
--        }
--        else if (   strcmp(argv[i],"--xyz_offset") == 0  ||
--                    strcmp(argv[i],"-xyz_offset") == 0    
--                )
--        {
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_offset[0]));
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_offset[1]));
--            i++;
--            sscanf(argv[i], "%lf", &(xyz_offset[2]));
--        }
--        else if (   strcmp(argv[i],"--stdout") == 0  ||
--                    strcmp(argv[i],"-olas") == 0    
--                )
--        {
--            use_stdout = TRUE;
--            file_name_out = "stdout";
--        }
--        else if (   strcmp(argv[i],"--skip_vlr") == 0   ||
--                    strcmp(argv[i],"--no_vlr") == 0)
--        {
--            skip_vlr = TRUE;
--        } 
--        else if (i == argc - 2 && num_file_name_in == 0 && file_name_out == 0)
--        {
--            file_names_in[0] = argv[i];
--            num_file_name_in = 1;
--        }
--        else if (i == argc - 1 && num_file_name_in == 0 && file_name_out == 0)
--        {
--            file_names_in[0] = argv[i];
--            num_file_name_in = 1;
--        }
--        else if (i == argc - 1 && num_file_name_in != 0 && file_name_out == 0)
--        {
--            file_name_out = argv[i];
--        }
--        else 
--        {
--            fprintf(stderr, "ERROR: unknown argument '%s'\n",argv[i]);
--            usage();
--            exit(1);
--        }
--    }
--
--    if (num_file_name_in == 0)
--    {
--        fprintf(stderr, "ERROR: no input specified\n");
--        usage();
--        exit(1);
--    }
--
--    if (    num_file_name_in == 1 && 
--            strstr(file_names_in[0],".las") == 0 && 
--            strstr(file_names_in[0],".LAS") == 0
--       )
--    {
--        char line[512];
--
--        num_file_name_in = 0;
--        file = fopen(file_names_in[0], "r");
--        while (fgets(line, sizeof(char) * 512, file))
--            {
--                if (strstr(line,".las") || strstr(line,".LAS") )
--                {
--                    if (num_file_name_in == alloced_file_name_in)
--                    {
--                        alloced_file_name_in *= 2;
--                        file_names_in = (char**)realloc(file_names_in,sizeof(char*)*alloced_file_name_in);
--                    }
--                    file_names_in[num_file_name_in] = LASCopyString(line);
--                    i = (int)strlen(file_names_in[num_file_name_in]) - 1;
--                    while ( i && 
--                            file_names_in[num_file_name_in][i] != 's' && 
--                            file_names_in[num_file_name_in][i] != 'S' && 
--                            file_names_in[num_file_name_in][i] != 'z' && 
--                            file_names_in[num_file_name_in][i] != 'Z') 
--                    i--;
--                    if (i)
--                    {
--                        file_names_in[num_file_name_in][i+1] = '\0';
--                        num_file_name_in++;
--                    }
--                    else
--                    {
--                        fprintf(stderr, "WARNING: cannot parse line '%s'\n",line);
--                    }
--                }
--                else
--                {
--                    fprintf(stderr, "WARNING: no a valid LAS file name '%s'\n",line);
--                }
--            }
--    }
--
--
--    if (verbose) ptime("starting first pass.");
--    fprintf(stderr, "first pass ... reading headers of %d LAS files...\n", num_file_name_in);
--
--    for (i = 0; i < num_file_name_in; i++)
--    {
--        reader = LASReader_Create(file_names_in[i]);
--        if (!reader) { 
--                LASError_Print("Could not get LASReader "); 
--                exit(1);
--            } 
--      
--            header = LASReader_GetHeader(reader);
--            if (!header) { 
--                LASError_Print("Could not get LASHeader "); 
--                exit(1);
--            } 
--
--
--        if (i == 0)
--        {
--            merged_header = LASReader_GetHeader(reader);
--        }
--        else
--        {
--            LASHeader_SetPointRecordsCount( merged_header, 
--                                            LASHeader_GetPointRecordsCount(merged_header) + 
--                                            LASHeader_GetPointRecordsCount(header));
--            LASHeader_SetPointRecordsByReturnCount( merged_header, 
--                                                    0, 
--                                                    LASHeader_GetPointRecordsByReturnCount(merged_header,0) + 
--                                                    LASHeader_GetPointRecordsByReturnCount(header,0));
--            LASHeader_SetPointRecordsByReturnCount( merged_header, 
--                                                    1, 
--                                                    LASHeader_GetPointRecordsByReturnCount(merged_header,1) + 
--                                                    LASHeader_GetPointRecordsByReturnCount(header,1));
--            LASHeader_SetPointRecordsByReturnCount( merged_header, 
--                                                    2, 
--                                                    LASHeader_GetPointRecordsByReturnCount(merged_header,2) + 
--                                                    LASHeader_GetPointRecordsByReturnCount(header,2));
--            LASHeader_SetPointRecordsByReturnCount( merged_header, 
--                                                    3, 
--                                                    LASHeader_GetPointRecordsByReturnCount(merged_header,3) + 
--                                                    LASHeader_GetPointRecordsByReturnCount(header,3));
--            LASHeader_SetPointRecordsByReturnCount( merged_header, 
--                                                    4, 
--                                                    LASHeader_GetPointRecordsByReturnCount(merged_header,4) + 
--                                                    LASHeader_GetPointRecordsByReturnCount(header,4));
--
--            LASHeader_SetSystemId(merged_header, "MERGED");
--
--            minx = LASHeader_GetMinX(merged_header);
--            maxx = LASHeader_GetMaxX(merged_header);
--            miny = LASHeader_GetMinY(merged_header);
--            maxy = LASHeader_GetMaxY(merged_header);
--            minz = LASHeader_GetMinZ(merged_header);
--            maxz = LASHeader_GetMaxZ(merged_header);
--        
--            if (minx > LASHeader_GetMinX(header)) minx = LASHeader_GetMinX(header);
--            if (maxx < LASHeader_GetMaxX(header)) maxx = LASHeader_GetMaxX(header);
--            if (miny > LASHeader_GetMinY(header)) miny = LASHeader_GetMinY(header);
--            if (maxy < LASHeader_GetMaxY(header)) maxy = LASHeader_GetMaxY(header);
--            if (minz > LASHeader_GetMinZ(header)) minz = LASHeader_GetMinZ(header);
--            if (maxz < LASHeader_GetMaxZ(header)) maxz = LASHeader_GetMaxZ(header);
--        
--            LASHeader_SetMin(merged_header, minx, miny, minz);
--            LASHeader_SetMax(merged_header, maxx, maxy, maxz);
--        }
--        
--        LASHeader_Destroy(header);
--        LASReader_Destroy(reader);
--    }
--
--    if (verbose)
--    {
--        fprintf(stderr, "  number_of_point_records %d\n", 
--                LASHeader_GetPointRecordsCount(merged_header));
--        fprintf(stderr, "  number of points by return %d %d %d %d %d\n", 
--                        LASHeader_GetPointRecordsByReturnCount(merged_header, 0),
--                        LASHeader_GetPointRecordsByReturnCount(merged_header, 1), 
--                        LASHeader_GetPointRecordsByReturnCount(merged_header, 2), 
--                        LASHeader_GetPointRecordsByReturnCount(merged_header, 3), 
--                        LASHeader_GetPointRecordsByReturnCount(merged_header, 4));
--        fprintf(stderr, "  min x y z                  %.6f %.6f %.6f\n", 
--                        LASHeader_GetMinX(merged_header), 
--                        LASHeader_GetMinY(merged_header), 
--                        LASHeader_GetMinZ(merged_header));
--        fprintf(stderr, "  max x y z                  %.6f %.6f %.6f\n", 
--                        LASHeader_GetMaxX(merged_header), 
--                        LASHeader_GetMaxY(merged_header), 
--                        LASHeader_GetMaxZ(merged_header));
--    }
--
--    LASHeader_SetScale( merged_header, 
--                        xyz_scale[0], 
--                        xyz_scale[1], 
--                        xyz_scale[2]);
--
--    LASHeader_SetOffset(merged_header, 
--                        xyz_offset[0], 
--                        xyz_offset[1], 
--                        xyz_offset[2] );
--
--    x_scale_factor = LASHeader_GetScaleX(merged_header);
--    if (((LASHeader_GetMaxX(merged_header) - LASHeader_GetOffsetX(merged_header)) / LASHeader_GetScaleX(merged_header)) > largest_int ||
--        ((LASHeader_GetMinX(merged_header) - LASHeader_GetOffsetX(merged_header)) / LASHeader_GetScaleX(merged_header)) < smallest_int )
--    {
--        x_scale_factor = 0.0000001;
--        while (((LASHeader_GetMaxX(merged_header) - LASHeader_GetOffsetX(merged_header)) / x_scale_factor) > largest_int ||
--            ((LASHeader_GetMinX(merged_header) - LASHeader_GetOffsetX(merged_header)) / x_scale_factor) < smallest_int )
--        {
--            x_scale_factor *= 10;
--        }
--        fprintf(stderr, "x_scale_factor of merged_header changed to %g\n", x_scale_factor);
--    }
--
--    y_scale_factor = LASHeader_GetScaleY(merged_header);
--    if (((LASHeader_GetMaxY(merged_header) - LASHeader_GetOffsetY(merged_header)) / y_scale_factor) > largest_int ||
--        ((LASHeader_GetMinY(merged_header) - LASHeader_GetOffsetY(merged_header)) / y_scale_factor) < smallest_int )
--    {
--        y_scale_factor = 0.0000001;
--        while (((LASHeader_GetMaxY(merged_header) - LASHeader_GetOffsetY(merged_header)) / y_scale_factor) > largest_int ||
--            ((LASHeader_GetMinY(merged_header) - LASHeader_GetOffsetY(merged_header)) / y_scale_factor) < smallest_int )
--        {
--            y_scale_factor *= 10;
--        }
--        fprintf(stderr, "y_scale_factor of merged_header changed to %g\n", y_scale_factor);
--    }
--  
--    z_scale_factor = LASHeader_GetScaleZ(merged_header);
--    if (((LASHeader_GetMaxZ(merged_header) - LASHeader_GetOffsetZ(merged_header)) / z_scale_factor) > largest_int ||
--        ((LASHeader_GetMinZ(merged_header) - LASHeader_GetOffsetZ(merged_header)) / z_scale_factor) < smallest_int )
--    {
--        z_scale_factor = 0.0000001;
--        while (((LASHeader_GetMaxZ(merged_header) - LASHeader_GetOffsetZ(merged_header)) / z_scale_factor) > largest_int ||
--            ((LASHeader_GetMinZ(merged_header) - LASHeader_GetOffsetZ(merged_header)) / z_scale_factor) < smallest_int )\
--        {
--            z_scale_factor *= 10;
--        }
--        fprintf(stderr, "z_scale_factor of merged_header changed to %g\n", z_scale_factor);
--    }
--  
--    LASHeader_SetScale( merged_header, 
--                        x_scale_factor, 
--                        y_scale_factor, 
--                        z_scale_factor);
--
--    if (file_name_out == NULL && !use_stdout)
--    {
--        LASError_Print("no output was specified "); 
--        exit(1);
--    }
--
--    writer = LASWriter_Create(file_name_out, merged_header, LAS_MODE_WRITE);
--    if (!writer) { 
--        LASError_Print("Could not create LASWriter "); 
--        exit(1);
--    } 
--
--    if (verbose) ptime("starting second pass.");
--    fprintf(stderr, "second pass ... merge %d LAS files into one ...\n", num_file_name_in);
--
--    for (i = 0; i < num_file_name_in; i++)
--    {
--        reader = LASReader_Create(file_names_in[i]);
--        if (!reader) { 
--            LASError_Print("Could not get LASReader ");
--            exit(1);
--        } 
--        header = LASReader_GetHeader(reader);
--        if (!header) { 
--            LASError_Print("Could not get LASHeader ");
--            exit(1);
--        } 
--
--        same = TRUE;
--        if (LASHeader_GetOffsetX(merged_header) != LASHeader_GetOffsetX(header)) same = FALSE;
--        if (LASHeader_GetOffsetY(merged_header) != LASHeader_GetOffsetY(header)) same = FALSE;
--        if (LASHeader_GetOffsetZ(merged_header) != LASHeader_GetOffsetZ(header)) same = FALSE;
--
--        if (LASHeader_GetScaleX(merged_header) != LASHeader_GetScaleX(header)) same = FALSE;
--        if (LASHeader_GetScaleY(merged_header) != LASHeader_GetScaleY(header)) same = FALSE;
--        if (LASHeader_GetScaleZ(merged_header) != LASHeader_GetScaleZ(header)) same = FALSE;
--    
--
--        if (same)
--        {
--            p = LASReader_GetNextPoint(reader);
--            while (p)
--            {
--                LASWriter_WritePoint(writer, p);
--                p = LASReader_GetNextPoint(reader);
--            }
--        }
--        else
--        {
--            p = LASReader_GetNextPoint(reader);
--            while (p)
--            {
--                LASPoint_SetX(p,(0.5 + (LASPoint_GetX(p) - LASHeader_GetOffsetX(merged_header)) / LASHeader_GetScaleX(merged_header)));
--                LASPoint_SetY(p,(0.5 + (LASPoint_GetY(p) - LASHeader_GetOffsetY(merged_header)) / LASHeader_GetScaleY(merged_header)));
--                LASPoint_SetZ(p,(0.5 + (LASPoint_GetZ(p) - LASHeader_GetOffsetZ(merged_header)) / LASHeader_GetScaleZ(merged_header)));
--                LASWriter_WritePoint(writer, p);
--                p = LASReader_GetNextPoint(reader);
--            }
--        }
--
--        LASHeader_Destroy(header);
--        LASReader_Destroy(reader);
--        reader = NULL;
--    }
--    
--    LASHeader_Destroy(merged_header);
--    LASWriter_Destroy(writer);
--
--    if (verbose) ptime("done.");
--
--    if (verbose) {
--        reader = LASReader_Create(file_name_out);
--        if (!reader) { 
--            LASError_Print("Could not open file ");
--            exit(1);
--        } 
--      
--        header = LASReader_GetHeader(reader);
--        if (!header) { 
--            LASError_Print("Could not get LASHeader ");
--            exit(1);
--        } 
--
--        print_header(stderr, header, file_name_out, skip_vlr);        
--        summary = SummarizePoints(reader);
--        print_point_summary(stderr, summary, header);
--        
--        LASHeader_Destroy(header);
--        header = NULL;            
--        LASReader_Destroy(reader);
--        reader = NULL;
--        
--        LASPoint_Destroy(summary->pmin);
--        LASPoint_Destroy(summary->pmax);
--        free(summary);
--    }
--    
--    return 0;
--}
diff --git a/debian/patches/series b/debian/patches/series
index a68b043..ae695a2 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,2 @@
 fix_library_search
-0001-remove-old-LAStools-utilities-that-don-t-belong-in-liblas.patch
 update_gdal_geotiff.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/liblas.git



More information about the Pkg-grass-devel mailing list