pyarchinit-photogrammetry 1.2.1__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyarchinit_photogrammetry-1.2.1/src/pyarchinit_photogrammetry.egg-info → pyarchinit_photogrammetry-1.2.2}/PKG-INFO +1 -1
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/pyproject.toml +1 -1
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/__init__.py +1 -1
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/multispectral.py +28 -1
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/main_window.py +19 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/multispectral_pane.py +16 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/translations/en.json +2 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/qgis_link.py +15 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2/src/pyarchinit_photogrammetry.egg-info}/PKG-INFO +1 -1
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_multispectral.py +12 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/LICENSE +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/README.md +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/setup.cfg +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/ppg_launcher.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/__main__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/_env.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/_native.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/ai/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/ai/classify.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/ai/learn.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/ai/sam.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/ai/sam_env.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/ai/sam_worker.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/app.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/measures.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/munsell.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/pottery.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/proxies.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/relief.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/sections.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/stones.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/stratigraphy.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/terrain.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/timeline.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/archaeo/us_proposal.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/batch.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/bim/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/bim/ifc.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/cli.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/camera.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/chunk.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/crs.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/document.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/geometry.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/marker.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/paradata.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/pointcloud.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/progress.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/core/versions.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/demo.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/doctor.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/bundle.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/chunks.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/cleaning.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/colour.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/confidence.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/crop.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/dem.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/dem_edit.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/dense.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/diagnostics.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/elevation.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/fieldcheck.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/isolate.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/masks.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/meshing.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/nodes.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/normalmap.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/ortho.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/overviews.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/panorama.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/patches.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/precision.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/quality.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/region.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/satellite.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/sfm.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/texturing.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/tiepoints.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/tsdf.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/video.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/engine/visibility.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/__main__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/batch_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/calibration_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/dialogs.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/flow_layout.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/i18n.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/icons.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/image_views.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/logging_setup.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/matches_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/model_view.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/nodes_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/panels.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/plugins_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/pottery_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/resources/logo.svg +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/scene.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/start_page.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/theme.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/timeline_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/undo.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/update_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/us_proposal_dialog.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/gui/worker.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/integrations/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/integrations/metashape.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/integrations/photo3d.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/integrations/webodm.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/copc.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/exif.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/exports.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/flythrough.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/gpkg.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/i3s.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/mesh_ply.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/qfield.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/report.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/scans.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/io/web.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/markers/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/markers/gcp.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/markers/refine.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/markers/targets.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/plugins/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/plugins/api.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/plugins/index.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/plugins/manager.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/plugins/scaffold.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/bridge.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/config.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/database.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/demo_db.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/media.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/pyarchinit/pyarchinit5_schema.sql +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/testing/__init__.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/testing/synthetic.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry/updates.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry.egg-info/SOURCES.txt +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry.egg-info/dependency_links.txt +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry.egg-info/entry_points.txt +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry.egg-info/requires.txt +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/src/pyarchinit_photogrammetry.egg-info/top_level.txt +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_alignment_modes.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_archaeo.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_batch.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_bim_ai.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_bundle.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_chunks.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_classify.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_cleaning.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_colour.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_dem_edit.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_dem_fill.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_dem_spikes.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_depth_mesh.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_diagnostics.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_elevation.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_env.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_exports_web.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_fieldcheck.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_fisheye_panorama.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_geometry.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_cleaning.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_layers.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_patches.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_start.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_i18n.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_i3s.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_ifc_strat.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_integrations.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_isolate.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_learn.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_marker_refine.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_markers.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_masks.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_measures.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_mesh_ply.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_meshing_fallback.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_munsell.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_native.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_nodes.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_normalmap.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_ortho.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_overviews.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_packaging.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_paradata.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_patches.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_photos.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pipeline.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_plugins.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pottery_demo.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pottery_search.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_precision.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_proxies.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pyarchinit.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pyarchinit_media.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_qfield.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_quality_video.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_raster_detail.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_reference_cameras.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_region.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_regressions.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_relief.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_satellite.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_scalebars.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_scans.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_sfm_global_check.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_stones.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_texture.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_tiepoints.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_timeline.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_tools_3d.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_undo.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_updates.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_us_proposal.py +0 -0
- {pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_versions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-photogrammetry
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Open-source photogrammetry engine for archaeology and BIM, integrated with PyArchInit
|
|
5
5
|
Author-email: Enzo Cocca <enzo.ccc@gmail.com>
|
|
6
6
|
License-Expression: GPL-2.0-or-later
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyarchinit-photogrammetry"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.2"
|
|
8
8
|
description = "Open-source photogrammetry engine for archaeology and BIM, integrated with PyArchInit"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "GPL-2.0-or-later"
|
|
@@ -32,7 +32,7 @@ from .core import (ARCHAEO_CLASSES, ASPRS_CLASSES, Camera, Chunk, Document, Mark
|
|
|
32
32
|
from .core.progress import Cancelled, Progress, print_progress
|
|
33
33
|
from . import demo # noqa: E402 (ppg.demo.create_demo)
|
|
34
34
|
|
|
35
|
-
__version__ = "1.2.
|
|
35
|
+
__version__ = "1.2.2"
|
|
36
36
|
|
|
37
37
|
__all__ = ["app", "Document", "Chunk", "Camera", "Sensor", "Marker", "Projection", "Reference", "ScaleBar",
|
|
38
38
|
"PointCloud", "ASPRS_CLASSES", "ARCHAEO_CLASSES", "Progress", "Cancelled", "print_progress", "__version__"]
|
|
@@ -607,8 +607,35 @@ def build_reflectance(chunk: Chunk, bands: list[str] | None = None, resolution:
|
|
|
607
607
|
|
|
608
608
|
|
|
609
609
|
# ------------------------------------------------------------------------------ indices and zoning
|
|
610
|
+
def formula_bands(formula: str) -> set[str]:
|
|
611
|
+
"""The band names a formula uses (``np`` and the numbers left out)."""
|
|
612
|
+
import ast
|
|
613
|
+
|
|
614
|
+
try:
|
|
615
|
+
tree = ast.parse(formula, mode="eval")
|
|
616
|
+
except SyntaxError as exc:
|
|
617
|
+
raise ValueError(f"formula {formula!r}: {exc.msg}") from None
|
|
618
|
+
return {n.id for n in ast.walk(tree) if isinstance(n, ast.Name) and n.id != "np"}
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
def missing_bands(formula: str, available) -> list[str]:
|
|
622
|
+
"""The bands a formula needs that ``available`` has not got (sorted)."""
|
|
623
|
+
return sorted(formula_bands(formula) - set(available))
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
def available_indices(bands) -> list[str]:
|
|
627
|
+
"""The indices of :data:`INDICES` whose bands are all among ``bands``."""
|
|
628
|
+
return [name for name, (formula, _) in INDICES.items() if not missing_bands(formula, bands)]
|
|
629
|
+
|
|
630
|
+
|
|
610
631
|
def index_values(formula: str, bands: dict[str, np.ndarray]) -> np.ndarray:
|
|
611
|
-
"""``formula`` over the band arrays (names as in :data:`INDICES`); NaN where undefined.
|
|
632
|
+
"""``formula`` over the band arrays (names as in :data:`INDICES`); NaN where undefined. A
|
|
633
|
+
band the captures have not got (the thermal LWIR of a camera without it) is an error that
|
|
634
|
+
names it, not a crash."""
|
|
635
|
+
missing = missing_bands(formula, bands)
|
|
636
|
+
if missing:
|
|
637
|
+
raise ValueError(f"the formula needs the band(s) {', '.join(missing)}, which these captures have not got "
|
|
638
|
+
f"(bands: {', '.join(bands)})")
|
|
612
639
|
names = {k: np.asarray(v, np.float32) for k, v in bands.items()}
|
|
613
640
|
with np.errstate(divide="ignore", invalid="ignore"):
|
|
614
641
|
out = eval(formula, {"__builtins__": {}, "np": np}, names) # noqa: S307 - our own formulas
|
|
@@ -1326,6 +1326,17 @@ class MainWindow(QMainWindow):
|
|
|
1326
1326
|
return
|
|
1327
1327
|
name = "".join(c for c in label.strip() if c.isalnum() or c in "_-") or "Indice"
|
|
1328
1328
|
formula = formula or None
|
|
1329
|
+
used = formula or ms_mod.INDICES.get(name, ("", ""))[0]
|
|
1330
|
+
bands = self._ms_meta().get("reflectance_bands") or self._ms_meta().get("bands") or []
|
|
1331
|
+
try:
|
|
1332
|
+
missing = ms_mod.missing_bands(used, bands) if used else []
|
|
1333
|
+
except ValueError as exc:
|
|
1334
|
+
self._warn(tr("Formula non valida: {0}", exc))
|
|
1335
|
+
return
|
|
1336
|
+
if missing:
|
|
1337
|
+
self._warn(tr("L'indice {0} usa le bande {1}, che queste riprese non hanno (bande: {2}).", name,
|
|
1338
|
+
", ".join(missing), ", ".join(bands)))
|
|
1339
|
+
return
|
|
1329
1340
|
self.run_task(tr("Indice {0}", name), lambda p: ms_mod.index_raster(self.chunk, name, formula),
|
|
1330
1341
|
lambda path: self.ms_show("index", name))
|
|
1331
1342
|
|
|
@@ -6405,6 +6416,14 @@ class MainWindow(QMainWindow):
|
|
|
6405
6416
|
extra_vectors.append({"name": f"Zone {zname}", "path": z["file"], "table": "zone",
|
|
6406
6417
|
"geometry": "POLYGON", "color": "#1a9850", "label": "classe"})
|
|
6407
6418
|
|
|
6419
|
+
for provider in getattr(self, "qgis_providers", []): # plugins: their rasters and GeoPackage layers
|
|
6420
|
+
try:
|
|
6421
|
+
more_rasters, more_vectors = provider()
|
|
6422
|
+
rasters += list(more_rasters or [])
|
|
6423
|
+
extra_vectors += list(more_vectors or [])
|
|
6424
|
+
except Exception as exc: # noqa: BLE001 - a plugin must not stop the export
|
|
6425
|
+
log.warning("QGIS: layer di un plugin saltati: %s", exc)
|
|
6426
|
+
|
|
6408
6427
|
def job(p):
|
|
6409
6428
|
p(0.2, "Creazione del progetto QGIS")
|
|
6410
6429
|
rep = qgis_link.build_project(project, ch.crs if ch else "", files, rasters, title=name, qgis=q,
|
|
@@ -122,6 +122,21 @@ class MultispectralPane(QWidget):
|
|
|
122
122
|
def _show_reflectance(self) -> None:
|
|
123
123
|
self.show_requested.emit("reflectance", FALSE_COLOUR if self.c_show.currentData() == "false" else TRUE_COLOUR)
|
|
124
124
|
|
|
125
|
+
def _offer_indices(self, bands) -> None:
|
|
126
|
+
"""Only the indices the bands allow (no Thermal without a LWIR band), the choice kept."""
|
|
127
|
+
from ..engine.multispectral import available_indices
|
|
128
|
+
|
|
129
|
+
current = self.c_index.currentData()
|
|
130
|
+
wanted = available_indices(bands) if bands else list(INDICES)
|
|
131
|
+
self.c_index.blockSignals(True)
|
|
132
|
+
self.c_index.clear()
|
|
133
|
+
for name in wanted:
|
|
134
|
+
self.c_index.addItem(f"{name}: {INDICES[name][1]}", name)
|
|
135
|
+
self.c_index.addItem(tr("Formula propria..."), "formula")
|
|
136
|
+
k = self.c_index.findData(current)
|
|
137
|
+
self.c_index.setCurrentIndex(k if k >= 0 else 0)
|
|
138
|
+
self.c_index.blockSignals(False)
|
|
139
|
+
|
|
125
140
|
# --------------------------------------------------------------- state
|
|
126
141
|
def set_state(self, chunk) -> None:
|
|
127
142
|
"""What every step has: read from the chunk (captures, alignment, DEM, panel, the
|
|
@@ -164,6 +179,7 @@ class MultispectralPane(QWidget):
|
|
|
164
179
|
self.states["reflectance"].setText(tr("Da fare dopo il DEM: un GeoTIFF a virgola mobile con una banda per banda."))
|
|
165
180
|
self.b_index.setEnabled(has_refl)
|
|
166
181
|
self.c_index.setEnabled(has_refl)
|
|
182
|
+
self._offer_indices(ms.get("reflectance_bands") or ms.get("bands") or [])
|
|
167
183
|
if indices:
|
|
168
184
|
self.states["index"].setText(tr("Calcolati: {0}", ", ".join(sorted(indices))))
|
|
169
185
|
else:
|
|
@@ -2117,6 +2117,7 @@
|
|
|
2117
2117
|
"File non valido: {0}": "Invalid file: {0}",
|
|
2118
2118
|
"File scritti in {0}:\n": "Files written in {0}:\n",
|
|
2119
2119
|
"Filtra le foto di {0}": "Filter the photos of {0}",
|
|
2120
|
+
"Formula non valida: {0}": "Invalid formula: {0}",
|
|
2120
2121
|
"Formula sui nomi delle bande ({0}):": "Formula over the band names ({0}):",
|
|
2121
2122
|
"Foto del punto X {0:.2f} Y {1:.2f} Z {2:.2f}": "Photos of the point X {0:.2f} Y {1:.2f} Z {2:.2f}",
|
|
2122
2123
|
"Foto del punto X {0} Y {1} Z {2}": "Photos of the point X {0} Y {1} Z {2}",
|
|
@@ -2141,6 +2142,7 @@
|
|
|
2141
2142
|
"Impossibile leggere {0}": "Cannot read {0}",
|
|
2142
2143
|
"Indice {0}": "Index {0}",
|
|
2143
2144
|
"Installazione Python: aggiorna con <code>{0}</code> (o con uv).": "Python installation: update with <code>{0}</code> (or with uv).",
|
|
2145
|
+
"L'indice {0} usa le bande {1}, che queste riprese non hanno (bande: {2}).": "The index {0} uses the bands {1}, which these captures have not got (bands: {2}).",
|
|
2144
2146
|
"L'ortofoto ({0:.0f} m di lato, pixel di {1:.1f} cm) viene esaminata a tasselli di 1024 pixel che si sovrappongono: alla risoluzione proposta sono circa {2} tasselli. Con la GPU del Mac (MPS) un tassello richiede circa 10 s in scansione normale, 40-90 s in alta o massima. Le unita' trovate vanno nel layer «Unita' da SAM», senza numero di US.": "The orthophoto ({0:.0f} m per side, {1:.1f} cm pixels) is examined in overlapping tiles of 1024 pixels: at the proposed resolution they are about {2} tiles. With the Mac GPU (MPS) a tile takes about 10 s at normal thoroughness, 40-90 s at high or maximum. The units found go into the layer «Units from SAM», without a US number.",
|
|
2145
2147
|
"L'ortofoto ({0} m di lato, pixel di {1} cm) viene esaminata a tasselli di 1024 pixel che si sovrappongono: alla risoluzione proposta sono circa {2} tasselli. Con la GPU del Mac (MPS) un tassello richiede circa 10 s in scansione normale, 40-90 s in alta o massima. Le unita' trovate vanno nel layer «Unita' da SAM», senza numero di US.": "The orthophoto ({0} m per side, {1} cm pixels) is examined in overlapping tiles of 1024 pixels: at the proposed resolution they are about {2} tiles. With the Mac GPU (MPS) a tile takes about 10 s at normal thoroughness, 40-90 s at high or maximum. The units found go into the layer «Units from SAM», without a US number.",
|
|
2146
2148
|
"La scala del rilievo e' cambiata del {0:+.3f} %: {1} sono ancora nella scala di prima, ricostruiscili (Flusso di lavoro).": "The scale of the survey changed by {0:+.3f} %: {1} are still at the previous scale, rebuild them (Workflow).",
|
|
@@ -331,6 +331,21 @@ for r in cfg["rasters"]:
|
|
|
331
331
|
lyr.setRenderer(index_renderer(lyr, float(lo), float(hi)))
|
|
332
332
|
elif r.get("ramp") == "zones" and lyr.isValid():
|
|
333
333
|
lyr.setRenderer(zones_renderer(lyr, int(r.get("classes") or 3)))
|
|
334
|
+
elif r.get("ramp") in ("grey", "grey_inverted", "diverging") and lyr.isValid(): # a geophysical grid
|
|
335
|
+
lo, hi = r.get("limits") or lyr.dataProvider().cumulativeCut(1, 0.02, 0.98)
|
|
336
|
+
lo, hi = float(lo), float(hi)
|
|
337
|
+
if r["ramp"] == "diverging":
|
|
338
|
+
stops = [(0.0, "#2166ac"), (0.5, "#f7f7f7"), (1.0, "#b2182b")]
|
|
339
|
+
elif r["ramp"] == "grey_inverted":
|
|
340
|
+
stops = [(0.0, "#ffffff"), (1.0, "#000000")]
|
|
341
|
+
else:
|
|
342
|
+
stops = [(0.0, "#000000"), (1.0, "#ffffff")]
|
|
343
|
+
ramp = QgsColorRampShader(lo, hi, None, QgsColorRampShader.Interpolated)
|
|
344
|
+
ramp.setColorRampItemList([QgsColorRampShader.ColorRampItem(lo + t * (hi - lo), QColor(c), f"{lo + t * (hi - lo):.3g}")
|
|
345
|
+
for t, c in stops])
|
|
346
|
+
shader = QgsRasterShader()
|
|
347
|
+
shader.setRasterShaderFunction(ramp)
|
|
348
|
+
lyr.setRenderer(QgsSingleBandPseudoColorRenderer(lyr.dataProvider(), int(r.get("band") or 1), shader))
|
|
334
349
|
if r.get("opacity") is not None:
|
|
335
350
|
lyr.setOpacity(float(r["opacity"]))
|
|
336
351
|
proj.addMapLayer(lyr, False)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyarchinit-photogrammetry
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.2
|
|
4
4
|
Summary: Open-source photogrammetry engine for archaeology and BIM, integrated with PyArchInit
|
|
5
5
|
Author-email: Enzo Cocca <enzo.ccc@gmail.com>
|
|
6
6
|
License-Expression: GPL-2.0-or-later
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_multispectral.py
RENAMED
|
@@ -338,3 +338,15 @@ def test_pane_tree_and_views_show_the_products(scene_dir, tmp_path, monkeypatch)
|
|
|
338
338
|
finally:
|
|
339
339
|
w_.setWindowModified(False)
|
|
340
340
|
w_.close()
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def test_an_index_without_its_band_is_refused_with_its_name():
|
|
344
|
+
"""Thermal needs LWIR: without it the error names the band (a crash in 1.2.1)."""
|
|
345
|
+
bands = {"Red": np.ones((2, 2), np.float32), "NIR": np.ones((2, 2), np.float32)}
|
|
346
|
+
assert ms.available_indices(bands) == [n for n in ms.INDICES if n not in ("NDRE", "GNDVI", "NDWI", "CIRE", "Thermal")]
|
|
347
|
+
assert ms.missing_bands(ms.INDICES["Thermal"][0], bands) == ["LWIR"]
|
|
348
|
+
with pytest.raises(ValueError, match="LWIR"):
|
|
349
|
+
ms.index_values("LWIR", bands)
|
|
350
|
+
with pytest.raises(ValueError, match="formula"):
|
|
351
|
+
ms.index_values("NIR +", bands)
|
|
352
|
+
assert ms.index_values("(NIR - Red) / (NIR + Red)", bands).shape == (2, 2)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_alignment_modes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_dem_spikes.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_depth_mesh.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_exports_web.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_fieldcheck.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_fisheye_panorama.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_cleaning.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_layers.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_gui_patches.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_integrations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_marker_refine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_meshing_fallback.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pottery_demo.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pottery_search.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pyarchinit.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_pyarchinit_media.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_quality_video.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_raster_detail.py
RENAMED
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_reference_cameras.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_sfm_global_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyarchinit_photogrammetry-1.2.1 → pyarchinit_photogrammetry-1.2.2}/tests/test_us_proposal.py
RENAMED
|
File without changes
|
|
File without changes
|