Difference between revisions of "Running OpenDroneMap"
| (18 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
| + | === Drone Workshop === | ||
| + | |||
| + | Part I | ||
| + | |||
| + | 0. The data | ||
| + | |||
| + | EPSG:25832 | ||
| + | |||
| + | 0.1 The images | ||
| + | |||
| + | 0.2 The ground control points | ||
| + | |||
| + | 0.2.1 Discuss how to get GCP: survey or from a reference dataset | ||
| + | |||
| + | 0.3 The flight path | ||
| + | |||
| + | |||
| + | 1. WebODM | ||
| + | |||
| + | 1.2 Preparation and Installation | ||
| + | |||
| + | 1.3 Run our first task | ||
| + | |||
| + | |||
| + | 2. Overview of the products | ||
| + | |||
| + | 2.1 Orthophoto | ||
| + | |||
| + | 2.2 Point cloud | ||
| + | |||
| + | 2.3 DSM | ||
| + | |||
| + | 2.4 DTM | ||
| + | |||
| + | Part II | ||
| + | |||
| + | 3. Fine tunning the data | ||
| + | |||
| + | 3.1 Clip orthophoto | ||
| + | |||
| + | Create a mask layer | ||
| + | |||
| + | Clip | ||
| + | |||
| + | Enable JPG compression | ||
| + | |||
| + | 3.2 Point cloud | ||
| + | |||
| + | Clip with pdal | ||
| + | |||
| + | Classify with pdal | ||
| + | |||
| + | |||
| + | |||
| + | 4. Taking advantagle of the artifacts | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | [[Drone workshop print screens]] | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | 1. Flight | ||
| + | |||
| + | WebODM | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | pip install docker-compose | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | 10:54 | ||
| + | |||
| + | 2. Data products | ||
| + | |||
| + | 2.1 Orthophoto | ||
| + | |||
| + | Discussion: GCP, impact on the elevation model | ||
| + | |||
| + | Swipe tool | ||
| + | |||
| + | Point value: check ortho values | ||
| + | |||
| + | 2.2 DEM/DSM | ||
| + | |||
| + | Discussion: difference between | ||
| + | |||
| + | Raster value | ||
| + | |||
| + | Profile tool | ||
| + | |||
| + | Visualization: hillshade | ||
| + | |||
| + | http://plas.io/ | ||
| + | |||
| + | https://pdal.io/tutorial/pcl_ground/index.html#pcl-ground | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | -- original | ||
| + | pdal translate -i /code/odm_georeferencing/odm_georeferenced_model.laz -o /code/odm_georeferencing/odm_georeferenced_model.laz smrf --filters.smrf.cell=2 --filters.smrf.slope=10 --filters.smrf.window=10 | ||
| + | |||
| + | -- VERY GOOD | ||
| + | pdal translate -i odm_georeferencing/odm_georeferenced_model.ply -o odm_georeferencing/odm_georeferenced_model_2.laz smrf --filters.smrf.cell=2 --filters.smrf.window=10 | ||
| + | |||
| + | -- good | ||
| + | pdal ground -i odm_georeferencing/odm_georeferenced_model.ply -o odm_georeferencing/odm_georeferenced_model_3.laz | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | |||
| + | PotreeConverter odm_georeferenced_model.ply -o ~/dev/potree/examples/odm -p qgis.drone.workshop --overwrite --projection "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0.0.0.0.0.0.0 +units=m" | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | jgr@zoe:~/dev/potree$ gulp watch | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | jgr@zoe:~/dev/PotreeConverter/master/build/PotreeConverter$ PotreeConverter ~/Documentos/workshop2/odm_georeferencing/odm_georeferenced_model.ply -o ~/dev/potree/examples/odm -p qgis.drone.workshop --overwrite --projection "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0.0.0.0.0.0.0 +units=m" | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | 2.3 Point cloud | ||
| + | |||
| + | What we get from the software | ||
| + | |||
| + | Visualization tools | ||
| + | |||
| + | https://pdal.io/workshop/exercises/analysis/dtm/dtm.html | ||
| + | |||
| + | 3. Processing data products | ||
| + | |||
| + | |||
| + | 3.1 Better classification | ||
| + | |||
| + | lasground | ||
| + | |||
| + | 3.2 lasheight | ||
| + | |||
| + | 3.3 lasclassify | ||
| + | |||
=== DJI Mavic 2 PRO === | === DJI Mavic 2 PRO === | ||
| Line 138: | Line 284: | ||
Será que voar com a câmara a 75 graus ajuda? Fiz um voo com Double Grid, com a camara a 70 graus (default do Pix4d capture). | Será que voar com a câmara a 75 graus ajuda? Fiz um voo com Double Grid, com a camara a 70 graus (default do Pix4d capture). | ||
| + | |||
| + | ==== Mac ==== | ||
| + | |||
| + | 1. Install Docker | ||
| + | |||
| + | 2. <syntaxhighlight lang="bash"> | ||
| + | docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_meshing:/code/odm_meshing -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_dem:/code/odm_dem opendronemap/opendronemap --dtm --dsm | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | With GCP (calculating 3000-y coordinate) | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_meshing:/code/odm_meshing -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_dem:/code/odm_dem -v $(pwd)/gcp_list.txt:/code/gcp_list.txt opendronemap/opendronemap --dtm --dsm --gcp gcp_list.txt | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | With GCP (ignoring de - in y coordinate) | ||
| + | |||
| + | TIP: ignore the - (minus) in y axis. | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | cd uav_nysted-1 | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
| + | docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_meshing:/code/odm_meshing -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_dem:/code/odm_dem -v $(pwd)/gcp_list.txt:/code/gcp_list.txt opendronemap/opendronemap --dtm --dsm --gcp gcp_list.txt | ||
| + | </syntaxhighlight> | ||
==== Windows ==== | ==== Windows ==== | ||
| + | |||
| + | Install Docker | ||
| + | |||
| + | Configure docker (more CPU, more memory) | ||
| + | |||
| + | CPUs: 6 | ||
| + | |||
| + | Memory: 12032 Mb | ||
| + | |||
| + | Swap: 4096 Mb | ||
| + | |||
| + | Create the projet folder structure | ||
| + | |||
| + | Project folder: | ||
| + | c:\Users\dlt265\Documents\uav_sckovskolen_feb20018_incl_GCP\ | ||
| + | |||
| + | Image folder: | ||
| + | c:\Users\dlt265\Documents\uav_sckovskolen_feb20018_incl_GCP\images | ||
| + | |||
| + | Create folders for the OpenDroneMap output. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| − | + | cd Documents\uav_sckovskolen_feb20018_incl_GCP | |
| + | md odm_orthophoto | ||
| + | md odm_texturing | ||
| + | md odm_georeferencing | ||
| + | md odm_meshing | ||
| + | md opensfm | ||
| + | md odm_dem | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | <syntaxhighlight lang="bash"> | |
| + | docker run -it --rm -v $pwd/images:/code/images -v $pwd/odm_orthophoto:/code/odm_orthophoto -v $pwd/odm_texturing:/code/odm_texturing -v $pwd/odm_georeferencing:/code/odm_georeferencing -v $pwd/odm_meshing:/code/odm_meshing -v $pwd/opensfm:/code/opensfm -v $pwd/odm_dem:/code/odm_dem opendronemap/opendronemap --dtm --dsm | ||
| + | </syntaxhighlight> | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Line 167: | Line 367: | ||
sudo chown -R jgr:jgr * | sudo chown -R jgr:jgr * | ||
git clone https://github.com/mapillary/OpenSfM.git | git clone https://github.com/mapillary/OpenSfM.git | ||
| − | cd OpenSfM | + | cd OpenSfM/viewer |
| − | ln -s ../images . | + | ln -s ../../images . |
python2 -m SimpleHTTPServer 7777 | python2 -m SimpleHTTPServer 7777 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 16:49, 6 March 2019
Drone Workshop
Part I
0. The data
EPSG:25832
0.1 The images
0.2 The ground control points
0.2.1 Discuss how to get GCP: survey or from a reference dataset
0.3 The flight path
1. WebODM
1.2 Preparation and Installation
1.3 Run our first task
2. Overview of the products
2.1 Orthophoto
2.2 Point cloud
2.3 DSM
2.4 DTM
Part II
3. Fine tunning the data
3.1 Clip orthophoto
Create a mask layer
Clip
Enable JPG compression
3.2 Point cloud
Clip with pdal
Classify with pdal
4. Taking advantagle of the artifacts
1. Flight
WebODM
pip install docker-compose
10:54
2. Data products
2.1 Orthophoto
Discussion: GCP, impact on the elevation model
Swipe tool
Point value: check ortho values
2.2 DEM/DSM
Discussion: difference between
Raster value
Profile tool
Visualization: hillshade
https://pdal.io/tutorial/pcl_ground/index.html#pcl-ground
-- original
pdal translate -i /code/odm_georeferencing/odm_georeferenced_model.laz -o /code/odm_georeferencing/odm_georeferenced_model.laz smrf --filters.smrf.cell=2 --filters.smrf.slope=10 --filters.smrf.window=10
-- VERY GOOD
pdal translate -i odm_georeferencing/odm_georeferenced_model.ply -o odm_georeferencing/odm_georeferenced_model_2.laz smrf --filters.smrf.cell=2 --filters.smrf.window=10
-- good
pdal ground -i odm_georeferencing/odm_georeferenced_model.ply -o odm_georeferencing/odm_georeferenced_model_3.laz
PotreeConverter odm_georeferenced_model.ply -o ~/dev/potree/examples/odm -p qgis.drone.workshop --overwrite --projection "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0.0.0.0.0.0.0 +units=m"
jgr@zoe:~/dev/potree$ gulp watch
jgr@zoe:~/dev/PotreeConverter/master/build/PotreeConverter$ PotreeConverter ~/Documentos/workshop2/odm_georeferencing/odm_georeferenced_model.ply -o ~/dev/potree/examples/odm -p qgis.drone.workshop --overwrite --projection "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0.0.0.0.0.0.0 +units=m"
2.3 Point cloud
What we get from the software
Visualization tools
https://pdal.io/workshop/exercises/analysis/dtm/dtm.html
3. Processing data products
3.1 Better classification
lasground
3.2 lasheight
3.3 lasclassify
DJI Mavic 2 PRO
Sensor size, Video about sensor size
Erro
Culpado: /home/jgr/PycharmProjects/OpenDroneMap/modules/odm_extract_utm
Todas as imagens estão com Exif.GPSInfo.GPSAltitude = 0.0
if (lon == 0.0 || lat == 0.0 || alt == 0.0) {
std::string error("Failed parsing GPS position for " + imageFilename);
throw UtmExtractorException(error);
}
Remendo
exiv2 -pa DJI_0210.JPG
Exif.GPSInfo.GPSAltitude Rational 1 0.0 m
exiv2 -M"set Exif.GPSInfo.GPSAltitude Rational 1/10" DJI_0210.JPG
exiv2 -pa DJI_0210.JPG
Exif.GPSInfo.GPSAltitude Rational 1 0.1 m
Chamada:
[INFO] Wrote images database: /code/images.json
[INFO] Found 106 usable images
[DEBUG] running /code/build/bin/odm_extract_utm -imagesPath /code/images/ -imageListFile /code/img_list.txt -outputCoordFile /code/odm_georeferencing/coords.txt -logFile /code/odm_georeferencing/odm_georeferencing_utm_log.txt
Error in OdmExtractUtm:
Failed parsing GPS position for DJI_0301.JPG
For more detailed information, see log file.
[INFO] Found 106 usable images
[WARNING] Could not generate coordinates file. Ignore if there is a GCP file. Error: Error in OdmExtractUtm:
Failed parsing GPS position for DJI_0301.JPG
For more detailed information, see log file.
(...)
Building objmodel:
Saving model... done.
Whole texturing procedure took: 225.586s
[INFO] Running ODM Texturing Cell - Finished
[INFO] Running ODM Georeferencing Cell
[WARNING] Georeferencing failed. Make sure your photos have geotags in the EXIF or you have provided a GCP file.
[INFO] Running ODM Georeferencing Cell - Finished
[INFO] Running ODM DEM Cell
[INFO] Classify: True
[INFO] Create DSM: True
[INFO] Create DTM: True
[INFO] DEM input file /code/odm_georeferencing/odm_georeferenced_model.las found: False
[WARNING] DEM will not be generated
[INFO] Running ODM DEM Cell - Finished
[INFO] Running ODM Orthophoto Cell
[DEBUG] running /code/build/bin/odm_orthophoto -inputFile /code/odm_texturing/odm_textured_model.obj -logFile /code/odm_orthophoto/odm_orthophoto_log.txt -outputFile /code/odm_orthophoto/odm_orthophoto.png -resolution 10.0 -outputCornerFile /code/odm_orthophoto/odm_orthophoto_corners.txt
[WARNING] No geo-referenced orthophoto created due to missing geo-referencing or corner coordinates.
[INFO] Running ODM OrthoPhoto Cell - Finished
[INFO] OpenDroneMap app finished - Sat Dec 29 22:12:22 2018
Running docker OpenDroneMap
Update to last OpenDroneMap docker image
docker pull opendronemap/opendronemap
OpenDroneMap docker image
- Install docker
- Add you user to docker group
- sudo -H pip install requests
mkdir OpenDroneMap
cd OpenDroneMap
git clone git@github.com:OpenDroneMap/odm_data_aukerman.git
cd odm_data_aukerman
export odmi=`pwd`
ls -l $odmi
docker run -it --rm \
-v $odmi/images:/code/images \
-v $odmi/odm_orthophoto:/code/odm_orthophoto \
-v $odmi/odm_texturing:/code/odm_texturing \
-v $odmi/odm_georeferencing:/code/odm_georeferencing \
-v $odmi/odm_meshing:/code/odm_meshing \
-v $odmi/opensfm:/code/opensfm \
-v $odmi/odm_dem:/code/odm_dem \
opendronemap/opendronemap --dtm --dsm
cd /home/jgr/Documentos/sletten16maj2018-gcp
export odmi=`pwd`
docker run -it --rm \
-v $odmi/images:/code/images \
-v $odmi/gcp_list.txt:/code/gcp_list.txt \
-v $odmi/odm_orthophoto:/code/odm_orthophoto \
-v $odmi/odm_texturing:/code/odm_texturing \
-v $odmi/odm_georeferencing:/code/odm_georeferencing \
-v $odmi/odm_meshing:/code/odm_meshing \
-v $odmi/opensfm:/code/opensfm \
opendronemap/opendronemap --gcp gcp_list.txt --dtm --dsm
Sem GCP:
cd ~/Documentos/costanovadoprado/
export odmi=`pwd`
docker run -it --rm \
-v $odmi/images:/code/images \
-v $odmi/odm_orthophoto:/code/odm_orthophoto \
-v $odmi/odm_texturing:/code/odm_texturing \
-v $odmi/odm_georeferencing:/code/odm_georeferencing \
-v $odmi/odm_meshing:/code/odm_meshing \
-v $odmi/opensfm:/code/opensfm \
-v $odmi/odm_dem:/code/odm_dem \
opendronemap/opendronemap --dtm --dsm --orthophoto-resolution 10.0
Nota: os ortos estão a ficar com muitas interferências do modelo 3D, nas áreas urbanas.
Related problem: http://community.opendronemap.org/t/buildings/929
Será que voar com a câmara a 75 graus ajuda? Fiz um voo com Double Grid, com a camara a 70 graus (default do Pix4d capture).
Mac
1. Install Docker
2.
docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_meshing:/code/odm_meshing -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_dem:/code/odm_dem opendronemap/opendronemap --dtm --dsm
With GCP (calculating 3000-y coordinate)
docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_meshing:/code/odm_meshing -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_dem:/code/odm_dem -v $(pwd)/gcp_list.txt:/code/gcp_list.txt opendronemap/opendronemap --dtm --dsm --gcp gcp_list.txt
With GCP (ignoring de - in y coordinate)
TIP: ignore the - (minus) in y axis.
cd uav_nysted-1
docker run -it --rm -v $(pwd)/images:/code/images -v $(pwd)/odm_orthophoto:/code/odm_orthophoto -v $(pwd)/odm_texturing:/code/odm_texturing -v $(pwd)/odm_georeferencing:/code/odm_georeferencing -v $(pwd)/odm_meshing:/code/odm_meshing -v $(pwd)/opensfm:/code/opensfm -v $(pwd)/odm_dem:/code/odm_dem -v $(pwd)/gcp_list.txt:/code/gcp_list.txt opendronemap/opendronemap --dtm --dsm --gcp gcp_list.txt
Windows
Install Docker
Configure docker (more CPU, more memory)
CPUs: 6
Memory: 12032 Mb
Swap: 4096 Mb
Create the projet folder structure
Project folder: c:\Users\dlt265\Documents\uav_sckovskolen_feb20018_incl_GCP\
Image folder: c:\Users\dlt265\Documents\uav_sckovskolen_feb20018_incl_GCP\images
Create folders for the OpenDroneMap output.
cd Documents\uav_sckovskolen_feb20018_incl_GCP
md odm_orthophoto
md odm_texturing
md odm_georeferencing
md odm_meshing
md opensfm
md odm_dem
docker run -it --rm -v $pwd/images:/code/images -v $pwd/odm_orthophoto:/code/odm_orthophoto -v $pwd/odm_texturing:/code/odm_texturing -v $pwd/odm_georeferencing:/code/odm_georeferencing -v $pwd/odm_meshing:/code/odm_meshing -v $pwd/opensfm:/code/opensfm -v $pwd/odm_dem:/code/odm_dem opendronemap/opendronemap --dtm --dsm
cd ~/Documentos/costanovadoprado2xgrid
export odmi=`pwd`
docker run -it --rm \
-v $odmi/images:/code/images \
-v $odmi/odm_orthophoto:/code/odm_orthophoto \
-v $odmi/odm_texturing:/code/odm_texturing \
-v $odmi/odm_georeferencing:/code/odm_georeferencing \
-v $odmi/odm_meshing:/code/odm_meshing \
-v $odmi/opensfm:/code/opensfm \
-v $odmi/odm_dem:/code/odm_dem \
opendronemap/opendronemap --dtm --dsm --orthophoto-resolution 10.0 --mesh-octree-depth 10
OpenSFM viewer (update)
sudo chown -R jgr:jgr *
git clone https://github.com/mapillary/OpenSfM.git
cd OpenSfM/viewer
ln -s ../../images .
python2 -m SimpleHTTPServer 7777
OpenSFM viewer
jgr@zoe:~/Documentos/costanovadoprado$ sudo chown -R jgr:jgr *
jgr@zoe:~/Documentos/costanovadoprado$ cp -r ~/dev/OpenSfM/viewer opensfm
jgr@zoe:~/Documentos/costanovadoprado$ cd opensfm/
jgr@zoe:~/Documentos/costanovadoprado/opensfm$ ln -s ../images .
jgr@zoe:~/Documentos/costanovadoprado/opensfm$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
http://localhost:8000/viewer/reconstruction.html#file=/reconstruction.json
OpenSFM view images on QGIS
/home/jgr/Documentos/costanovadoprado/images/DJI_0595.JPG
-8.7515052, 40.6114774, 22.4100000, 2018:08:23 10:05:11
/home/jgr/Documentos/costanovadoprado/opensfm/reference_lla.json
Centro aproximado do ortophoto resultante (adicionado ao projeto QGIS)
{
"latitude": 40.61272372901514,
"altitude": 0,
"longitude": -8.752983409509966
}
"DJI_0595.JPG": {
"orientation": 1,
"camera": "v2 dji fc220 4000 3000 perspective 0.7222",
"gps_position": [
125.10012061257521,
-138.4010433354888,
22.407269606366754
],
"gps_dop": 15.0,
"rotation": [
2.1445873611073996,
-2.2856282209697523,
0.20066193557381898
],
"translation": [
-132.67853610360638,
133.40968771622724,
1.9668907291333997
],
"capture_time": 1535018711.0
},
https://github.com/mapillary/OpenSfM/blob/master/opensfm/commands/export_geocoords.py
jgr@zoe:~/Documentos/costanovadoprado/opensfm$ wget https://raw.githubusercontent.com/mapillary/OpenSfM/master/opensfm/commands/export_geocoords.py
NÃO FUNCIONOU...
export_geocoords.py -dataset costanova
Ver: https://github.com/mapillary/OpenSfM/issues/183
webODM
https://github.com/OpenDroneMap/WebODM
git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input
cd WebODM
./webodm.sh start
jgrocha/xxbatata
Tools
CloudCompare
QGIS Plugin Photo2Shape
Criar uma shapefile photos
Nas propriedades, no campo filepath mudar para o tipo Fotografia.
Ground Control File
echo -7.778152 41.833203 957.575989 | cs2cs +init=epsg:4326 +to +init=epsg:3763
echo 708610.702 6209972.025 26.085 | cs2cs +init=epsg:25832 +to +init=epsg:32633
jgr@zoe:~/Documentos/sletten16maj2018-exif$ gdalsrsinfo epsg:32633 -o proj4
'+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs '
jgr@zoe:~/Documentos/sletten16maj2018-exif$ gdalsrsinfo epsg:25832 -o proj4
'+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '
Make my own OpenDroneMap image
Fork and clone ODM repository
git clone git@github.com:jgrocha/OpenDroneMap.git
cd OpenDroneMap
git checkout -b generate-laz-output
Change source
Build new image
jgr@zoe:~/PycharmProjects/OpenDroneMap$ docker build --no-cache -t odm_altitude_0 .
docker build -t odm_laz_image .
Run new image
# cd "/mnt/bonn/nextCloud/Photos/DJI MAVIC PRO 2 Paradela/100MEDIA"
cd /mnt/bonn/nextCloud/Photos
ln -s 'DJI MAVIC PRO 2 Paradela/100MEDIA' images
export odmi=`pwd`
docker run --cpus 8 -it --rm -v $odmi/images:/code/images -v $odmi/odm_orthophoto:/code/odm_orthophoto -v $odmi/odm_texturing:/code/odm_texturing -v $odmi/odm_georeferencing:/code/odm_georeferencing -v $odmi/odm_meshing:/code/odm_meshing -v $odmi/opensfm:/code/opensfm -v $odmi/odm_dem:/code/odm_dem odm_altitude_0 --dtm --dsm --force-ccd 13.2
# --orthophoto-resolution 2.0 --mesh-octree-depth 2 --opensfm-processes 8
cd /home/jgr/Documentos/sletten16maj2018-gcp
export odmi=`pwd`
sudo rm -rf odm_georeferencing odm_meshing odm_orthophoto odm_texturing opensfm
docker run -it --rm \
-v $odmi/images:/code/images \
-v $odmi/gcp_list.txt:/code/gcp_list.txt \
-v $odmi/odm_orthophoto:/code/odm_orthophoto \
-v $odmi/odm_texturing:/code/odm_texturing \
-v $odmi/odm_georeferencing:/code/odm_georeferencing \
-v $odmi/odm_meshing:/code/odm_meshing \
-v $odmi/opensfm:/code/opensfm \
odm_laz_image --gcp gcp_list.txt --dtm --dsm
The options for rerunning are: 'resize', 'opensfm', 'slam', 'cmvs', 'pmvs', 'odm_meshing', 'mvs_texturing', 'odm_georeferencing', 'odm_orthophoto'
docker run -it --rm \
-v $odmi/images:/code/images \
-v $odmi/gcp_list.txt:/code/gcp_list.txt \
-v $odmi/odm_orthophoto:/code/odm_orthophoto \
-v $odmi/odm_texturing:/code/odm_texturing \
-v $odmi/odm_georeferencing:/code/odm_georeferencing \
-v $odmi/odm_meshing:/code/odm_meshing \
-v $odmi/opensfm:/code/opensfm \
odm_laz_image --gcp gcp_list.txt --dtm --dsm --rerun-from odm_georeferencing
Check the output
running /code/build/bin/odm_georef -bundleFile /code/opensfm/bundle_r000.out -imagesPath /code/images -imagesListPath /code/opensfm/list_r000.out -inputFile /code/odm_texturing/odm_textured_model.obj -outputFile /code/odm_texturing/odm_textured_model_geo.obj -inputPointCloudFile /code/opensfm/depthmaps/merged.ply -outputPointCloudFile /code/odm_georeferencing/odm_georeferenced_model.ply -logFile /code/odm_georeferencing/odm_georeferencing_log.txt -outputTransformFile /code/odm_georeferencing/odm_georeferencing_transform.txt -georefFileOutputPath /code/odm_georeferencing/odm_georeferencing_model_geo.txt -gcpFile gcp_list.txt -outputCoordFile /code/odm_georeferencing/coords.txt
[DEBUG] running /code/SuperBuild/build/pdal/bin/pdal pipeline -i /code/odm_georeferencing/las.json --readers.ply.filename=/code/odm_georeferencing/odm_georeferenced_model.ply
PDAL: writers.las: Can't write LAZ output. PDAL not built with LASzip or LAZperf.
{
"pipeline": [
"untransformed.ply",
{
"type": "writers.las",
"a_srs": "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs ",
"offset_x": "334230.28164",
"offset_y": "6208095.41529",
"offset_z": "0",
"compression": "laszip",
"filename": "/code/odm_georeferencing/odm_georeferenced_model.laz"
}
]
}
Local pdal+LASzip
Build from source!
/usr/local/bin/pdal pipeline -i las.json --readers.ply.filename=odm_georeferenced_model.ply
-rw-r--r-- 1 jgr jgr 22661583 jun 17 11:47 odm_georeferenced_model.laz
-rw-r--r-- 1 jgr jgr 121586206 jun 17 11:42 odm_georeferenced_model.ply
Previous result
New result
Create Pull Request
close #845
Other fixes
epsg versus EPSG
Point cloud classification
[DEBUG] running pdal info --boundary --filters.hexbin.edge_length=1 --filters.hexbin.threshold=0 /code/odm_georeferencing/odm_georeferenced_model.filtered.las > /code/odm_georeferencing/odm_georeferenced_model.boundary.json PDAL: Argument references invalid/unused stage: 'filters.hexbin'.

