Python script to process and optimize material created from spatial photogrammetry (using software such as Pix4D Mapper, Pix4D Matic, Agisoft Metashape, Drone Deploy, etc.) to facilitate uploading to the web, downloading, viewing from the browser and on the desktop, incorporation to geoservers and more. It can process RGB and MDE orthomosaics and 3D models.
The script creates the following files:
- to upload to the geoserver
- .tif in intermediate quality (with pyramid overviews/render at different scales), EPSG:3857
- .geojson with the outline of the image to upload to the wms, with the gsd, srs, registryid and date fields (if it exists)
- to upload to the cloud:
- raster .tif in low quality to use as preview (w:650px), original EPSG
- raster .tif in high quality, ideal for importing from QGis, original EPSG
- raster .tif in medium quality, ideal for use in AutoCAD or Civil 3D, original EPSG
- world file .tfw with the geospatial information (to use when importing into AutoCAD, for example)
- for download or viewing in the browser:
- 3d model .glb to open with any 3d model viewer (with compression draco)
- Create an virtual enviroment
py -3.9 -m venv .venvv
- Load the enviroment
.venv/Scripts/activate
- Install the requeriments
pip install -r requirements.txt
- Manually install an npm package to compress the 3d models:
npm install -g gltf-pipeline
: gltf-pipeline
- If you what to use another python version, or install manually al the components, use:
- Download GDAL, selecting the newest version of GDAL, and the appropriate one according to the version of Python installed and the processor. If you are using Python 3.7, for example, download and then install using
pip install GDAL-3.9.2-cp39-cp39-win_amd64.whl
(always adjusting according to the downloaded version). - Download Rasterio, selecting a version analogous to GDAL, and install in the same way.
- To be able to use the installed package from the console, configure environment variables (putting the full path depending on where the package is installed and the python version):
GDAL_DATA
: '...\Python\Python39\Lib\site-packages\osgeo\data\gdal'PROJ_LIB
: '...\Python\Python39\Lib\site-packages\osgeo\data\proj'- Add to the
Path
variable the path '...\Python\Python39\Lib\site-packages\osgeo' - Check
gdalinfo --version
in console.
- Install the libraries:
- Numpy
- PIL (for creating previews)
- To process 3d models:
- trimesh:
- pygltflib
- gltf-pipeline (NodeJS):
npm install -g gltf-pipeline
- Place the .tif/.tiff orthomosaics in the highest resolution available in the
input
folder. If the orthomosaic to be processed is in tiles format, create a containing folder with all the corresponding images. - If you want to process a 3D model, place the .obj and its corresponding texture and mtl loosely in the same
input
folder. - Name the complete orthomosaics (or the containing folder in the case of tiles, or objs) the audiovisual record number to which they belong (this data will be incorporated as metadata in the processed files). NOTE: in case a record has more than one mapping, add a hyphen and the number to the end of each file name;
-1
,-2
, etc. - If you wish to process a MDE (Digital Elevation Model) geotiff file, enter the suffix
_mde
after the audiovisual registration number, leaving a structure analogous to12345678_mde.tif
. - If you reprocess an existing orthomosaic (or add new elements), and want to preserve the same MapId, you must enter the file name obtained from the original processing as the file name (and if it is a mde, add the suffix
_mde
at the end), remaining similar to12345678_MapId-123445_mde.tif
. - Run
python process.py
to start the conversion. The processed files will be created in theoutput
folder.
- If necessary, modify the
params.py
file according to export formats, metadata and folders.
- Add point cloud support