diff --git a/README.md b/README.md index 598e2ac8..7495cc03 100644 --- a/README.md +++ b/README.md @@ -130,7 +130,7 @@ When the process finishes, the results will be organized as follows: |-- texture_N.jpg # Associated textured images used by the model |-- odm_georeferencing/ |-- odm_georeferenced_model.ply # A georeferenced dense point cloud - |-- odm_georeferenced_model.ply.laz # LAZ format point cloud + |-- odm_georeferenced_model.laz # LAZ format point cloud |-- odm_georeferenced_model.csv # XYZ format point cloud |-- odm_georeferencing_log.txt # Georeferencing log |-- odm_georeferencing_transform.txt# Transform used for georeferencing diff --git a/SuperBuild/CMakeLists.txt b/SuperBuild/CMakeLists.txt index 1aee12c3..d559a410 100644 --- a/SuperBuild/CMakeLists.txt +++ b/SuperBuild/CMakeLists.txt @@ -124,6 +124,7 @@ set(custom_libs OpenGV CMVS Catkin Ecto + LASzip PDAL MvsTexturing ) diff --git a/SuperBuild/cmake/External-LASzip.cmake b/SuperBuild/cmake/External-LASzip.cmake new file mode 100644 index 00000000..1cea4788 --- /dev/null +++ b/SuperBuild/cmake/External-LASzip.cmake @@ -0,0 +1,26 @@ +set(_proj_name laszip) +set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") + +ExternalProject_Add(${_proj_name} + DEPENDS + PREFIX ${_SB_BINARY_DIR} + TMP_DIR ${_SB_BINARY_DIR}/tmp + STAMP_DIR ${_SB_BINARY_DIR}/stamp + #--Download step-------------- + DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} + URL https://github.com/LASzip/LASzip/releases/download/3.2.2/laszip-src-3.2.2.tar.gz + #--Update/Patch step---------- + UPDATE_COMMAND "" + #--Configure step------------- + SOURCE_DIR ${SB_SOURCE_DIR}/${_proj_name} + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX:PATH=${SB_INSTALL_DIR} + #--Build step----------------- + BINARY_DIR ${_SB_BINARY_DIR} + #--Install step--------------- + INSTALL_DIR ${SB_INSTALL_DIR} + #--Output logging------------- + LOG_DOWNLOAD OFF + LOG_CONFIGURE OFF + LOG_BUILD OFF +) diff --git a/SuperBuild/cmake/External-PDAL.cmake b/SuperBuild/cmake/External-PDAL.cmake index 7a919804..685f1913 100644 --- a/SuperBuild/cmake/External-PDAL.cmake +++ b/SuperBuild/cmake/External-PDAL.cmake @@ -2,14 +2,13 @@ set(_proj_name pdal) set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}") ExternalProject_Add(${_proj_name} - DEPENDS hexer + DEPENDS hexer laszip PREFIX ${_SB_BINARY_DIR} TMP_DIR ${_SB_BINARY_DIR}/tmp STAMP_DIR ${_SB_BINARY_DIR}/stamp #--Download step-------------- DOWNLOAD_DIR ${SB_DOWNLOAD_DIR} - URL https://github.com/PDAL/PDAL/archive/e881b581e3b91a928105d67db44c567f3b6d1afe.tar.gz - URL_MD5 cadbadf1c83d69d6525cfffd41473323 + URL https://github.com/PDAL/PDAL/releases/download/1.7.2/PDAL-1.7.2-src.tar.gz #--Update/Patch step---------- UPDATE_COMMAND "" #--Configure step------------- diff --git a/opendm/types.py b/opendm/types.py index 65a61c20..fea83142 100644 --- a/opendm/types.py +++ b/opendm/types.py @@ -255,16 +255,18 @@ class ODM_GeoRef(object): 'srs': self.projection.srs, 'json': json_file} - # create pipeline file transform.xml to enable transformation + # create pipeline file las.json to write odm_georeferenced_model.laz point cloud pipeline = '{{' \ ' "pipeline":[' \ ' "untransformed.ply",' \ ' {{' \ + ' "type":"writers.las",' \ ' "a_srs":"{srs}",' \ ' "offset_x":"{east}",' \ ' "offset_y":"{north}",' \ ' "offset_z":"0",' \ - ' "filename":"transformed.las"' \ + ' "compression":"laszip",' \ + ' "filename":"{f_out}"' \ ' }}' \ ' ]' \ '}}'.format(**kwargs) @@ -273,8 +275,7 @@ class ODM_GeoRef(object): f.write(pipeline) # call pdal - system.run('{bin}/pdal pipeline -i {json} --readers.ply.filename={f_in} ' - '--writers.las.filename={f_out}'.format(**kwargs)) + system.run('{bin}/pdal pipeline -i {json} --readers.ply.filename={f_in}'.format(**kwargs)) def utm_to_latlon(self, _file, _photo, idx): @@ -475,7 +476,7 @@ class ODM_Tree(object): self.odm_georeferencing_model_obj_geo = 'odm_textured_model_geo.obj' self.odm_georeferencing_xyz_file = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.csv') - self.odm_georeferencing_las_json = io.join_paths( + self.odm_georeferencing_laz_json = io.join_paths( self.odm_georeferencing, 'las.json') self.odm_georeferencing_model_laz = io.join_paths( self.odm_georeferencing, 'odm_georeferenced_model.laz') diff --git a/tests/test_odm.py b/tests/test_odm.py index 648a657b..2604c315 100644 --- a/tests/test_odm.py +++ b/tests/test_odm.py @@ -136,7 +136,7 @@ class TestGeoreferencing(unittest.TestCase): def test_las_out(self): self.assertTrue(os.path.isfile(os.path.join(self.app.georeferencing.inputs.tree.odm_georeferencing, - "odm_georeferenced_model.ply.las"))) + "odm_georeferenced_model.laz"))) class TestOrthophoto(unittest.TestCase):