Skip to content
This repository has been archived by the owner on Sep 18, 2019. It is now read-only.

Commit

Permalink
adding a more general PDAL reader, which still provides LAS support
Browse files Browse the repository at this point in the history
  • Loading branch information
chambbj committed Oct 18, 2012
1 parent ceb60de commit e9a43ba
Show file tree
Hide file tree
Showing 7 changed files with 481 additions and 4 deletions.
51 changes: 47 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,51 @@ if(PARAVIEW_BUILD_QT_GUI)
${CMAKE_CURRENT_SOURCE_DIR}
)

if(${CMAKE_VERSION} VERSION_LESS 2.8.7 AND NOT WIN32)
include(Qt4Macros-CMake2.8.7)
endif()
# if(${CMAKE_VERSION} VERSION_LESS 2.8.7 AND NOT WIN32)
# include(Qt4Macros-CMake2.8.7)
# endif()
ENDIF(QT4_FOUND)
ENDIF(PARAVIEW_BUILD_QT_GUI)

find_package(libLAS 1.6 REQUIRED)
# Path to additional CMake modules
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR} ${CMAKE_MODULE_PATH})

find_package(libLAS 1.6 REQUIRED)
include_directories(${LIBLAS_INCLUDE_DIRS})
add_definitions(${LIBLAS_DEFINITIONS})

find_package(PDAL REQUIRED)
include_directories(${PDAL_INCLUDE_DIRS})

#------------------------------------------------------------------------------
# settings for Boost dependencies
#------------------------------------------------------------------------------

if(WIN32 AND MSVC)
set(Boost_USE_STATIC_LIBS ON)
endif()
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package( Boost 1.44 COMPONENTS filesystem system REQUIRED )

if( Boost_FOUND )
include_directories(${Boost_INCLUDE_DIRS})
endif()

# make these available for the user to set.
mark_as_advanced(CLEAR Boost_INCLUDE_DIR)
mark_as_advanced(CLEAR Boost_LIBRARY_DIRS)
link_directories(${Boost_LIBRARY_DIRS})

if(Boost_FOUND
AND Boost_INCLUDE_DIRS
AND Boost_LIBRARIES)

list(APPEND CMAKE_REQUIRED_INCLUDES ${Boost_INCLUDE_DIRS})
list(APPEND CMAKE_REQUIRED_LIBRARIES ${Boost_LIBRARIES})
endif()


set(LAS_READER_LIB_NAME vtkLASReader)
ADD_PARAVIEW_PLUGIN(${LAS_READER_LIB_NAME} "1.0"
SERVER_MANAGER_XML vtkLASReader.xml
Expand All @@ -51,3 +85,12 @@ ADD_PARAVIEW_PLUGIN(${LAS_READER_LIB_NAME} "1.0"
)

target_link_libraries(${LAS_READER_LIB_NAME} ${LIBLAS_LIBRARY} ${VTK_LIBRARIES})

set(PDAL_READER_LIB_NAME vtkPDALReader)
ADD_PARAVIEW_PLUGIN(${PDAL_READER_LIB_NAME} "1.0"
SERVER_MANAGER_XML vtkPDALReader.xml
SERVER_MANAGER_SOURCES vtkPDALReader.cxx
GUI_RESOURCE_FILES vtkPDALReaderGUI.xml
)

target_link_libraries(${PDAL_READER_LIB_NAME} ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY} ${PDAL_LIBRARY} ${VTK_LIBRARIES})
110 changes: 110 additions & 0 deletions FindPDAL.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
###############################################################################
#
# CMake module to search for PDAL library
#
# On success, the macro sets the following variables:
# PDAL_FOUND = if the library found
# PDAL_LIBRARIES = full path to the library
# PDAL_INCLUDE_DIR = where to find the library headers also defined,
# but not for general use are
# PDAL_LIBRARY = where to find the PROJ.4 library.
# PDAL_VERSION = version of library which was found, e.g. "1.2.5"
#
# Copyright (c) 2009 Mateusz Loskot <[email protected]>
#
# Module source: http://github.com/mloskot/workshop/tree/master/cmake/
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
###############################################################################
MESSAGE(STATUS "Searching for PDAL ${PDAL_FIND_VERSION}+ library")

IF(PDAL_INCLUDE_DIR)
# Already in cache, be silent
SET(PDAL_FIND_QUIETLY TRUE)
ENDIF()

IF(WIN32)
SET(OSGEO4W_IMPORT_LIBRARY liblas)
IF(DEFINED ENV{OSGEO4W_ROOT})
SET(OSGEO4W_ROOT_DIR $ENV{OSGEO4W_ROOT})
#MESSAGE(STATUS " FindPDAL: trying OSGeo4W using environment variable OSGEO4W_ROOT=$ENV{OSGEO4W_ROOT}")
ELSE()
SET(OSGEO4W_ROOT_DIR c:/OSGeo4W)
#MESSAGE(STATUS " FindPDAL: trying OSGeo4W using default location OSGEO4W_ROOT=${OSGEO4W_ROOT_DIR}")
ENDIF()
ENDIF()


