kopia lustrzana https://github.com/OpenDroneMap/ODM
rodzic
b588029f17
commit
96c2cda5b6
|
@ -14,7 +14,7 @@ RUN apt-get install --no-install-recommends -y git cmake python-pip build-essent
|
|||
libgtk2.0-dev libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libflann-dev \
|
||||
libproj-dev libxext-dev liblapack-dev libeigen3-dev libvtk5-dev python-networkx libgoogle-glog-dev libsuitesparse-dev libboost-filesystem-dev libboost-iostreams-dev \
|
||||
libboost-regex-dev libboost-python-dev libboost-date-time-dev libboost-thread-dev python-pyproj python-empy python-nose python-pyside python-pyexiv2 python-scipy \
|
||||
jhead liblas-bin python-matplotlib libatlas-base-dev libgmp-dev libmpfr-dev swig2.0 python-wheel libboost-log-dev
|
||||
jhead liblas-bin python-matplotlib libatlas-base-dev libgmp-dev libmpfr-dev swig2.0 python-wheel libboost-log-dev libjsoncpp-dev
|
||||
|
||||
RUN apt-get remove libdc1394-22-dev
|
||||
RUN pip install --upgrade pip
|
||||
|
|
|
@ -98,6 +98,10 @@ option(ODM_BUILD_CGAL "Force to build CGAL library" OFF)
|
|||
|
||||
SETUP_EXTERNAL_PROJECT(CGAL ${ODM_CGAL_Version} ${ODM_BUILD_CGAL})
|
||||
|
||||
# ---------------------------------------------------------------------------------------------
|
||||
# Hexer
|
||||
#
|
||||
SETUP_EXTERNAL_PROJECT(Hexer 1.4 ON)
|
||||
|
||||
# ---------------------------------------------------------------------------------------------
|
||||
# Open Geometric Vision (OpenGV)
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
set(_proj_name hexer)
|
||||
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/hobu/hexer/archive/2898b96b1105991e151696391b9111610276258f.tar.gz
|
||||
URL_MD5 e8f2788332ad212cf78efa81a82e95dd
|
||||
#--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
|
||||
)
|
|
@ -2,6 +2,7 @@ set(_proj_name pdal)
|
|||
set(_SB_BINARY_DIR "${SB_BINARY_DIR}/${_proj_name}")
|
||||
|
||||
ExternalProject_Add(${_proj_name}
|
||||
DEPENDS hexer
|
||||
PREFIX ${_SB_BINARY_DIR}
|
||||
TMP_DIR ${_SB_BINARY_DIR}/tmp
|
||||
STAMP_DIR ${_SB_BINARY_DIR}/stamp
|
||||
|
@ -19,7 +20,7 @@ ExternalProject_Add(${_proj_name}
|
|||
-BUILD_PLUGIN_PGPOINTCLOUD=ON
|
||||
-DBUILD_PLUGIN_CPD=OFF
|
||||
-DBUILD_PLUGIN_GREYHOUND=OFF
|
||||
-DBUILD_PLUGIN_HEXBIN=OFF
|
||||
-DBUILD_PLUGIN_HEXBIN=ON
|
||||
-DBUILD_PLUGIN_ICEBRIDGE=OFF
|
||||
-DBUILD_PLUGIN_MRSID=OFF
|
||||
-DBUILD_PLUGIN_NITF=OFF
|
||||
|
|
|
@ -21,7 +21,8 @@ install() {
|
|||
libgdal-dev \
|
||||
gdal-bin \
|
||||
libgeotiff-dev \
|
||||
pkg-config
|
||||
pkg-config \
|
||||
libjsoncpp-dev
|
||||
|
||||
echo "Getting CMake 3.1 for MVS-Texturing"
|
||||
sudo apt-get install -y software-properties-common python-software-properties
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import ecto, os
|
||||
import ecto, os, json
|
||||
|
||||
from opendm import io
|
||||
from opendm import log
|
||||
|
@ -46,8 +46,8 @@ class ODMDEMCell(ecto.Cell):
|
|||
odm_dem_root = tree.path('odm_dem')
|
||||
system.mkdir_p(odm_dem_root)
|
||||
|
||||
dsm_output_filename = os.path.join(odm_dem_root, 'dsm.idw.tif')
|
||||
dtm_output_filename = os.path.join(odm_dem_root, 'dtm.idw.tif')
|
||||
dsm_output_filename = os.path.join(odm_dem_root, 'dsm.tif')
|
||||
dtm_output_filename = os.path.join(odm_dem_root, 'dtm.tif')
|
||||
|
||||
# check if we rerun cell or not
|
||||
rerun_cell = (args.rerun is not None and
|
||||
|
@ -60,6 +60,46 @@ class ODMDEMCell(ecto.Cell):
|
|||
(args.dsm and not io.file_exists(dsm_output_filename)) or \
|
||||
rerun_cell:
|
||||
|
||||
# Extract boundaries and srs of point cloud
|
||||
summary_file_path = os.path.join(odm_dem_root, 'odm_georeferenced_model.summary.json')
|
||||
boundary_file_path = os.path.join(odm_dem_root, 'odm_georeferenced_model.boundary.json')
|
||||
|
||||
system.run('pdal info --summary {0} > {1}'.format(tree.odm_georeferencing_model_las, summary_file_path))
|
||||
system.run('pdal info --boundary {0} > {1}'.format(tree.odm_georeferencing_model_las, boundary_file_path))
|
||||
|
||||
pc_proj4 = ""
|
||||
pc_geojson_bounds_feature = None
|
||||
|
||||
with open(summary_file_path, 'r') as f:
|
||||
json_f = json.loads(f.read())
|
||||
pc_proj4 = json_f['summary']['srs']['proj4']
|
||||
|
||||
with open(boundary_file_path, 'r') as f:
|
||||
json_f = json.loads(f.read())
|
||||
pc_geojson_boundary_feature = json_f['boundary']['boundary_json']
|
||||
|
||||
# Write bounds to GeoJSON
|
||||
bounds_geojson_path = os.path.join(odm_dem_root, 'odm_georeferenced_model.bounds.geojson')
|
||||
with open(bounds_geojson_path, "w") as f:
|
||||
f.write(json.dumps({
|
||||
"type": "FeatureCollection",
|
||||
"features": [{
|
||||
"type": "Feature",
|
||||
"geometry": pc_geojson_boundary_feature
|
||||
}]
|
||||
}))
|
||||
|
||||
bounds_shapefile_path = os.path.join(odm_dem_root, 'bounds.shp')
|
||||
|
||||
# Convert bounds to Shapefile
|
||||
kwargs = {
|
||||
'input': bounds_geojson_path,
|
||||
'output': bounds_shapefile_path,
|
||||
'proj4': pc_proj4
|
||||
}
|
||||
system.run('ogr2ogr -overwrite -a_srs "{proj4}" {output} {input}'.format(**kwargs))
|
||||
|
||||
# Process with lidar2dems
|
||||
terrain_params_map = {
|
||||
'flatnonforest': (1, 3),
|
||||
'flatforest': (1, 2),
|
||||
|
@ -72,12 +112,13 @@ class ODMDEMCell(ecto.Cell):
|
|||
'verbose': '-v' if self.params.verbose else '',
|
||||
'slope': terrain_params[0],
|
||||
'cellsize': terrain_params[1],
|
||||
'outdir': odm_dem_root
|
||||
'outdir': odm_dem_root,
|
||||
'site': bounds_shapefile_path
|
||||
}
|
||||
|
||||
l2d_params = '--slope {slope} --cellsize {cellsize} ' \
|
||||
'{verbose} ' \
|
||||
'-o ' \
|
||||
'-o -s {site} ' \
|
||||
'--outdir {outdir}'.format(**kwargs)
|
||||
|
||||
approximate = '--approximate' if args.dem_approximate else ''
|
||||
|
@ -112,6 +153,11 @@ class ODMDEMCell(ecto.Cell):
|
|||
'--resolution {resolution} --radius {radius_steps} '
|
||||
'{gapfill} '.format(**demargs))
|
||||
|
||||
# Rename final output
|
||||
if product == 'dsm':
|
||||
os.rename(os.path.join(odm_dem_root, 'bounds-0_dsm.idw.tif'), dsm_output_filename)
|
||||
elif product == 'dtm':
|
||||
os.rename(os.path.join(odm_dem_root, 'bounds-0_dtm.idw.tif'), dtm_output_filename)
|
||||
|
||||
else:
|
||||
log.ODM_WARNING('Found existing outputs in: %s' % odm_dem_root)
|
||||
|
|
Ładowanie…
Reference in New Issue