[Liblas-commits] hg: 4 new changesets
liblas-commits at liblas.org
liblas-commits at liblas.org
Mon Nov 1 10:44:00 EDT 2010
changeset 91fdcdf77a0e in /Volumes/Data/www/liblas.org/hg
details: http://hg.liblas.orghg?cmd=changeset;node=91fdcdf77a0e
summary: no more las2las2
changeset d1c98a3daa11 in /Volumes/Data/www/liblas.org/hg
details: http://hg.liblas.orghg?cmd=changeset;node=d1c98a3daa11
summary: other targets, comment out BUILD_TYPE
changeset 62530765e0f8 in /Volumes/Data/www/liblas.org/hg
details: http://hg.liblas.orghg?cmd=changeset;node=62530765e0f8
summary: merge
changeset 96c022e7f627 in /Volumes/Data/www/liblas.org/hg
details: http://hg.liblas.orghg?cmd=changeset;node=96c022e7f627
summary: qualify return type
diffstat:
CMakeLists.txt | 17 +-
apps/CMakeLists.txt | 15 +-
apps/bigfile_boost_iostreams_test.cpp | 141 +++++
apps/bigtest.c | 58 ++
apps/bigtest.cpp | 55 --
apps/las2las.cpp | 13 +-
apps/lasindex_test.cpp | 6 +
apps/lasinfo.cpp | 38 +-
apps/laskernel.cpp | 648 ++++++++++++-------------
cmake/modules/BuildOSGeo4W.cmake | 2 +-
doc/compilation.txt | 6 +-
doc/docs.txt | 1 +
doc/download.txt | 21 +-
doc/faq.txt | 23 +-
doc/features.txt | 12 +-
doc/index.txt | 3 +-
doc/osgeo4w.txt | 11 +
doc/start.txt | 93 +++
doc/utilities/las2las.txt | 6 +-
doc/utilities/lasinfo.txt | 10 +-
hobu-config.bat | 7 +-
include/liblas/detail/index/indexcell.hpp | 6 +-
include/liblas/detail/private_utility.hpp | 13 -
include/liblas/detail/reader/cachedreader.hpp | 1 +
include/liblas/detail/reader/point.hpp | 3 -
include/liblas/guid.hpp | 25 +-
include/liblas/iterator.hpp | 5 +-
include/liblas/lasbounds.hpp | 2 +-
include/liblas/lasdimension.hpp | 3 +-
include/liblas/laserror.hpp | 6 +-
include/liblas/lasfilter.hpp | 18 +-
include/liblas/lasheader.hpp | 6 +-
include/liblas/lasindex.hpp | 177 +++---
include/liblas/lasreader.hpp | 9 +-
include/liblas/lasschema.hpp | 7 +-
include/liblas/lasspatialreference.hpp | 6 +-
include/liblas/lastransform.hpp | 6 +-
include/liblas/liblas.hpp | 5 +-
src/detail/reader/cachedreader.cpp | 36 +-
src/detail/reader/point.cpp | 16 +-
src/lasheader.cpp | 62 +-
src/laspoint.cpp | 73 +-
src/lasreader.cpp | 105 ++--
src/lasspatialreference.cpp | 8 +-
src/lastransform.cpp | 41 +-
src/laswriter.cpp | 21 +-
src/utility.cpp | 36 +-
test/unit/lasspatialreference_test.cpp | 163 ++++++-
48 files changed, 1313 insertions(+), 732 deletions(-)
diffs (truncated from 3124 to 300 lines):
diff -r 12532d4c7222 -r 96c022e7f627 CMakeLists.txt
--- a/CMakeLists.txt Wed Oct 27 11:23:13 2010 -0500
+++ b/CMakeLists.txt Mon Nov 01 09:43:41 2010 -0500
@@ -101,17 +101,21 @@
endif()
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")
+
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
- # Recommended C++ compilation flags
- # -Weffc++
- set(LIBLAS_GCC_CXX_FLAGS
- "-pedantic -ansi -Wall -Wpointer-arith -Wcast-align -Wcast-qual -Wfloat-equal -Wredundant-decls -Wno-long-long")
-
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC ${LIBLAS_GCC_CXX_FLAGS}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC ${LIBLAS_COMMON_CXX_FLAGS}")
if (CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98")
endif()
+
+ elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" OR "${CMAKE_CXX_COMPILER}" MATCHES "clang")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LIBLAS_COMMON_CXX_FLAGS}")
endif()
endif(WIN32)
@@ -132,6 +136,7 @@
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
+# NOTE: Add iostreams to COMPONENTS list to enable bigfile_boost_iostreams_test
find_package(Boost 1.38 COMPONENTS program_options REQUIRED)
if(Boost_FOUND AND Boost_PROGRAM_OPTIONS_FOUND)
diff -r 12532d4c7222 -r 96c022e7f627 apps/CMakeLists.txt
--- a/apps/CMakeLists.txt Wed Oct 27 11:23:13 2010 -0500
+++ b/apps/CMakeLists.txt Mon Nov 01 09:43:41 2010 -0500
@@ -27,10 +27,14 @@
set(BIGFILE_TEST bigfile_test)
set(LASINDEX_TEST lasindex_test)
+if(Boost_IOSTREAMS_FOUND)
+ set(BIGFILE_BIO_TEST bigfile_boost_iostreams_test)
+endif()
+
# Set the build type to release if it is not explicitly set by the user and
# isn't in the cache yet
if (NOT CMAKE_BUILD_TYPE )
-set(CMAKE_BUILD_TYPE "Release")
+ set(CMAKE_BUILD_TYPE "Release")
endif()
# Utilities depending on 3rd-pary libraries
@@ -44,7 +48,7 @@
set(LIBLAS_UTILITIES
${LASINFO_OLD} ${LASINFO} ${LASMERGE} ${LAS2LAS} ${LAS2TXT} ${TXT2LAS}
- ${LAS2OGR} ${LAS2OCI} ${LAS2LAS} ${LAS2LAS_OLD} ${LASBLOCK} ${TS2LAS} )
+ ${LAS2OGR} ${LAS2OCI} ${LAS2LAS} ${LAS2LAS_OLD} ${LASBLOCK} ${TS2LAS})
# TODO: Experimental and requires testing --mloskot
# Generate user-specific settings for Visual Studio project
@@ -142,7 +146,7 @@
endif()
if(BIGFILE_TEST)
- add_executable(${BIGFILE_TEST} bigtest.cpp)
+ add_executable(${BIGFILE_TEST} bigtest.c)
target_link_libraries(${BIGFILE_TEST} ${LIBLAS_C_LIB_NAME})
endif()
@@ -151,6 +155,11 @@
target_link_libraries(${LASINDEX_TEST} ${APPS_CPP_DEPENDENCIES} ${Boost_LIBRARIES})
endif()
+if(BIGFILE_BIO_TEST)
+ add_executable(${BIGFILE_BIO_TEST} bigfile_boost_iostreams_test.cpp)
+ target_link_libraries(${BIGFILE_BIO_TEST} ${APPS_CPP_DEPENDENCIES} ${Boost_LIBRARIES})
+endif()
+
###############################################################################
# Targets installation
diff -r 12532d4c7222 -r 96c022e7f627 apps/bigfile_boost_iostreams_test.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/apps/bigfile_boost_iostreams_test.cpp Mon Nov 01 09:43:41 2010 -0500
@@ -0,0 +1,141 @@
+/******************************************************************************
+ *
+ * Project: libLAS - http://liblas.org - A BSD library for LAS format data.
+ * Purpose: Test reading and writing of large LAS files (>4GB)
+ * using portable Boost.IOStreams library.
+ * Author: Mateusz Loskot, mateusz at loskot.net
+ *
+ ******************************************************************************
+ * Copyright (c) 2010, Mateusz Loskot
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of the Martin Isenburg or Iowa Department
+ * of Natural Resources nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+ * OF SUCH DAMAGE.
+ ****************************************************************************/
+#include <liblas/laspoint.hpp>
+#include <liblas/lasreader.hpp>
+#include <liblas/laswriter.hpp>
+#ifdef _MSC_VER
+# pragma warning(push)
+# pragma warning(disable: 4702)
+#endif
+#include <boost/iostreams/device/file_descriptor.hpp>
+#include <boost/iostreams/positioning.hpp>
+#include <boost/iostreams/stream.hpp>
+#ifdef _MSC_VER
+# pragma warning(pop)
+#endif()
+#include <cassert>
+#include <exception>
+#include <iostream>
+#include <sstream>
+#include <stdexcept>
+
+namespace bio = boost::iostreams;
+namespace las = liblas;
+
+int main()
+{
+ try
+ {
+ // name of generated file
+ std::string filename("bigfile_bio_test.las");
+ // test writing mor than 204 million points
+ bio::stream_offset const n_million_points = 210;
+ bio::stream_offset const point_count = 1024 * 1024 * n_million_points;
+
+ std::cout.setf(std::ios::fixed, std::ios::floatfield);
+ std::cout.setf(std::ios::showpoint);
+ std::cout.precision(2);
+
+ std::cout << "LAS file: " << filename << std::endl;
+ std::cout << "Writing " << point_count << " points" << std::endl;
+ {
+ typedef bio::stream<bio::file_descriptor_sink> bio_ostream;
+ bio_ostream bigofs(filename);
+ las::Header header;
+ las::Writer writer(bigofs, header);
+
+ las::Point empty_point;
+ bio::stream_offset i = 0;
+ for (i = 0; i < point_count; ++i)
+ {
+ if (!writer.WritePoint(empty_point))
+ {
+ std::ostringstream oss;
+ oss << "failed to write point #" << i;
+ throw std::runtime_error(oss.str());
+ }
+
+ if (i % 1000 == 0)
+ {
+ std::cout << "\b\b\b\b\b\b\b\b" << double(i)/point_count * 100.0;
+ }
+ }
+ assert(i == point_count);
+ }
+
+ std::cout << std::endl << "Reading " << point_count << " points" << std::endl;
+ {
+ typedef bio::stream<bio::file_descriptor_source> bio_istream;
+ bio_istream bigifs(filename);
+ las::Reader reader(bigifs);
+
+ bio::stream_offset i = 0;
+ while (reader.ReadNextPoint())
+ {
+ las::Point const& p = reader.GetPoint();
+
+ if (!p.Validate())
+ {
+ std::ostringstream oss;
+ oss << "invalid point around #" << i;
+ throw std::runtime_error(oss.str());
+ }
+
+ if (i % 1000 == 0)
+ {
+ std::cout << "\b\b\b\b\b\b\b\b" << double(i)/point_count * 100.0;
+ }
+ ++i;
+ }
+ assert(i == point_count);
+ }
+
+ std::cout << std::endl << "Done." << std::endl;
+
+ return EXIT_SUCCESS;
+ }
+ catch (std::exception const& e)
+ {
+ std::cerr << e.what() << std::endl;
+ }
+
+ return EXIT_FAILURE;
+}
diff -r 12532d4c7222 -r 96c022e7f627 apps/bigtest.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/apps/bigtest.c Mon Nov 01 09:43:41 2010 -0500
@@ -0,0 +1,58 @@
+#include <liblas.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+void dumperror (const char * appmsg)
+{
+ printf("\n%s.\n\tMessage: %s\n\tMethod: %s",appmsg, LASError_GetLastErrorMsg(), LASError_GetLastErrorMethod());
+}
+int main()
+{
+
+ LASHeaderH header = NULL;
+ LASWriterH writer = NULL;
+ LASReaderH reader = NULL;
+ LASPointH pt = NULL;
+ LASError err;
+ // Limitation about seeking past 4GB output size. At 20 bytes / record, we
+ // can successfully write 204 million records, but not 205.
+ const unsigned long nMillionPoints = 205;
+ const unsigned long NPOINTS = 1024*1024*nMillionPoints ;
+ const char * OutputName = "Issue147.las";
+ unsigned long i = 0;
+ unsigned long npoints = 0;
+
+ // Write a LAS file and after the points are in, update the header.
+ header = LASHeader_Create();
+ writer = LASWriter_Create(OutputName, header, LAS_MODE_WRITE);
+
+ for (i = 0; i < NPOINTS; i++)
+ {
+ if (i % 1000 == 0)
+ printf("\b\b\b\b\b\b\b%6.2f%%", ((double)i)/NPOINTS * 100.0);
+
+ pt = LASPoint_Create();
+ err = LASPoint_SetX(pt, 0);
+ if (err) printf ("For point %lu, failed to set point value X\n", i);
+ err = LASPoint_SetY(pt, 0);
+ if (err) printf ("For point %lu, failed to set point value Y\n", i);
+ err = LASPoint_SetZ(pt, 0);
+ if (err) printf ("For point %lu, failed to set point value Z\n", i);
+ err = LASWriter_WritePoint(writer, pt);
+ if (err) printf ("For point %lu, failed to WritePoint\n", i);
+ LASPoint_Destroy(pt);
+ }
+ err = LASHeader_SetPointRecordsCount(header, NPOINTS);
+ if (err) dumperror ("Failed to LASHeader_SetPointRecordsCount\n");
+ err = LASWriter_WriteHeader(writer, header);
+ if (err) dumperror ("Failed to LASWriter_WriteHeader");
+ LASWriter_Destroy(writer);
+ LASHeader_Destroy(header);
+
+ // Read the file we just wrote and check the header data.
+ reader = LASReader_Create(OutputName);
+ header = LASReader_GetHeader(reader);
+ npoints = LASHeader_GetPointRecordsCount(header);
+ printf ("\n\nWrote %lu, Read %lu (testing %lu Million (1024 x 1024) Points)\n", NPOINTS, npoints, nMillionPoints);
+}
diff -r 12532d4c7222 -r 96c022e7f627 apps/bigtest.cpp
--- a/apps/bigtest.cpp Wed Oct 27 11:23:13 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-#include <liblas.h>
More information about the Liblas-commits
mailing list