FIND_PATH(PDAL_INCLUDE_DIR
pdal_defines.h
PATH_PREFIXES pdal
PATHS
/usr/include
/usr/local/include
/tmp/lasjunk/include
${OSGEO4W_ROOT_DIR}/include)

if(WIN32)
SET(PDAL_NAMES ${OSGEO4W_IMPORT_LIBRARY} libpdal)
else()
SET(PDAL_NAMES ${OSGEO4W_IMPORT_LIBRARY} pdal)
endif()

FIND_LIBRARY(PDAL_LIBRARY
NAMES ${PDAL_NAMES}
PATHS
/usr/lib
/usr/local/lib
/tmp/lasjunk/lib
${OSGEO4W_ROOT_DIR}/lib)

IF(PDAL_FOUND)
SET(PDAL_LIBRARIES ${PDAL_LIBRARY})
ENDIF()

IF(PDAL_INCLUDE_DIR)
SET(PDAL_VERSION 0)

SET(PDAL_VERSION_H "${PDAL_INCLUDE_DIR}/pdal/pdal_defines.h")
FILE(READ ${PDAL_VERSION_H} PDAL_VERSION_H_CONTENTS)

IF (DEFINED PDAL_VERSION_H_CONTENTS)

# string will be something like "106000", which is xyyzzz (x=major, y=minor, z=patch)
string(REGEX REPLACE ".*#define[ \t]PDAL_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" PDAL_VERSION_MAJOR "${PDAL_VERSION_H_CONTENTS}")
string(REGEX REPLACE ".*#define[ \t]PDAL_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" PDAL_VERSION_MINOR "${PDAL_VERSION_H_CONTENTS}")
string(REGEX REPLACE ".*#define[ \t]PDAL_VERSION_PATCH[ \t]+([0-9]+).*" "\\1" PDAL_VERSION_PATCH "${PDAL_VERSION_H_CONTENTS}")

#message(FATAL_ERROR "PDAL version: ${PDAL_VERSION_MAJOR}.${PDAL_VERSION_MINOR}.${PDAL_VERSION_PATCH}")
if(NOT ${PDAL_VERSION_MAJOR} MATCHES "[0-9]+")
message(FATAL_ERROR "PDAL version parsing failed for PDAL_VERSION_MAJOR!")
endif()
if(NOT ${PDAL_VERSION_MINOR} MATCHES "[0-9]+")
message(FATAL_ERROR "PDAL version parsing failed for PDAL_VERSION_MINOR!")
endif()
if(NOT ${PDAL_VERSION_PATCH} MATCHES "[0-9]+")
message(FATAL_ERROR "PDAL version parsing failed for PDAL_VERSION_PATCH!")
endif()


SET(PDAL_VERSION "${PDAL_VERSION_MAJOR}.${PDAL_VERSION_MINOR}.${PDAL_VERSION_PATCH}"
CACHE INTERNAL "The version string for PDAL library")

IF (PDAL_VERSION VERSION_EQUAL PDAL_FIND_VERSION OR
PDAL_VERSION VERSION_GREATER PDAL_FIND_VERSION)
MESSAGE(STATUS "Found PDAL version: ${PDAL_VERSION}")
ELSE()
MESSAGE(FATAL_ERROR "PDAL version check failed. Version ${PDAL_VERSION} was found, at least version ${PDAL_FIND_VERSION} is required")
ENDIF()
ELSE()
MESSAGE(FATAL_ERROR "Failed to open ${PDAL_VERSION_H} file")
ENDIF()

ENDIF()

# Handle the QUIETLY and REQUIRED arguments and set PDAL_FOUND to TRUE
# if all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PDAL DEFAULT_MSG PDAL_LIBRARY PDAL_INCLUDE_DIR)
6 changes: 6 additions & 0 deletions vtkLASReader.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@

#include "vtkLASReader.h"

#include <fstream>

#include "vtkInformation.h"
#include "vtkInformationVector.h"
#include "vtkObjectFactory.h"
Expand Down Expand Up @@ -100,7 +102,11 @@ int vtkLASReader::RequestData(
polydata->SetPoints(points);

vtkSmartPointer<vtkVertexGlyphFilter> vertexGlyphFilter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
#if VTK_MAJOR_VERSION <= 5
vertexGlyphFilter->AddInput(polydata);
#else
vertexGlyphFilter->AddInputData(polydata);
#endif
vertexGlyphFilter->Update();

output->ShallowCopy(vertexGlyphFilter->GetOutput());
Expand Down
Loading

0 comments on commit e9a43ba

Please sign in to comment.