├── images ├── GCP.png ├── Thumbs.db ├── draping.png ├── edition.png ├── epfl_logo.png ├── oblique2.png ├── toolbar1.png ├── toolbar10.png ├── toolbar11.png ├── toolbar12.png ├── toolbar13.png ├── toolbar14.png ├── toolbar15.png ├── toolbar16.png ├── toolbar2.png ├── toolbar3.png ├── toolbar4.png ├── toolbar5.png ├── toolbar6.png ├── toolbar7.png ├── toolbar8.png ├── toolbar9.png ├── virtual3D.png ├── GCPApproach.png ├── drapingSave2.png ├── mesurement.png ├── behindMountain.png ├── visualisation.png └── reprojectOnOtherMoutains.png ├── Pic2Map ├── icon.png ├── icons │ ├── exif.png │ ├── icon.png │ ├── toolbar1.png │ ├── toolbar10.png │ ├── toolbar11.png │ ├── toolbar12.png │ ├── toolbar13.png │ ├── toolbar14.png │ ├── toolbar15.png │ ├── toolbar16.png │ ├── toolbar2.png │ ├── toolbar3.png │ ├── toolbar4.png │ ├── toolbar5.png │ ├── toolbar6.png │ ├── toolbar7.png │ ├── toolbar8.png │ ├── toolbar9.png │ └── toolbar4 - Copy.png ├── dataTest │ ├── GCPs.dat │ ├── 07861v.jpg │ ├── Thumbs.db │ ├── AletschGlacierDEM.tiff │ ├── readme.txt │ ├── pose.kml │ └── AletschGlacierDEM.tiff.aux.xml ├── help │ ├── build │ │ ├── html │ │ │ ├── objects.inv │ │ │ ├── _static │ │ │ │ ├── up.png │ │ │ │ ├── down.png │ │ │ │ ├── file.png │ │ │ │ ├── plus.png │ │ │ │ ├── Thumbs.db │ │ │ │ ├── comment.png │ │ │ │ ├── minus.png │ │ │ │ ├── ajax-loader.gif │ │ │ │ ├── down-pressed.png │ │ │ │ ├── up-pressed.png │ │ │ │ ├── comment-bright.png │ │ │ │ ├── comment-close.png │ │ │ │ ├── pygments.css │ │ │ │ ├── default.css │ │ │ │ └── sidebar.js │ │ │ ├── _images │ │ │ │ ├── GCP.png │ │ │ │ ├── Thumbs.db │ │ │ │ ├── draping.png │ │ │ │ ├── edition.png │ │ │ │ ├── oblique.bmp │ │ │ │ ├── oblique.png │ │ │ │ ├── epfl_logo.png │ │ │ │ ├── oblique2.png │ │ │ │ ├── toolbar1.png │ │ │ │ ├── toolbar10.png │ │ │ │ ├── toolbar11.png │ │ │ │ ├── toolbar12.png │ │ │ │ ├── toolbar13.png │ │ │ │ ├── toolbar14.png │ │ │ │ ├── toolbar15.png │ │ │ │ ├── toolbar16.png │ │ │ │ ├── toolbar2.png │ │ │ │ ├── toolbar3.png │ │ │ │ ├── toolbar4.png │ │ │ │ ├── toolbar5.png │ │ │ │ ├── toolbar6.png │ │ │ │ ├── toolbar7.png │ │ │ │ ├── toolbar8.png │ │ │ │ ├── toolbar9.png │ │ │ │ ├── virtual3D.png │ │ │ │ ├── GCPApproach.png │ │ │ │ ├── drapingSave.png │ │ │ │ ├── drapingSave2.png │ │ │ │ ├── mesurement.png │ │ │ │ ├── setProject.png │ │ │ │ ├── srsProject.png │ │ │ │ ├── behindMountain.png │ │ │ │ ├── pluginbuilder.png │ │ │ │ ├── visualisation.png │ │ │ │ └── reprojectOnOtherMoutains.png │ │ │ ├── .buildinfo │ │ │ ├── search.html │ │ │ └── searchindex.js │ │ └── doctrees │ │ │ ├── index.doctree │ │ │ └── environment.pickle │ ├── source │ │ └── images │ │ │ ├── GCP.png │ │ │ ├── Thumbs.db │ │ │ ├── draping.png │ │ │ ├── edition.png │ │ │ ├── oblique.png │ │ │ ├── epfl_logo.png │ │ │ ├── oblique2.png │ │ │ ├── toolbar1.png │ │ │ ├── toolbar10.png │ │ │ ├── toolbar11.png │ │ │ ├── toolbar12.png │ │ │ ├── toolbar13.png │ │ │ ├── toolbar14.png │ │ │ ├── toolbar15.png │ │ │ ├── toolbar16.png │ │ │ ├── toolbar2.png │ │ │ ├── toolbar3.png │ │ │ ├── toolbar4.png │ │ │ ├── toolbar5.png │ │ │ ├── toolbar6.png │ │ │ ├── toolbar7.png │ │ │ ├── toolbar8.png │ │ │ ├── toolbar9.png │ │ │ ├── virtual3D.png │ │ │ ├── GCPApproach.png │ │ │ ├── drapingSave.png │ │ │ ├── drapingSave2.png │ │ │ ├── mesurement.png │ │ │ ├── setproject.png │ │ │ ├── srsProject.png │ │ │ ├── behindMountain.png │ │ │ ├── visualisation.png │ │ │ ├── toolbar4 - Copy.png │ │ │ └── reprojectOnOtherMoutains.png │ ├── make.bat │ └── Makefile ├── .vscode │ ├── settings.json │ └── launch.json ├── .project ├── .gitignore ├── resources.qrc ├── ui │ ├── ui_buffering.ui │ ├── ui_reportDialog.ui │ ├── ui_label_settings.ui │ ├── ui_monoplotter.ui │ ├── ui_mesure3D.ui │ ├── ui_disp_ini.ui │ ├── ui_icons.ui │ ├── ui_drapping.ui │ ├── ui_exif2.ui │ ├── ui_disprast.ui │ └── ui_help_ini.ui ├── checkOpenGLVersion.py ├── __init__.py ├── metadata.txt ├── ui_buffering.py ├── measure3D.py ├── iconsdialog.py ├── ui_reportGCP.py ├── labelSettingsDialog.py ├── ui_mesure3D.py ├── ui_label_settings.py ├── buffers.py ├── exifInfo.py ├── ui_disp_ini.py ├── ui_drapping.py ├── ui_exif2.py ├── Makefile ├── ui_icons.py ├── ui_help_ini.py ├── reportDialog.py └── initialization.py └── README.md /images/GCP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/GCP.png -------------------------------------------------------------------------------- /Pic2Map/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icon.png -------------------------------------------------------------------------------- /images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/Thumbs.db -------------------------------------------------------------------------------- /images/draping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/draping.png -------------------------------------------------------------------------------- /images/edition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/edition.png -------------------------------------------------------------------------------- /images/epfl_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/epfl_logo.png -------------------------------------------------------------------------------- /images/oblique2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/oblique2.png -------------------------------------------------------------------------------- /images/toolbar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar1.png -------------------------------------------------------------------------------- /images/toolbar10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar10.png -------------------------------------------------------------------------------- /images/toolbar11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar11.png -------------------------------------------------------------------------------- /images/toolbar12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar12.png -------------------------------------------------------------------------------- /images/toolbar13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar13.png -------------------------------------------------------------------------------- /images/toolbar14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar14.png -------------------------------------------------------------------------------- /images/toolbar15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar15.png -------------------------------------------------------------------------------- /images/toolbar16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar16.png -------------------------------------------------------------------------------- /images/toolbar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar2.png -------------------------------------------------------------------------------- /images/toolbar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar3.png -------------------------------------------------------------------------------- /images/toolbar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar4.png -------------------------------------------------------------------------------- /images/toolbar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar5.png -------------------------------------------------------------------------------- /images/toolbar6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar6.png -------------------------------------------------------------------------------- /images/toolbar7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar7.png -------------------------------------------------------------------------------- /images/toolbar8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar8.png -------------------------------------------------------------------------------- /images/toolbar9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/toolbar9.png -------------------------------------------------------------------------------- /images/virtual3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/virtual3D.png -------------------------------------------------------------------------------- /Pic2Map/icons/exif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/exif.png -------------------------------------------------------------------------------- /Pic2Map/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/icon.png -------------------------------------------------------------------------------- /images/GCPApproach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/GCPApproach.png -------------------------------------------------------------------------------- /images/drapingSave2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/drapingSave2.png -------------------------------------------------------------------------------- /images/mesurement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/mesurement.png -------------------------------------------------------------------------------- /Pic2Map/dataTest/GCPs.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/dataTest/GCPs.dat -------------------------------------------------------------------------------- /images/behindMountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/behindMountain.png -------------------------------------------------------------------------------- /images/visualisation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/visualisation.png -------------------------------------------------------------------------------- /Pic2Map/dataTest/07861v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/dataTest/07861v.jpg -------------------------------------------------------------------------------- /Pic2Map/dataTest/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/dataTest/Thumbs.db -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar1.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar10.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar11.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar12.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar13.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar14.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar15.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar16.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar2.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar3.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar4.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar5.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar6.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar7.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar8.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar9.png -------------------------------------------------------------------------------- /Pic2Map/icons/toolbar4 - Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/icons/toolbar4 - Copy.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/objects.inv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/objects.inv -------------------------------------------------------------------------------- /Pic2Map/help/source/images/GCP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/GCP.png -------------------------------------------------------------------------------- /images/reprojectOnOtherMoutains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/images/reprojectOnOtherMoutains.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/up.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/Thumbs.db -------------------------------------------------------------------------------- /Pic2Map/help/source/images/draping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/draping.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/edition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/edition.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/oblique.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/oblique.png -------------------------------------------------------------------------------- /Pic2Map/dataTest/AletschGlacierDEM.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/dataTest/AletschGlacierDEM.tiff -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/GCP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/GCP.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/down.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/file.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/plus.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/epfl_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/epfl_logo.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/oblique2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/oblique2.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar1.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar10.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar11.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar12.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar13.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar14.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar15.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar16.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar2.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar3.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar4.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar5.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar6.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar7.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar8.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar9.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/virtual3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/virtual3D.png -------------------------------------------------------------------------------- /Pic2Map/help/build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/doctrees/index.doctree -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/Thumbs.db -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/draping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/draping.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/edition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/edition.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/oblique.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/oblique.bmp -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/oblique.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/oblique.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/Thumbs.db -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/comment.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/minus.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/GCPApproach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/GCPApproach.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/drapingSave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/drapingSave.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/drapingSave2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/drapingSave2.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/mesurement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/mesurement.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/setproject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/setproject.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/srsProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/srsProject.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/epfl_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/epfl_logo.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/oblique2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/oblique2.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar1.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar10.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar11.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar12.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar13.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar14.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar15.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar16.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar2.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar3.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar4.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar5.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar6.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar7.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar8.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/toolbar9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/toolbar9.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/virtual3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/virtual3D.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/behindMountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/behindMountain.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/visualisation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/visualisation.png -------------------------------------------------------------------------------- /Pic2Map/help/build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/doctrees/environment.pickle -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/GCPApproach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/GCPApproach.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/drapingSave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/drapingSave.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/drapingSave2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/drapingSave2.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/mesurement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/mesurement.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/setProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/setProject.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/srsProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/srsProject.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/ajax-loader.gif -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/down-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/down-pressed.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/up-pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/up-pressed.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/toolbar4 - Copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/toolbar4 - Copy.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Deprecation 2 | This project is hosted here now: https://github.com/iggroup/pic2map/ as it is deprecated for QGIS version > 3.2X 3 | -------------------------------------------------------------------------------- /Pic2Map/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.pythonPath": "C:\\Users\\Frederick\\Python\\python.exe", 3 | "python.linting.enabled": false 4 | } -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/behindMountain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/behindMountain.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/pluginbuilder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/pluginbuilder.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/visualisation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/visualisation.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/comment-bright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/comment-bright.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/comment-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_static/comment-close.png -------------------------------------------------------------------------------- /Pic2Map/help/source/images/reprojectOnOtherMoutains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/source/images/reprojectOnOtherMoutains.png -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_images/reprojectOnOtherMoutains.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tproduit/pic2map/HEAD/Pic2Map/help/build/html/_images/reprojectOnOtherMoutains.png -------------------------------------------------------------------------------- /Pic2Map/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | test 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Pic2Map/help/build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 2919746d307818376130bf03334d57d9 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /Pic2Map/.gitignore: -------------------------------------------------------------------------------- 1 | # python byte code files 2 | *.pyc 3 | 4 | /bin 5 | /include 6 | /lib 7 | /local 8 | /ui/resources_rc.py 9 | /ui/ui_*.py 10 | ./dialogs.ini 11 | *.db 12 | 13 | # deployment archives 14 | /*.zip 15 | 16 | # text editors temporary files 17 | *.swp 18 | *~ 19 | 20 | # nose testing output 21 | /.coverage 22 | /.noseids 23 | -------------------------------------------------------------------------------- /Pic2Map/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Python : Fichier actuel", 9 | "type": "python", 10 | "request": "launch", 11 | "program": "${file}", 12 | "console": "integratedTerminal" 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /Pic2Map/resources.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | icon.png 4 | toolbar1.png 5 | toolbar2.png 6 | toolbar3.png 7 | toolbar4.png 8 | toolbar5.png 9 | toolbar6.png 10 | toolbar7.png 11 | toolbar8.png 12 | toolbar9.png 13 | toolbar10.png 14 | toolbar11.png 15 | toolbar12.png 16 | toolbar13.png 17 | toolbar14.png 18 | toolbar15.png 19 | toolbar16.png 20 | 21 | -------------------------------------------------------------------------------- /Pic2Map/dataTest/readme.txt: -------------------------------------------------------------------------------- 1 | -------------- 2 | DEM data is extracted from the ASTER GDEM data set. 3 | It can be distributed since it respect one of the following conditions: 4 | 1) Paper materials on which the image produced from GDEM is printed 5 | 2) Re-projected images involving re-sampling 6 | 3) Data whose format is transformed so that the data can not be converted back to the original data 7 | 4) Value-added product (e.g., flyby movie) 8 | 9 | ASTER GDEM 10 | Copyright (c) 2009 - 2014 Japan Space Systems(J-spacesystems) All Rights Reserved. 11 | 12 | -------------- 13 | Picture data comes from the Library of Congress, Prints and Photographs Division Washington, D.C. 20540 USA(http://www.loc.gov/pictures/collection/pgz/item/2001703294/). 14 | No restrictions on reproduction are specified. 15 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_buffering.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Form 4 | 5 | 6 | 7 | 0 8 | 0 9 | 391 10 | 58 11 | 12 | 13 | 14 | Form 15 | 16 | 17 | 18 | 19 | 10 20 | 30 21 | 361 22 | 23 23 | 24 | 25 | 26 | 0 27 | 28 | 29 | 30 | 31 | 32 | 20 33 | 10 34 | 101 35 | 16 36 | 37 | 38 | 39 | Buffering 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Pic2Map/checkOpenGLVersion.py: -------------------------------------------------------------------------------- 1 | from OpenGL.GL import * 2 | from PyQt5 import QtGui, QtWidgets, QtCore 3 | from PyQt5.QtGui import * 4 | from PyQt5.QtCore import * 5 | from PyQt5.QtWidgets import * 6 | from PyQt5.QtOpenGL import * 7 | from OpenGL.GLU import * 8 | import sys 9 | 10 | 11 | 12 | class CheckVersion(QGLWidget): 13 | # create an openGL context for checking the version 14 | def __init__(self, parent = None): 15 | super(CheckVersion, self).__init__(parent) 16 | self.isSupported= 0 17 | 18 | def initializeGL(self): 19 | #Get the current version of openGL 20 | #Need to do it in initializeGL because a openGL context is needed 21 | 22 | versionString = glGetString(GL_VERSION) 23 | versionString = versionString.split('.'); 24 | versionString = ''.join(versionString) 25 | try: 26 | versionInt = int(versionString) 27 | if(versionInt>=310): 28 | self.isSupported = 1 29 | else: 30 | self.isSupported = 0 31 | except ValueError: 32 | self.isSupported = 0 33 | 34 | 35 | 36 | #Need version 3.1.0 or above 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /Pic2Map/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | /*************************************************************************** 4 | Pic2Map 5 | A QGIS plugin 6 | Allow integration of oblique photographies 7 | ------------------- 8 | begin : 2014-02-19 9 | copyright : (C) 2014 by Gillian Milani 10 | email : gillian.milani@epfl.ch 11 | ***************************************************************************/ 12 | 13 | /*************************************************************************** 14 | * * 15 | * This program is free software; you can redistribute it and/or modify * 16 | * it under the terms of the GNU General Public License as published by * 17 | * the Free Software Foundation; either version 2 of the License, or * 18 | * (at your option) any later version. * 19 | * * 20 | ***************************************************************************/ 21 | """ 22 | 23 | 24 | def classFactory(iface): 25 | from .pic2Map import Pic2Map 26 | return Pic2Map(iface) 27 | 28 | -------------------------------------------------------------------------------- /Pic2Map/metadata.txt: -------------------------------------------------------------------------------- 1 | ; the next section is mandatory 2 | [general] 3 | name=Pic2Map 4 | email=timothee.produit@gmail.com 5 | author=Gillian Milani, Timothée Produit, Frédérick Pineault 6 | qgisMinimumVersion =3.4 7 | description=Compute the 3D orientation of a picture and provide the interaction between the picture and the map. 8 | about=Pic2map has two goals. First, it is used to compute the location and orientation of a picture with 3D Ground Control Points. The orientation can be saved in a Google Earth format. Second, it provides the interaction between the map and the picture through a Digital Elevation Model. Vector layers can be overlaid on the picture, geographic vector layer can be digitized directly in the picture, the picture can be "orthorectified". 9 | The plugin requires qt opengl python support (on Debian and derivates: python-qt4-gl). It was successfully tested in QGIS 64bits on Ubuntu and Windows. 10 | version=version 3.3 11 | tracker=https://github.com/tproduit/pic2map/issues 12 | repository=https://github.com/tproduit/pic2map/ 13 | ; end of mandatory metadata 14 | 15 | ; start of optional metadata 16 | category=Raster 17 | homepage=https://github.com/tproduit/pic2map/blob/master/README.md 18 | changelog=3.3 - NEW PYTHON LIBRARY TO INSTALL : piexif - restructuration of the pose estimation and new small features 19 | tags=picture, perspective, pose estimation, orientation, orthorectification, monoplotting 20 | icon=icon.png 21 | experimental=True 22 | deprecated=False -------------------------------------------------------------------------------- /Pic2Map/ui_buffering.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'U:\pic2map-master\pic2map-master\Pic2Map\ui\ui_buffering.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | 12 | class Ui_Form(object): 13 | def setupUi(self, Form): 14 | Form.setObjectName("Form") 15 | Form.resize(391, 58) 16 | self.progressBar = QtWidgets.QProgressBar(Form) 17 | self.progressBar.setGeometry(QtCore.QRect(10, 30, 361, 23)) 18 | self.progressBar.setProperty("value", 0) 19 | self.progressBar.setObjectName("progressBar") 20 | self.label = QtWidgets.QLabel(Form) 21 | self.label.setGeometry(QtCore.QRect(20, 10, 101, 16)) 22 | self.label.setObjectName("label") 23 | 24 | self.retranslateUi(Form) 25 | QtCore.QMetaObject.connectSlotsByName(Form) 26 | 27 | def retranslateUi(self, Form): 28 | _translate = QtCore.QCoreApplication.translate 29 | Form.setWindowTitle(_translate("Form", "Progress")) 30 | self.label.setText(_translate("Form", "Buffering")) 31 | 32 | 33 | 34 | 35 | if __name__ == "__main__": 36 | import sys 37 | app = QtWidgets.QApplication(sys.argv) 38 | Form = QtWidgets.QWidget() 39 | ui = Ui_Form() 40 | ui.setupUi(Form) 41 | Form.show() 42 | sys.exit(app.exec_()) 43 | -------------------------------------------------------------------------------- /Pic2Map/dataTest/pose.kml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | left 5 | 6 | 8.0932998841 7 | 46.4314217451 8 | 2929.0315707980 9 | -63.3746430701 10 | 78.7204365914 11 | 0.0 12 | absolute 13 | 14 | 30 | 31 | C:/datatest/aletsch/left/left.jpg 32 | 33 | -2.4000000000 34 | 35 | -31.5386631717 36 | 31.5386631717 37 | -23.5000000000 38 | 23.5000000000 39 | 300.0000000000 40 | 41 | 42 | absolute 43 | 8.0932998841,46.4314217451,2929.0315707980 44 | 45 | 46 | -------------------------------------------------------------------------------- /Pic2Map/measure3D.py: -------------------------------------------------------------------------------- 1 | 2 | from builtins import str 3 | from PyQt5 import QtGui, QtWidgets, QtCore 4 | from PyQt5.QtGui import * 5 | from PyQt5.QtCore import * 6 | from PyQt5.QtWidgets import * 7 | from qgis.core import * 8 | from qgis.gui import * 9 | from math import sqrt 10 | from .ui_mesure3D import Ui_Mesure3DDialog 11 | 12 | class mesure3DDialog(QtWidgets.QDialog): 13 | closeSignal= pyqtSignal() 14 | def __init__(self): 15 | QtWidgets.QDialog.__init__(self) 16 | # create the interface 17 | self.ui = Ui_Mesure3DDialog() 18 | self.ui.setupUi(self) 19 | #self.path contains the path in picture coordinates. It is only used for drawing 20 | self.path = [] 21 | #self.total contains the total length of the path in meter (3D distance) 22 | self.total = 0 23 | 24 | def closeEvent(self, event): 25 | # toggle the button when the window is closed 26 | self.closeSignal.emit() 27 | 28 | def addPoint(self,x,y): 29 | #Add a point to the path 30 | self.path.append([x,y]) 31 | if len(self.path)>1: 32 | x = self.path[-2][0]-self.path[-1][0] 33 | y = self.path[-2][1]-self.path[-1][1] 34 | distance = round(sqrt(x**2+y**2),2) 35 | self.ui.textBrowser.append(str(distance)) 36 | self.total += distance 37 | self.ui.textBrowser_2.setText(str(self.total)) 38 | 39 | def removePath(self): 40 | # Clear the measurement buffer and the window 41 | self.path = [] 42 | self.total = 0 43 | self.ui.textBrowser.clear() 44 | self.ui.textBrowser_2.clear() 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Pic2Map/iconsdialog.py: -------------------------------------------------------------------------------- 1 | """ 2 | /*************************************************************************** 3 | * * 4 | * This program is free software; you can redistribute it and/or modify * 5 | * it under the terms of the GNU General Public License as published by * 6 | * the Free Software Foundation; either version 2 of the License, or * 7 | * (at your option) any later version. * 8 | * * 9 | ***************************************************************************/ 10 | """ 11 | 12 | from PyQt5 import QtGui, QtWidgets, QtCore 13 | from PyQt5.QtGui import * 14 | from PyQt5.QtCore import * 15 | from PyQt5.QtWidgets import * 16 | from .ui_icons import Ui_iconsDialog 17 | from functools import partial 18 | 19 | class icons_dialog(QtWidgets.QDialog): 20 | def __init__(self, iconSet): 21 | QtWidgets.QDialog.__init__(self) 22 | self.uiIcons = Ui_iconsDialog() 23 | self.uiIcons.setupUi(self,iconSet) 24 | #self.center() 25 | 26 | self.uiIcons.colorMButton.clicked.connect(partial(self.showColor, self.uiIcons.colorMButton)) 27 | self.uiIcons.colorCButton.clicked.connect(partial(self.showColor, self.uiIcons.colorCButton)) 28 | 29 | def center(self): 30 | qr = self.frameGeometry() 31 | cp = QtWidgets.QDesktopWidget().availableGeometry().center() 32 | qr.moveCenter(cp) 33 | self.move(qr.topLeft()) 34 | 35 | def showColor(self, frame): 36 | col = QtWidgets.QColorDialog.getColor() 37 | if col.isValid(): 38 | frame.setStyleSheet("QWidget { background-color: %s }" % col.name()) 39 | 40 | 41 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_reportDialog.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | ReportGCP 4 | 5 | 6 | 7 | 0 8 | 0 9 | 382 10 | 277 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Save Report 24 | 25 | 26 | 27 | 28 | 29 | 30 | Qt::Horizontal 31 | 32 | 33 | QDialogButtonBox::Ok 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | buttonBox 43 | accepted() 44 | ReportGCP 45 | accept() 46 | 47 | 48 | 248 49 | 254 50 | 51 | 52 | 157 53 | 274 54 | 55 | 56 | 57 | 58 | buttonBox 59 | rejected() 60 | ReportGCP 61 | reject() 62 | 63 | 64 | 316 65 | 260 66 | 67 | 68 | 286 69 | 274 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /Pic2Map/ui_reportGCP.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'U:\pic2map-master\pic2map-master\Pic2Map\ui\ui_reportDialog.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | 12 | class Ui_ReportGCP(object): 13 | def setupUi(self, ReportGCP): 14 | ReportGCP.setObjectName("ReportGCP") 15 | ReportGCP.resize(382, 277) 16 | self.gridLayout = QtWidgets.QGridLayout(ReportGCP) 17 | self.gridLayout.setObjectName("gridLayout") 18 | self.reportBrowser = QtWidgets.QTextBrowser(ReportGCP) 19 | self.reportBrowser.setObjectName("reportBrowser") 20 | self.reportBrowser.setStyleSheet('font-family : Courier') 21 | self.gridLayout.addWidget(self.reportBrowser, 0, 0, 1, 2) 22 | self.pushButton = QtWidgets.QPushButton(ReportGCP) 23 | self.pushButton.setObjectName("pushButton") 24 | self.gridLayout.addWidget(self.pushButton, 1, 0, 1, 1) 25 | self.buttonBox = QtWidgets.QDialogButtonBox(ReportGCP) 26 | self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 27 | self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Ok) 28 | self.buttonBox.setObjectName("buttonBox") 29 | self.gridLayout.addWidget(self.buttonBox, 1, 1, 1, 1) 30 | 31 | self.retranslateUi(ReportGCP) 32 | self.buttonBox.accepted.connect(ReportGCP.accept) 33 | self.buttonBox.rejected.connect(ReportGCP.reject) 34 | QtCore.QMetaObject.connectSlotsByName(ReportGCP) 35 | 36 | def retranslateUi(self, ReportGCP): 37 | _translate = QtCore.QCoreApplication.translate 38 | ReportGCP.setWindowTitle(_translate("ReportGCP", "Report on GCPs")) 39 | self.pushButton.setText(_translate("ReportGCP", "Save Report")) 40 | 41 | 42 | 43 | 44 | if __name__ == "__main__": 45 | import sys 46 | app = QtWidgets.QApplication(sys.argv) 47 | ReportGCP = QtWidgets.QDialog() 48 | ui = Ui_ReportGCP() 49 | ui.setupUi(ReportGCP) 50 | ReportGCP.show() 51 | sys.exit(app.exec_()) 52 | -------------------------------------------------------------------------------- /Pic2Map/labelSettingsDialog.py: -------------------------------------------------------------------------------- 1 | """ 2 | /*************************************************************************** 3 | * * 4 | * This program is free software; you can redistribute it and/or modify * 5 | * it under the terms of the GNU General Public License as published by * 6 | * the Free Software Foundation; either version 2 of the License, or * 7 | * (at your option) any later version. * 8 | * * 9 | ***************************************************************************/ 10 | """ 11 | 12 | from PyQt5 import QtGui, QtWidgets, QtCore 13 | from PyQt5.QtGui import * 14 | from PyQt5.QtCore import * 15 | from PyQt5.QtWidgets import * 16 | from .ui_label_settings import Ui_LabelSetting 17 | from functools import partial 18 | 19 | class label_dialog(QtWidgets.QDialog): 20 | def __init__(self, labelSet): 21 | QtWidgets.QDialog.__init__(self) 22 | self.ui = Ui_LabelSetting() 23 | self.ui.setupUi(self, labelSet) 24 | #self.center() 25 | self.ui.colorButton.clicked.connect(partial(self.showColor, self.ui.colorButton)) 26 | self.ui.fontButton.clicked.connect(self.showFont) 27 | 28 | self.font = labelSet[1] 29 | self.ui.label_2.setFont(labelSet[1]) 30 | self.ui.doubleSpinBox.setValue(labelSet[2]) 31 | self.ui.doubleSpinBox_2.setValue(labelSet[3]) 32 | 33 | 34 | def center(self): 35 | qr = self.frameGeometry() 36 | cp = QtWidgets.QDesktopWidget().availableGeometry().center() 37 | qr.moveCenter(cp) 38 | self.move(qr.topLeft()) 39 | 40 | def showFont(self): 41 | font, ok = QtWidgets.QFontDialog.getFont() 42 | if ok: 43 | self.font = font 44 | self.ui.label_2.setFont(font) 45 | 46 | def showColor(self, frame): 47 | # Open the PyQt dialog box 48 | col = QtWidgets.QColorDialog.getColor() 49 | if col.isValid(): 50 | # color the button 51 | frame.setStyleSheet("QWidget { background-color: %s }" % col.name()) 52 | # color the font 53 | self.ui.label_2.setStyleSheet('QLabel {color: %s }' % col.name()) 54 | 55 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_label_settings.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | LabelSetting 4 | 5 | 6 | 7 | 0 8 | 0 9 | 174 10 | 204 11 | 12 | 13 | 14 | Label Settings 15 | 16 | 17 | 18 | 19 | 20 | Color 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Font 35 | 36 | 37 | 38 | 39 | 40 | 41 | offset X 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | offset Y 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | Qt::Horizontal 62 | 63 | 64 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 65 | 66 | 67 | 68 | 69 | 70 | 71 | Set Font 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | buttonBox 81 | accepted() 82 | LabelSetting 83 | accept() 84 | 85 | 86 | 248 87 | 254 88 | 89 | 90 | 157 91 | 274 92 | 93 | 94 | 95 | 96 | buttonBox 97 | rejected() 98 | LabelSetting 99 | reject() 100 | 101 | 102 | 316 103 | 260 104 | 105 | 106 | 286 107 | 274 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /Pic2Map/help/build/html/search.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Search — Pic2Map 0.1 documentation 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 46 | 47 |
48 |
49 |
50 |
51 | 52 |

Search

53 |
54 | 55 |

56 | Please activate JavaScript to enable the search 57 | functionality. 58 |

59 |
60 |

61 | From here you can search these documents. Enter your search 62 | words into the box below and click "search". Note that the search 63 | function will automatically search for all of the words. Pages 64 | containing fewer words won't appear in the result list. 65 |

66 |
67 | 68 | 69 | 70 |
71 | 72 |
73 | 74 |
75 | 76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 | 94 | 98 | 99 | -------------------------------------------------------------------------------- /Pic2Map/ui_mesure3D.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'U:\pic2map-master\pic2map-master\Pic2Map\ui\ui_mesure3D.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | 12 | class Ui_Mesure3DDialog(object): 13 | def setupUi(self, Mesure3DDialog): 14 | Mesure3DDialog.setObjectName("Mesure3DDialog") 15 | Mesure3DDialog.resize(432, 239) 16 | sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) 17 | sizePolicy.setHorizontalStretch(0) 18 | sizePolicy.setVerticalStretch(0) 19 | sizePolicy.setHeightForWidth(Mesure3DDialog.sizePolicy().hasHeightForWidth()) 20 | Mesure3DDialog.setSizePolicy(sizePolicy) 21 | self.textBrowser_2 = QtWidgets.QTextBrowser(Mesure3DDialog) 22 | self.textBrowser_2.setGeometry(QtCore.QRect(110, 180, 311, 21)) 23 | sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) 24 | sizePolicy.setHorizontalStretch(0) 25 | sizePolicy.setVerticalStretch(0) 26 | sizePolicy.setHeightForWidth(self.textBrowser_2.sizePolicy().hasHeightForWidth()) 27 | self.textBrowser_2.setSizePolicy(sizePolicy) 28 | self.textBrowser_2.setFrameShadow(QtWidgets.QFrame.Sunken) 29 | self.textBrowser_2.setTextInteractionFlags(QtCore.Qt.TextSelectableByMouse) 30 | self.textBrowser_2.setObjectName("textBrowser_2") 31 | self.textBrowser = QtWidgets.QTextBrowser(Mesure3DDialog) 32 | self.textBrowser.setGeometry(QtCore.QRect(20, 30, 401, 137)) 33 | self.textBrowser.setObjectName("textBrowser") 34 | self.label = QtWidgets.QLabel(Mesure3DDialog) 35 | self.label.setGeometry(QtCore.QRect(20, 10, 91, 16)) 36 | self.label.setObjectName("label") 37 | self.label_2 = QtWidgets.QLabel(Mesure3DDialog) 38 | self.label_2.setGeometry(QtCore.QRect(60, 180, 41, 21)) 39 | self.label_2.setObjectName("label_2") 40 | self.buttonBox = QtWidgets.QDialogButtonBox(Mesure3DDialog) 41 | self.buttonBox.setGeometry(QtCore.QRect(340, 210, 75, 23)) 42 | self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 43 | self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Close) 44 | self.buttonBox.setObjectName("buttonBox") 45 | 46 | self.retranslateUi(Mesure3DDialog) 47 | self.buttonBox.accepted.connect(Mesure3DDialog.accept) 48 | self.buttonBox.rejected.connect(Mesure3DDialog.reject) 49 | QtCore.QMetaObject.connectSlotsByName(Mesure3DDialog) 50 | 51 | def retranslateUi(self, Mesure3DDialog): 52 | _translate = QtCore.QCoreApplication.translate 53 | Mesure3DDialog.setWindowTitle(_translate("Mesure3DDialog", "Mesure 3D")) 54 | self.textBrowser_2.setHtml(_translate("Mesure3DDialog", "\n" 55 | "\n" 58 | "


")) 59 | self.label.setText(_translate("Mesure3DDialog", "Segments [mètres]")) 60 | self.label_2.setText(_translate("Mesure3DDialog", "Total:")) 61 | 62 | 63 | 64 | 65 | if __name__ == "__main__": 66 | import sys 67 | app = QtWidgets.QApplication(sys.argv) 68 | Mesure3DDialog = QtWidgets.QDialog() 69 | ui = Ui_Mesure3DDialog() 70 | ui.setupUi(Mesure3DDialog) 71 | Mesure3DDialog.show() 72 | sys.exit(app.exec_()) 73 | -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffffcc } 2 | .highlight { background: #eeffcc; } 3 | .highlight .c { color: #408090; font-style: italic } /* Comment */ 4 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 5 | .highlight .k { color: #007020; font-weight: bold } /* Keyword */ 6 | .highlight .o { color: #666666 } /* Operator */ 7 | .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ 8 | .highlight .cp { color: #007020 } /* Comment.Preproc */ 9 | .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ 10 | .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ 11 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #FF0000 } /* Generic.Error */ 14 | .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 15 | .highlight .gi { color: #00A000 } /* Generic.Inserted */ 16 | .highlight .go { color: #333333 } /* Generic.Output */ 17 | .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ 18 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 19 | .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 20 | .highlight .gt { color: #0044DD } /* Generic.Traceback */ 21 | .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ 22 | .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ 23 | .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ 24 | .highlight .kp { color: #007020 } /* Keyword.Pseudo */ 25 | .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #902000 } /* Keyword.Type */ 27 | .highlight .m { color: #208050 } /* Literal.Number */ 28 | .highlight .s { color: #4070a0 } /* Literal.String */ 29 | .highlight .na { color: #4070a0 } /* Name.Attribute */ 30 | .highlight .nb { color: #007020 } /* Name.Builtin */ 31 | .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #60add5 } /* Name.Constant */ 33 | .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ 34 | .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ 35 | .highlight .ne { color: #007020 } /* Name.Exception */ 36 | .highlight .nf { color: #06287e } /* Name.Function */ 37 | .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ 38 | .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ 39 | .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ 40 | .highlight .nv { color: #bb60d5 } /* Name.Variable */ 41 | .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ 42 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 43 | .highlight .mf { color: #208050 } /* Literal.Number.Float */ 44 | .highlight .mh { color: #208050 } /* Literal.Number.Hex */ 45 | .highlight .mi { color: #208050 } /* Literal.Number.Integer */ 46 | .highlight .mo { color: #208050 } /* Literal.Number.Oct */ 47 | .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ 48 | .highlight .sc { color: #4070a0 } /* Literal.String.Char */ 49 | .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ 50 | .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ 51 | .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ 52 | .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ 53 | .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ 54 | .highlight .sx { color: #c65d09 } /* Literal.String.Other */ 55 | .highlight .sr { color: #235388 } /* Literal.String.Regex */ 56 | .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ 57 | .highlight .ss { color: #517918 } /* Literal.String.Symbol */ 58 | .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ 59 | .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ 60 | .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ 61 | .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ 62 | .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /Pic2Map/ui_label_settings.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'U:\pic2map-master\pic2map-master\Pic2Map\ui\ui_label_settings.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | try: 12 | _encoding = QtWidgets.QApplication.UnicodeUTF8 13 | def _translate(context, text, disambig): 14 | return QtCore.QCoreApplication.translate(context, text, disambig, _encoding) 15 | except AttributeError: 16 | def _translate(context, text, disambig): 17 | return QtCore.QCoreApplication.translate(context, text, disambig) 18 | 19 | class Ui_LabelSetting(object): 20 | def setupUi(self, LabelSetting, labelSet): 21 | LabelSetting.setObjectName("LabelSetting") 22 | LabelSetting.resize(174, 204) 23 | self.gridLayout = QtWidgets.QGridLayout(LabelSetting) 24 | self.gridLayout.setObjectName("gridLayout") 25 | self.label = QtWidgets.QLabel(LabelSetting) 26 | self.label.setObjectName("label") 27 | self.gridLayout.addWidget(self.label, 0, 0, 1, 1) 28 | self.colorButton = QtWidgets.QPushButton(LabelSetting) 29 | self.colorButton.setText("") 30 | self.colorButton.setObjectName("colorButton") 31 | self.colorButton.setStyleSheet("QWidget { background-color: %s }" % labelSet[0].name()) 32 | self.gridLayout.addWidget(self.colorButton, 0, 1, 1, 1) 33 | self.label_2 = QtWidgets.QLabel(LabelSetting) 34 | self.label_2.setObjectName("label_2") 35 | self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) 36 | self.label_3 = QtWidgets.QLabel(LabelSetting) 37 | self.label_3.setObjectName("label_3") 38 | self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) 39 | self.doubleSpinBox = QtWidgets.QDoubleSpinBox(LabelSetting) 40 | self.doubleSpinBox.setObjectName("doubleSpinBox") 41 | self.gridLayout.addWidget(self.doubleSpinBox, 2, 1, 1, 1) 42 | self.doubleSpinBox.setMinimum(-100) 43 | self.doubleSpinBox.setMaximum(100) 44 | self.label_4 = QtWidgets.QLabel(LabelSetting) 45 | self.label_4.setObjectName("label_4") 46 | self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) 47 | self.doubleSpinBox_2 = QtWidgets.QDoubleSpinBox(LabelSetting) 48 | self.doubleSpinBox_2.setObjectName("doubleSpinBox_2") 49 | self.gridLayout.addWidget(self.doubleSpinBox_2, 3, 1, 1, 1) 50 | self.doubleSpinBox_2.setMinimum(-100) 51 | self.doubleSpinBox_2.setMaximum(100) 52 | self.buttonBox = QtWidgets.QDialogButtonBox(LabelSetting) 53 | self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 54 | self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) 55 | self.buttonBox.setObjectName("buttonBox") 56 | self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 2) 57 | self.fontButton = QtWidgets.QPushButton(LabelSetting) 58 | self.fontButton.setObjectName("fontButton") 59 | self.gridLayout.addWidget(self.fontButton, 1, 1, 1, 1) 60 | 61 | self.retranslateUi(LabelSetting) 62 | self.buttonBox.accepted.connect(LabelSetting.accept) 63 | self.buttonBox.rejected.connect(LabelSetting.reject) 64 | QtCore.QMetaObject.connectSlotsByName(LabelSetting) 65 | 66 | def retranslateUi(self, LabelSetting): 67 | LabelSetting.setWindowTitle(_translate("LabelSetting", "Label Settings", None)) 68 | self.label.setText(_translate("LabelSetting", "Color", None)) 69 | self.label_2.setText(_translate("LabelSetting", "Font", None)) 70 | self.label_3.setText(_translate("LabelSetting", "offset X", None)) 71 | self.label_4.setText(_translate("LabelSetting", "offset Y", None)) 72 | self.fontButton.setText(_translate("LabelSetting", "Set Font", None)) 73 | 74 | 75 | 76 | 77 | 78 | if __name__ == "__main__": 79 | import sys 80 | app = QtWidgets.QApplication(sys.argv) 81 | LabelSetting = QtWidgets.QDialog() 82 | ui = Ui_LabelSetting() 83 | ui.setupUi(LabelSetting) 84 | LabelSetting.show() 85 | sys.exit(app.exec_()) 86 | -------------------------------------------------------------------------------- /Pic2Map/dataTest/AletschGlacierDEM.tiff.aux.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -2.076 6 | 4154.076 7 | 1000 8 | 0 9 | 0 10 | 6891|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|1|12|31|24|35|46|55|28|22|34|27|28|48|55|42|44|54|79|97|88|86|80|69|76|74|83|102|96|69|90|85|102|136|136|212|182|170|146|186|117|168|172|166|163|147|232|208|275|293|298|384|419|346|304|320|367|378|325|531|366|342|318|326|312|411|308|318|311|282|292|382|313|314|352|303|347|344|381|293|270|263|281|326|392|332|271|276|287|260|267|332|301|294|269|269|270|340|268|266|261|247|216|322|228|218|226|250|221|230|321|255|216|238|197|215|271|232|185|226|203|210|186|257|213|198|226|231|206|247|227|202|183|209|190|257|185|208|227|233|213|218|266|230|227|216|228|206|242|209|205|219|211|176|219|232|217|188|217|199|203|270|211|214|217|208|219|262|210|270|242|263|255|243|293|249|251|242|262|241|289|259|237|284|267|256|213|315|233|213|239|234|254|269|230|246|213|253|204|321|246|253|250|235|288|230|313|280|256|276|250|274|313|239|289|293|307|346|311|380|305|282|305|303|342|366|332|307|285|312|304|378|338|317|352|318|318|311|475|439|413|348|396|374|449|343|388|432|417|417|443|537|436|435|448|451|469|590|535|527|521|453|425|557|425|444|462|490|487|519|600|466|481|525|517|482|634|531|498|510|525|564|662|753|594|579|570|568|515|703|556|539|553|551|570|533|716|595|597|595|672|665|780|602|610|583|639|594|757|614|679|676|731|716|778|829|710|718|764|787|741|1021|773|850|774|798|741|799|970|769|762|752|749|707|931|739|699|660|747|711|819|693|736|804|828|831|786|1070|815|980|873|852|775|1085|828|837|642|756|705|720|1020|847|826|810|759|762|991|888|762|829|810|882|1021|799|849|771|862|908|940|1190|837|929|924|946|956|1271|956|944|964|926|885|973|1219|1063|1053|1001|948|1028|1223|1011|943|926|923|949|1224|987|985|991|982|1020|961|1242|892|979|989|1087|991|1263|1060|1102|1233|1200|1002|1042|1254|945|1038|1036|941|1023|1212|964|996|1016|1003|1028|1176|1041|1008|974|988|943|947|1298|1004|1047|1156|1249|1182|1561|1331|1334|1300|1354|1292|1338|1583|1255|1259|1368|1342|1407|1718|1428|1368|1349|1333|1316|1733|1497|1402|1389|1389|1406|1422|1660|1260|1364|1213|1297|1231|1531|1200|1178|1218|1124|1245|1270|1521|1236|1268|1291|1258|1339|1608|1340|1321|1385|1446|1479|1919|1513|1288|1243|1259|1258|1300|1750|1360|1305|1318|1284|1243|1587|1263|1297|1327|1393|1437|1374|1636|1273|1246|1288|1333|1232|1594|1285|1330|1342|1249|1388|1632|1375|1341|1249|1321|1301|1377|1521|1391|1285|1275|1259|1169|1546|1381|1363|1361|1312|1364|1308|1766|1299|1344|1371|1283|1318|1560|1333|1296|1280|1306|1243|1426|1232|1167|1161|1159|1213|1217|1517|1152|1240|1200|1213|1237|1431|1197|1124|1156|1097|1077|1062|1338|1082|1003|1071|1060|971|1230|1090|968|1008|928|950|1161|962|947|969|945|987|889|1258|960|817|918|889|864|1113|954|826|922|855|860|842|1015|833|769|834|813|754|1043|801|801|803|825|776|773|912|787|802|732|716|784|914|728|664|655|655|669|800|735|690|650|639|749|632|883|672|601|663|641|605|796|570|531|532|540|526|498|637|531|558|535|576|589|672|495|525|527|519|500|560|493|473|453|517|449|453|527|403|389|397|367|322|472|326|323|365|318|302|276|319|254|226|203|249|249|324|259|239|206|237|223|229|204|179|168|204|167|176|222|188|192|179|174|160|196|164|113|157|138|124|127|163|144|113|112|84|87|100|78|67|62|76|79|83|55|68|55|60|52|36|47|37|31|19|29|14|25|14|17|27|19|11|26|19|21|24|13|20|13|13|15|8|18|15|17|17|11|13|20|10|13|16|17|10|16|12|16|13|13|21|10|7|10|17|10|19|4|3|3|2|7|3 11 | 12 | 13 | 14 | 4152 15 | 2642.5149270483 16 | 0 17 | 716.79430681364 18 | 100 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_monoplotter.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Monoplotter 4 | 5 | 6 | 7 | 0 8 | 0 9 | 757 10 | 442 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | MainWindow 21 | 22 | 23 | false 24 | 25 | 26 | QMainWindow::AllowTabbedDocks 27 | 28 | 29 | false 30 | 31 | 32 | 33 | 34 | 35 | 0 36 | 0 37 | 757 38 | 21 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 0 47 | 0 48 | 49 | 50 | 51 | QDockWidget::NoDockWidgetFeatures 52 | 53 | 54 | 2 55 | 56 | 57 | 58 | 59 | 60 | 61 | true 62 | 63 | 64 | 65 | 0 66 | 0 67 | 68 | 69 | 70 | Window Size: 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | Measure on plane 81 | 82 | 83 | 84 | 85 | 86 | 87 | Measure 3D 88 | 89 | 90 | 91 | 92 | 93 | 94 | Drap on DEM 95 | 96 | 97 | 98 | 99 | 100 | 101 | Save Image 102 | 103 | 104 | 105 | 106 | 107 | 108 | Refresh Layers 109 | 110 | 111 | 112 | 113 | 114 | 115 | Add Labels 116 | 117 | 118 | 119 | 120 | 121 | 122 | Qt::Vertical 123 | 124 | 125 | 126 | 20 127 | 40 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_mesure3D.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Mesure3DDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 432 10 | 239 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | Mesure 3D 21 | 22 | 23 | 24 | 25 | 110 26 | 180 27 | 311 28 | 21 29 | 30 | 31 | 32 | 33 | 0 34 | 0 35 | 36 | 37 | 38 | QFrame::Sunken 39 | 40 | 41 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> 42 | <html><head><meta name="qrichtext" content="1" /><style type="text/css"> 43 | p, li { white-space: pre-wrap; } 44 | </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> 45 | <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> 46 | 47 | 48 | Qt::TextSelectableByMouse 49 | 50 | 51 | 52 | 53 | 54 | 20 55 | 30 56 | 401 57 | 137 58 | 59 | 60 | 61 | 62 | 63 | 64 | 20 65 | 10 66 | 91 67 | 16 68 | 69 | 70 | 71 | Segments [mètres] 72 | 73 | 74 | 75 | 76 | 77 | 60 78 | 180 79 | 41 80 | 21 81 | 82 | 83 | 84 | Total: 85 | 86 | 87 | 88 | 89 | 90 | 340 91 | 210 92 | 75 93 | 23 94 | 95 | 96 | 97 | Qt::Horizontal 98 | 99 | 100 | QDialogButtonBox::Close 101 | 102 | 103 | 104 | 105 | 106 | 107 | buttonBox 108 | accepted() 109 | Mesure3DDialog 110 | accept() 111 | 112 | 113 | 248 114 | 254 115 | 116 | 117 | 157 118 | 274 119 | 120 | 121 | 122 | 123 | buttonBox 124 | rejected() 125 | Mesure3DDialog 126 | reject() 127 | 128 | 129 | 316 130 | 260 131 | 132 | 133 | 286 134 | 274 135 | 136 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_disp_ini.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 447 10 | 195 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Input Elevation Model 24 | 25 | 26 | 27 | 28 | 29 | 30 | Input Picture 31 | 32 | 33 | 34 | 35 | 36 | 37 | ... 38 | 39 | 40 | 41 | 42 | 43 | 44 | ... 45 | 46 | 47 | 48 | 49 | 50 | 51 | Qt::Horizontal 52 | 53 | 54 | QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | Method used for pose estimation: 65 | 66 | 67 | 68 | 69 | 70 | GCP approach 71 | 72 | 73 | true 74 | 75 | 76 | buttonGroup 77 | 78 | 79 | 80 | 81 | 82 | 83 | Virtual 3D approach 84 | 85 | 86 | buttonGroup 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | Ortho-photo 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | ... 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | buttonBox 116 | accepted() 117 | Dialog 118 | accept() 119 | 120 | 121 | 248 122 | 254 123 | 124 | 125 | 157 126 | 274 127 | 128 | 129 | 130 | 131 | buttonBox 132 | rejected() 133 | Dialog 134 | reject() 135 | 136 | 137 | 316 138 | 260 139 | 140 | 141 | 286 142 | 274 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /Pic2Map/help/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | REM Command file for Sphinx documentation 4 | 5 | if "%SPHINXBUILD%" == "" ( 6 | set SPHINXBUILD=sphinx-build 7 | ) 8 | set BUILDDIR=build 9 | set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source 10 | if NOT "%PAPER%" == "" ( 11 | set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% 12 | ) 13 | 14 | if "%1" == "" goto help 15 | 16 | if "%1" == "help" ( 17 | :help 18 | echo.Please use `make ^` where ^ is one of 19 | echo. html to make standalone HTML files 20 | echo. dirhtml to make HTML files named index.html in directories 21 | echo. singlehtml to make a single large HTML file 22 | echo. pickle to make pickle files 23 | echo. json to make JSON files 24 | echo. htmlhelp to make HTML files and a HTML help project 25 | echo. qthelp to make HTML files and a qthelp project 26 | echo. devhelp to make HTML files and a Devhelp project 27 | echo. epub to make an epub 28 | echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter 29 | echo. text to make text files 30 | echo. man to make manual pages 31 | echo. changes to make an overview over all changed/added/deprecated items 32 | echo. linkcheck to check all external links for integrity 33 | echo. doctest to run all doctests embedded in the documentation if enabled 34 | goto end 35 | ) 36 | 37 | if "%1" == "clean" ( 38 | for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i 39 | del /q /s %BUILDDIR%\* 40 | goto end 41 | ) 42 | 43 | if "%1" == "html" ( 44 | %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html 45 | echo. 46 | echo.Build finished. The HTML pages are in %BUILDDIR%/html. 47 | goto end 48 | ) 49 | 50 | if "%1" == "dirhtml" ( 51 | %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml 52 | echo. 53 | echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. 54 | goto end 55 | ) 56 | 57 | if "%1" == "singlehtml" ( 58 | %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml 59 | echo. 60 | echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. 61 | goto end 62 | ) 63 | 64 | if "%1" == "pickle" ( 65 | %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle 66 | echo. 67 | echo.Build finished; now you can process the pickle files. 68 | goto end 69 | ) 70 | 71 | if "%1" == "json" ( 72 | %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json 73 | echo. 74 | echo.Build finished; now you can process the JSON files. 75 | goto end 76 | ) 77 | 78 | if "%1" == "htmlhelp" ( 79 | %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp 80 | echo. 81 | echo.Build finished; now you can run HTML Help Workshop with the ^ 82 | .hhp project file in %BUILDDIR%/htmlhelp. 83 | goto end 84 | ) 85 | 86 | if "%1" == "qthelp" ( 87 | %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp 88 | echo. 89 | echo.Build finished; now you can run "qcollectiongenerator" with the ^ 90 | .qhcp project file in %BUILDDIR%/qthelp, like this: 91 | echo.^> qcollectiongenerator %BUILDDIR%\qthelp\templateclass.qhcp 92 | echo.To view the help file: 93 | echo.^> assistant -collectionFile %BUILDDIR%\qthelp\templateclass.ghc 94 | goto end 95 | ) 96 | 97 | if "%1" == "devhelp" ( 98 | %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp 99 | echo. 100 | echo.Build finished. 101 | goto end 102 | ) 103 | 104 | if "%1" == "epub" ( 105 | %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub 106 | echo. 107 | echo.Build finished. The epub file is in %BUILDDIR%/epub. 108 | goto end 109 | ) 110 | 111 | if "%1" == "latex" ( 112 | %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex 113 | echo. 114 | echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. 115 | goto end 116 | ) 117 | 118 | if "%1" == "text" ( 119 | %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text 120 | echo. 121 | echo.Build finished. The text files are in %BUILDDIR%/text. 122 | goto end 123 | ) 124 | 125 | if "%1" == "man" ( 126 | %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man 127 | echo. 128 | echo.Build finished. The manual pages are in %BUILDDIR%/man. 129 | goto end 130 | ) 131 | 132 | if "%1" == "changes" ( 133 | %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes 134 | echo. 135 | echo.The overview file is in %BUILDDIR%/changes. 136 | goto end 137 | ) 138 | 139 | if "%1" == "linkcheck" ( 140 | %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck 141 | echo. 142 | echo.Link check complete; look for any errors in the above output ^ 143 | or in %BUILDDIR%/linkcheck/output.txt. 144 | goto end 145 | ) 146 | 147 | if "%1" == "doctest" ( 148 | %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest 149 | echo. 150 | echo.Testing of doctests in the sources finished, look at the ^ 151 | results in %BUILDDIR%/doctest/output.txt. 152 | goto end 153 | ) 154 | 155 | :end 156 | -------------------------------------------------------------------------------- /Pic2Map/help/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = build 9 | 10 | # Internal variables. 11 | PAPEROPT_a4 = -D latex_paper_size=a4 12 | PAPEROPT_letter = -D latex_paper_size=letter 13 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 14 | 15 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest 16 | 17 | help: 18 | @echo "Please use \`make ' where is one of" 19 | @echo " html to make standalone HTML files" 20 | @echo " dirhtml to make HTML files named index.html in directories" 21 | @echo " singlehtml to make a single large HTML file" 22 | @echo " pickle to make pickle files" 23 | @echo " json to make JSON files" 24 | @echo " htmlhelp to make HTML files and a HTML help project" 25 | @echo " qthelp to make HTML files and a qthelp project" 26 | @echo " devhelp to make HTML files and a Devhelp project" 27 | @echo " epub to make an epub" 28 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 29 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 30 | @echo " text to make text files" 31 | @echo " man to make manual pages" 32 | @echo " changes to make an overview of all changed/added/deprecated items" 33 | @echo " linkcheck to check all external links for integrity" 34 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 35 | 36 | clean: 37 | -rm -rf $(BUILDDIR)/* 38 | 39 | html: 40 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 41 | @echo 42 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 43 | 44 | dirhtml: 45 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 46 | @echo 47 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 48 | 49 | singlehtml: 50 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 51 | @echo 52 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 53 | 54 | pickle: 55 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 56 | @echo 57 | @echo "Build finished; now you can process the pickle files." 58 | 59 | json: 60 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 61 | @echo 62 | @echo "Build finished; now you can process the JSON files." 63 | 64 | htmlhelp: 65 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 66 | @echo 67 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 68 | ".hhp project file in $(BUILDDIR)/htmlhelp." 69 | 70 | qthelp: 71 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 72 | @echo 73 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 74 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 75 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/templateclass.qhcp" 76 | @echo "To view the help file:" 77 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/templateclass.qhc" 78 | 79 | devhelp: 80 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp 81 | @echo 82 | @echo "Build finished." 83 | @echo "To view the help file:" 84 | @echo "# mkdir -p $$HOME/.local/share/devhelp/templateclass" 85 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/templateclass" 86 | @echo "# devhelp" 87 | 88 | epub: 89 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 90 | @echo 91 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 92 | 93 | latex: 94 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 95 | @echo 96 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 97 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 98 | "(use \`make latexpdf' here to do that automatically)." 99 | 100 | latexpdf: 101 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 102 | @echo "Running LaTeX files through pdflatex..." 103 | make -C $(BUILDDIR)/latex all-pdf 104 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 105 | 106 | text: 107 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 108 | @echo 109 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 110 | 111 | man: 112 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 113 | @echo 114 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 115 | 116 | changes: 117 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 118 | @echo 119 | @echo "The overview file is in $(BUILDDIR)/changes." 120 | 121 | linkcheck: 122 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 123 | @echo 124 | @echo "Link check complete; look for any errors in the above output " \ 125 | "or in $(BUILDDIR)/linkcheck/output.txt." 126 | 127 | doctest: 128 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 129 | @echo "Testing of doctests in the sources finished, look at the " \ 130 | "results in $(BUILDDIR)/doctest/output.txt." 131 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_icons.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | iconsDialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 235 10 | 270 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 20 | GCP in Monoplotter 21 | 22 | 23 | 24 | 25 | 26 | Size of Icons 27 | 28 | 29 | 30 | 31 | 32 | 33 | Color 34 | 35 | 36 | 37 | 38 | 39 | 40 | 0 41 | 42 | 43 | 44 | 45 | 46 | 47 | 0 48 | 49 | 50 | 51 | 52 | 53 | 54 | Width of Lines 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | GCP in Canvas 65 | 66 | 67 | 68 | 69 | 70 | Color 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | Size of Icons 84 | 85 | 86 | 87 | 88 | 89 | 90 | Width of Lines 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | Qt::Horizontal 101 | 102 | 103 | QDialogButtonBox::Cancel|QDialogButtonBox::Ok 104 | 105 | 106 | 107 | 108 | 109 | 110 | GCP in 3D viewer 111 | 112 | 113 | 114 | 115 | 116 | Size of cube 117 | 118 | 119 | 120 | 121 | 122 | 123 | 1000 124 | 125 | 126 | 10 127 | 128 | 129 | 100 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | buttonBox 142 | accepted() 143 | iconsDialog 144 | accept() 145 | 146 | 147 | 248 148 | 254 149 | 150 | 151 | 157 152 | 274 153 | 154 | 155 | 156 | 157 | buttonBox 158 | rejected() 159 | iconsDialog 160 | reject() 161 | 162 | 163 | 316 164 | 260 165 | 166 | 167 | 286 168 | 274 169 | 170 | 171 | 172 | 173 | 174 | -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/default.css: -------------------------------------------------------------------------------- 1 | /* 2 | * default.css_t 3 | * ~~~~~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- default theme. 6 | * 7 | * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | @import url("basic.css"); 13 | 14 | /* -- page layout ----------------------------------------------------------- */ 15 | 16 | body { 17 | font-family: sans-serif; 18 | font-size: 100%; 19 | background-color: #11303d; 20 | color: #000; 21 | margin: 0; 22 | padding: 0; 23 | } 24 | 25 | div.document { 26 | background-color: #1c4e63; 27 | } 28 | 29 | div.documentwrapper { 30 | float: left; 31 | width: 100%; 32 | } 33 | 34 | div.bodywrapper { 35 | margin: 0 0 0 230px; 36 | } 37 | 38 | div.body { 39 | background-color: #ffffff; 40 | color: #000000; 41 | padding: 0 20px 30px 20px; 42 | } 43 | 44 | div.footer { 45 | color: #ffffff; 46 | width: 100%; 47 | padding: 9px 0 9px 0; 48 | text-align: center; 49 | font-size: 75%; 50 | } 51 | 52 | div.footer a { 53 | color: #ffffff; 54 | text-decoration: underline; 55 | } 56 | 57 | div.related { 58 | background-color: #133f52; 59 | line-height: 30px; 60 | color: #ffffff; 61 | } 62 | 63 | div.related a { 64 | color: #ffffff; 65 | } 66 | 67 | div.sphinxsidebar { 68 | } 69 | 70 | div.sphinxsidebar h3 { 71 | font-family: 'Trebuchet MS', sans-serif; 72 | color: #ffffff; 73 | font-size: 1.4em; 74 | font-weight: normal; 75 | margin: 0; 76 | padding: 0; 77 | } 78 | 79 | div.sphinxsidebar h3 a { 80 | color: #ffffff; 81 | } 82 | 83 | div.sphinxsidebar h4 { 84 | font-family: 'Trebuchet MS', sans-serif; 85 | color: #ffffff; 86 | font-size: 1.3em; 87 | font-weight: normal; 88 | margin: 5px 0 0 0; 89 | padding: 0; 90 | } 91 | 92 | div.sphinxsidebar p { 93 | color: #ffffff; 94 | } 95 | 96 | div.sphinxsidebar p.topless { 97 | margin: 5px 10px 10px 10px; 98 | } 99 | 100 | div.sphinxsidebar ul { 101 | margin: 10px; 102 | padding: 0; 103 | color: #ffffff; 104 | } 105 | 106 | div.sphinxsidebar a { 107 | color: #98dbcc; 108 | } 109 | 110 | div.sphinxsidebar input { 111 | border: 1px solid #98dbcc; 112 | font-family: sans-serif; 113 | font-size: 1em; 114 | } 115 | 116 | 117 | 118 | /* -- hyperlink styles ------------------------------------------------------ */ 119 | 120 | a { 121 | color: #355f7c; 122 | text-decoration: none; 123 | } 124 | 125 | a:visited { 126 | color: #355f7c; 127 | text-decoration: none; 128 | } 129 | 130 | a:hover { 131 | text-decoration: underline; 132 | } 133 | 134 | 135 | 136 | /* -- body styles ----------------------------------------------------------- */ 137 | 138 | div.body h1, 139 | div.body h2, 140 | div.body h3, 141 | div.body h4, 142 | div.body h5, 143 | div.body h6 { 144 | font-family: 'Trebuchet MS', sans-serif; 145 | background-color: #f2f2f2; 146 | font-weight: normal; 147 | color: #20435c; 148 | border-bottom: 1px solid #ccc; 149 | margin: 20px -20px 10px -20px; 150 | padding: 3px 0 3px 10px; 151 | } 152 | 153 | div.body h1 { margin-top: 0; font-size: 200%; } 154 | div.body h2 { font-size: 160%; } 155 | div.body h3 { font-size: 140%; } 156 | div.body h4 { font-size: 120%; } 157 | div.body h5 { font-size: 110%; } 158 | div.body h6 { font-size: 100%; } 159 | 160 | a.headerlink { 161 | color: #c60f0f; 162 | font-size: 0.8em; 163 | padding: 0 4px 0 4px; 164 | text-decoration: none; 165 | } 166 | 167 | a.headerlink:hover { 168 | background-color: #c60f0f; 169 | color: white; 170 | } 171 | 172 | div.body p, div.body dd, div.body li { 173 | text-align: justify; 174 | line-height: 130%; 175 | } 176 | 177 | div.admonition p.admonition-title + p { 178 | display: inline; 179 | } 180 | 181 | div.admonition p { 182 | margin-bottom: 5px; 183 | } 184 | 185 | div.admonition pre { 186 | margin-bottom: 5px; 187 | } 188 | 189 | div.admonition ul, div.admonition ol { 190 | margin-bottom: 5px; 191 | } 192 | 193 | div.note { 194 | background-color: #eee; 195 | border: 1px solid #ccc; 196 | } 197 | 198 | div.seealso { 199 | background-color: #ffc; 200 | border: 1px solid #ff6; 201 | } 202 | 203 | div.topic { 204 | background-color: #eee; 205 | } 206 | 207 | div.warning { 208 | background-color: #ffe4e4; 209 | border: 1px solid #f66; 210 | } 211 | 212 | p.admonition-title { 213 | display: inline; 214 | } 215 | 216 | p.admonition-title:after { 217 | content: ":"; 218 | } 219 | 220 | pre { 221 | padding: 5px; 222 | background-color: #eeffcc; 223 | color: #333333; 224 | line-height: 120%; 225 | border: 1px solid #ac9; 226 | border-left: none; 227 | border-right: none; 228 | } 229 | 230 | tt { 231 | background-color: #ecf0f3; 232 | padding: 0 1px 0 1px; 233 | font-size: 0.95em; 234 | } 235 | 236 | th { 237 | background-color: #ede; 238 | } 239 | 240 | .warning tt { 241 | background: #efc2c2; 242 | } 243 | 244 | .note tt { 245 | background: #d6d6d6; 246 | } 247 | 248 | .viewcode-back { 249 | font-family: sans-serif; 250 | } 251 | 252 | div.viewcode-block:target { 253 | background-color: #f4debf; 254 | border-top: 1px solid #ac9; 255 | border-bottom: 1px solid #ac9; 256 | } -------------------------------------------------------------------------------- /Pic2Map/ui/ui_drapping.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ui_drapping 4 | 5 | 6 | 7 | 0 8 | 0 9 | 736 10 | 630 11 | 12 | 13 | 14 | 15 | 0 16 | 0 17 | 18 | 19 | 20 | MainWindow 21 | 22 | 23 | false 24 | 25 | 26 | QMainWindow::AllowTabbedDocks 27 | 28 | 29 | false 30 | 31 | 32 | 33 | 34 | 35 | 0 36 | 0 37 | 736 38 | 21 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 0 47 | 0 48 | 49 | 50 | 51 | QDockWidget::NoDockWidgetFeatures 52 | 53 | 54 | 2 55 | 56 | 57 | 58 | 59 | 60 | 61 | true 62 | 63 | 64 | 65 | 0 66 | 0 67 | 68 | 69 | 70 | Pixel size [m] 71 | 72 | 73 | 74 | 75 | 76 | 77 | 1 78 | 79 | 80 | 100 81 | 82 | 83 | 10 84 | 85 | 86 | 87 | 88 | 89 | 90 | Bounding Box 91 | 92 | 93 | 94 | 95 | 96 | 97 | QFrame::Box 98 | 99 | 100 | QFrame::Raised 101 | 102 | 103 | 2 104 | 105 | 106 | 107 | 108 | 109 | TextLabel 110 | 111 | 112 | 113 | 114 | 115 | 116 | TextLabel 117 | 118 | 119 | 120 | 121 | 122 | 123 | QFrame::NoFrame 124 | 125 | 126 | QFrame::Plain 127 | 128 | 129 | TextLabel 130 | 131 | 132 | 133 | 134 | 135 | 136 | TextLabel 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | Save raster 147 | 148 | 149 | 150 | 151 | 152 | 153 | Qt::Vertical 154 | 155 | 156 | QSizePolicy::Expanding 157 | 158 | 159 | 160 | 20 161 | 260 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | -------------------------------------------------------------------------------- /Pic2Map/help/build/html/_static/sidebar.js: -------------------------------------------------------------------------------- 1 | /* 2 | * sidebar.js 3 | * ~~~~~~~~~~ 4 | * 5 | * This script makes the Sphinx sidebar collapsible. 6 | * 7 | * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds 8 | * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton 9 | * used to collapse and expand the sidebar. 10 | * 11 | * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden 12 | * and the width of the sidebar and the margin-left of the document 13 | * are decreased. When the sidebar is expanded the opposite happens. 14 | * This script saves a per-browser/per-session cookie used to 15 | * remember the position of the sidebar among the pages. 16 | * Once the browser is closed the cookie is deleted and the position 17 | * reset to the default (expanded). 18 | * 19 | * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. 20 | * :license: BSD, see LICENSE for details. 21 | * 22 | */ 23 | 24 | $(function() { 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | // global elements used by the functions. 34 | // the 'sidebarbutton' element is defined as global after its 35 | // creation, in the add_sidebar_button function 36 | var bodywrapper = $('.bodywrapper'); 37 | var sidebar = $('.sphinxsidebar'); 38 | var sidebarwrapper = $('.sphinxsidebarwrapper'); 39 | 40 | // for some reason, the document has no sidebar; do not run into errors 41 | if (!sidebar.length) return; 42 | 43 | // original margin-left of the bodywrapper and width of the sidebar 44 | // with the sidebar expanded 45 | var bw_margin_expanded = bodywrapper.css('margin-left'); 46 | var ssb_width_expanded = sidebar.width(); 47 | 48 | // margin-left of the bodywrapper and width of the sidebar 49 | // with the sidebar collapsed 50 | var bw_margin_collapsed = '.8em'; 51 | var ssb_width_collapsed = '.8em'; 52 | 53 | // colors used by the current theme 54 | var dark_color = $('.related').css('background-color'); 55 | var light_color = $('.document').css('background-color'); 56 | 57 | function sidebar_is_collapsed() { 58 | return sidebarwrapper.is(':not(:visible)'); 59 | } 60 | 61 | function toggle_sidebar() { 62 | if (sidebar_is_collapsed()) 63 | expand_sidebar(); 64 | else 65 | collapse_sidebar(); 66 | } 67 | 68 | function collapse_sidebar() { 69 | sidebarwrapper.hide(); 70 | sidebar.css('width', ssb_width_collapsed); 71 | bodywrapper.css('margin-left', bw_margin_collapsed); 72 | sidebarbutton.css({ 73 | 'margin-left': '0', 74 | 'height': bodywrapper.height() 75 | }); 76 | sidebarbutton.find('span').text('»'); 77 | sidebarbutton.attr('title', _('Expand sidebar')); 78 | document.cookie = 'sidebar=collapsed'; 79 | } 80 | 81 | function expand_sidebar() { 82 | bodywrapper.css('margin-left', bw_margin_expanded); 83 | sidebar.css('width', ssb_width_expanded); 84 | sidebarwrapper.show(); 85 | sidebarbutton.css({ 86 | 'margin-left': ssb_width_expanded-12, 87 | 'height': bodywrapper.height() 88 | }); 89 | sidebarbutton.find('span').text('«'); 90 | sidebarbutton.attr('title', _('Collapse sidebar')); 91 | document.cookie = 'sidebar=expanded'; 92 | } 93 | 94 | function add_sidebar_button() { 95 | sidebarwrapper.css({ 96 | 'float': 'left', 97 | 'margin-right': '0', 98 | 'width': ssb_width_expanded - 28 99 | }); 100 | // create the button 101 | sidebar.append( 102 | '
«
' 103 | ); 104 | var sidebarbutton = $('#sidebarbutton'); 105 | light_color = sidebarbutton.css('background-color'); 106 | // find the height of the viewport to center the '<<' in the page 107 | var viewport_height; 108 | if (window.innerHeight) 109 | viewport_height = window.innerHeight; 110 | else 111 | viewport_height = $(window).height(); 112 | sidebarbutton.find('span').css({ 113 | 'display': 'block', 114 | 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 115 | }); 116 | 117 | sidebarbutton.click(toggle_sidebar); 118 | sidebarbutton.attr('title', _('Collapse sidebar')); 119 | sidebarbutton.css({ 120 | 'color': '#FFFFFF', 121 | 'border-left': '1px solid ' + dark_color, 122 | 'font-size': '1.2em', 123 | 'cursor': 'pointer', 124 | 'height': bodywrapper.height(), 125 | 'padding-top': '1px', 126 | 'margin-left': ssb_width_expanded - 12 127 | }); 128 | 129 | sidebarbutton.hover( 130 | function () { 131 | $(this).css('background-color', dark_color); 132 | }, 133 | function () { 134 | $(this).css('background-color', light_color); 135 | } 136 | ); 137 | } 138 | 139 | function set_position_from_cookie() { 140 | if (!document.cookie) 141 | return; 142 | var items = document.cookie.split(';'); 143 | for(var k=0; k\n" 77 | "\n" 80 | "

Part of the focal information is found in the EXIF File. You need to enter the size of the sensor diagonal in [mm].

\n" 81 | "


\n" 82 | "

1. Check the website http://www.digicamdb.com/

\n" 83 | "

2. Find the diagonal length in [mm] of your sensor

\n" 84 | "

3. Enter it in the line below

\n" 85 | "

4. Read the focal length on the right down line and use it in the pose estimation

")) 86 | self.pushButton.setText(_translate("Exif2", "Get Focal")) 87 | self.label.setText(_translate("Exif2", "Diagonal Length of Sensor [mm]")) 88 | self.label_2.setText(_translate("Exif2", "Focal [pixel unit]")) 89 | self.importXYButton.setText(_translate("Exif2", "Import Coordinate ")) 90 | self.saveXYButton.setText(_translate("Exif2", "Save Coordinate ")) 91 | 92 | 93 | 94 | 95 | 96 | if __name__ == "__main__": 97 | import sys 98 | app = QtWidgets.QApplication(sys.argv) 99 | Exif2 = QtWidgets.QDialog() 100 | ui = Ui_Exif2() 101 | ui.setupUi(Exif2) 102 | Exif2.show() 103 | sys.exit(app.exec_()) 104 | -------------------------------------------------------------------------------- /Pic2Map/Makefile: -------------------------------------------------------------------------------- 1 | #/*************************************************************************** 2 | # DPFEPlugin 3 | # 4 | # Gestion des permis de fouilles 5 | # ------------------- 6 | # begin : 2014-09-24 7 | # git sha : $Format:%H$ 8 | # copyright : (C) 2014 by Camptocamp SA 9 | # email : info@camptocamp.com 10 | # ***************************************************************************/ 11 | # 12 | #/*************************************************************************** 13 | # * * 14 | # * This program is free software; you can redistribute it and/or modify * 15 | # * it under the terms of the GNU General Public License as published by * 16 | # * the Free Software Foundation; either version 2 of the License, or * 17 | # * (at your option) any later version. * 18 | # * * 19 | # ***************************************************************************/ 20 | 21 | ###################CONFIGURE HERE######################## 22 | PLUGINNAME = Pic2Map 23 | PACKAGES_NO_UI = core widgets 24 | PACKAGES = $(PACKAGES_NO_UI) ui 25 | TRANSLATIONS = DPFE_fr.ts 26 | 27 | #this can be overiden by calling QGIS_PREFIX_PATH=/my/path make 28 | # DEFAULT_QGIS_PREFIX_PATH=/usr/local/qgis-master 29 | DEFAULT_QGIS_PREFIX_PATH=/usr 30 | ###################END CONFIGURE######################### 31 | 32 | PACKAGESSOURCES := $(shell find $(PACKAGES) -name "*.py") 33 | SOURCES := dpfe_plugin.py $(PACKAGESSOURCES) 34 | 35 | # QGIS PATHS 36 | ifndef QGIS_PREFIX_PATH 37 | export QGIS_PREFIX_PATH=$(DEFAULT_QGIS_PREFIX_PATH) 38 | endif 39 | 40 | export LD_LIBRARY_PATH:="$(QGIS_PREFIX_PATH)/lib:$(LD_LIBRARY_PATH)" 41 | export PYTHONPATH:=$(PYTHONPATH):$(QGIS_PREFIX_PATH)/share/qgis/python:$(HOME)/.qgis2/python/plugins:$(CURDIR)/..:$(CURDIR)/lib/python2.7/site-packages/ 42 | export PYTHONPATH:=$(PYTHONPATH):$(CURDIR)/test # PG 43 | 44 | ifndef QGIS_DEBUG 45 | # Default to Quiet version 46 | export QGIS_DEBUG=0 47 | export QGIS_LOG_FILE=/dev/null 48 | export QGIS_DEBUG_FILE=/dev/null 49 | endif 50 | 51 | default: compile 52 | .PHONY: clean transclean deploy doc help 53 | 54 | help: 55 | @echo 56 | @echo "------------------" 57 | @echo "Available commands" 58 | @echo "------------------" 59 | @echo 60 | @echo 'make [compile]' 61 | @echo 'make clean' 62 | @echo 'make test' 63 | @echo 'make package VERSION=\ HASH=\' 64 | @echo 'make deploy' 65 | @echo 'make stylecheck|pep8|pylint' 66 | @echo 'make help' 67 | 68 | test: compile transcompile 69 | @echo 70 | @echo "----------------------" 71 | @echo "Regression Test Suite" 72 | @echo "----------------------" 73 | 74 | @# Preceding dash means that make will continue in case of errors 75 | @-export PYTHONPATH=`pwd`:$(PYTHONPATH); \ 76 | export QGIS_DEBUG=0; \ 77 | export QGIS_LOG_FILE=/dev/null; \ 78 | nosetests -v --with-id --with-coverage --cover-package=. \ 79 | 3>&1 1>&2 2>&3 3>&- || true 80 | @echo "----------------------" 81 | @echo "If you get a 'no module named qgis.core error, try sourcing" 82 | @echo "the helper script we have provided first then run make test." 83 | @echo "e.g. source run-env-linux.sh ; make test" 84 | @echo "----------------------" 85 | 86 | ################COMPILE####################### 87 | compile: 88 | @echo 89 | @echo "------------------------------" 90 | @echo "Compile ui and resources forms" 91 | @echo "------------------------------" 92 | make -C help/ html 93 | #make -C doc/dev api 94 | #make -C doc/dev html 95 | 96 | ################CLEAN####################### 97 | clean: 98 | @echo 99 | @echo "------------------------------" 100 | @echo "Clean ui and resources forms" 101 | @echo "------------------------------" 102 | rm -rf bin include lib local 103 | rm -f *.pyc 104 | make clean -C ui 105 | make clean -C resources 106 | make clean -C doc/user 107 | #make clean -C doc/dev 108 | 109 | ################TESTS####################### 110 | .ONESHELL: 111 | tests: 112 | @echo "------------------------------" 113 | @echo "Running test suite" 114 | @echo "------------------------------" 115 | export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) 116 | export PYTHONPATH=$(PYTHONPATH) 117 | ./bin/pip install -q mock coverage 118 | unset GREP_OPTIONS 119 | nosetests -v test --nocapture --with-id --with-coverage --cover-package=$(PLUGINNAME) 3>&1 1>&2 2>&3 3>&- | \grep -v "^Object::" || true 120 | 121 | ################DOCS####################### 122 | # build documentation with sphinx 123 | doc: 124 | make -C doc/user html 125 | #make -C doc/dev api 126 | #make -C doc/dev html 127 | 128 | ################PACKAGE############################ 129 | # Create a zip package of the plugin named $(PLUGINNAME).zip. 130 | # This requires use of git (your plugin development directory must be a 131 | # git repository). 132 | # To use, pass a valid commit or tag as follows: 133 | # make package VERSION=0.3.2 HASH=release-0.3.2 134 | # make package VERSION=0.3.2 HASH=master 135 | # make package VERSION=0.3.2 HASH=83c34c7d 136 | 137 | package: compile 138 | rm -f $(PLUGINNAME).zip 139 | rm -rf $(PLUGINNAME)/ 140 | #mkdir -p $(PLUGINNAME)/ui/ 141 | mkdir -p $(PLUGINNAME)/help/build 142 | #cp -r lib/ $(PLUGINNAME)/ 143 | #cp ui/*.py $(PLUGINNAME)/ui/ 144 | cp -r help/build/html/ $(PLUGINNAME)/help/build/ 145 | git archive -o $(PLUGINNAME).zip --prefix=$(PLUGINNAME)/ $(HASH) 146 | zip -d $(PLUGINNAME).zip $(PLUGINNAME)/\*Makefile 147 | zip -d $(PLUGINNAME).zip $(PLUGINNAME)/.gitignore 148 | zip -g $(PLUGINNAME).zip $(PLUGINNAME)/*/* 149 | zip -g $(PLUGINNAME).zip `find $(PLUGINNAME)/help/build/html` 150 | rm -rf $(PLUGINNAME)/ 151 | mv $(PLUGINNAME).zip $(PLUGINNAME).$(VERSION).zip 152 | echo "Created package: $(PLUGINNAME).$(VERSION).zip" 153 | 154 | 155 | ################VALIDATION####################### 156 | # validate syntax style 157 | stylecheck: pep8 pylint 158 | 159 | .ONESHELL: 160 | pylint: 161 | @echo 162 | @echo "-----------------" 163 | @echo "Pylint violations" 164 | @echo "-----------------" 165 | @./bin/pip install -q pylint 166 | @export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) 167 | @export PYTHONPATH=$(PYTHONPATH) 168 | # @./bin/pylint --output-format=parseable --reports=y --rcfile=pylintrc $(PACKAGES_NO_UI) || true 169 | @./bin/pylint --reports=y --rcfile=pylintrc $(PACKAGES_NO_UI) || true 170 | 171 | pep8: 172 | @echo 173 | @echo "-----------" 174 | @echo "PEP8 issues" 175 | @echo "-----------" 176 | @./bin/pip install -q pep8 177 | @./bin/pep8 --repeat --ignore=E501 --exclude ui,lib,doc resources . || true 178 | -------------------------------------------------------------------------------- /Pic2Map/help/build/html/searchindex.js: -------------------------------------------------------------------------------- 1 | Search.setIndex({envversion:42,terms:{represent:0,all:0,code:0,forget:0,orthogon:0,osx:[],skip:0,consum:0,month:0,four:0,abil:0,follow:0,alt:0,research:0,implemant:[],content:[],accur:0,depend:0,zone:0,send:0,nord:0,sens:[],worth:0,digit:[],sourc:0,everi:0,far:0,distort:[],mous:0,trough:0,disast:0,fall:0,veri:0,affect:0,strang:0,adwda:[],level:[],button:0,list:0,upload:[],"try":0,adjust:0,small:0,synergi:0,impli:0,resourc:[],direct:0,enjoi:0,rate:0,video:0,download:0,click:0,integr:[],even:0,index:0,dialogu:[],appear:0,compar:0,altitud:0,abl:0,brief:0,melt:0,current:0,delet:0,version:0,"new":0,method:0,told:[],pose:[],pyopengl:0,behavior:0,situat:0,gener:0,here:0,water:0,alwasi:[],rescla:[],ubuntu:0,ratio:0,becom:0,sinc:0,valu:0,wait:0,box:0,search:0,pretti:0,precis:0,initialz:[],chang:0,mix:0,photogrammetri:0,activ:[],modul:0,prefer:0,apt:0,put:0,visibl:0,instal:[],bre:[],select:0,reproject:0,usg:0,from:0,describ:[],would:0,epsg:0,doubl:0,regist:0,two:0,everybodi:[],few:0,camera:0,call:0,recommend:0,taken:0,choleski:0,preview:0,until:0,toggl:0,more:0,peopl:0,relat:0,warp:0,accept:0,aris:0,known:0,hole:[],given:0,must:0,account:0,word:0,augment:0,work:0,dem:0,eas:0,under:0,purpos:0,"10mb":0,obliqu:0,control:0,tab:0,give:0,process:0,challeng:0,sudo:0,templat:[],high:0,minimum:0,rectif:[],want:0,tak:0,alwai:0,cours:[],goal:0,divid:0,tilt:0,travel:0,comfort:[],tile:0,instead:0,simpl:0,recogn:0,horizon:0,referenc:0,after:0,variant:0,befor:0,wrong:[],plane:0,photogrametri:[],redund:[],stabil:0,save:0,devi:0,favorit:0,correspond:0,ghz:0,inform:0,ortho:[],shade:0,nvidia:0,order:0,lasig:0,help:0,move:0,becaus:0,jpeg:0,graduat:0,still:0,mainli:0,paramet:0,group:0,worldwind:0,geo:0,fix:0,lausann:[],better:0,platform:[],window:0,rapidli:0,restart:0,qgi:[],main:0,pixel:0,finer:0,them:0,good:0,crash:0,greater:[],thei:0,python:0,bound:0,band:0,symposium:0,front:0,introduct:0,edit:0,perspect:0,refresh:0,easili:0,achiev:0,mode:0,each:0,found:0,rotat:0,mean:0,compil:[],rigour:[],due:0,laboratori:0,globe:0,hard:0,idea:0,realli:0,homograph:0,year:0,our:0,happen:0,extract:0,orient:0,out:0,matrix:0,space:0,goe:[],openen:[],categori:0,hill:0,wich:[],gov:0,forth:0,levenberg:0,difficulti:0,sp3:0,linear:0,insid:0,agfdhgfjf:[],differ:0,standard:0,reason:0,base:0,ask:0,org:[],gdal:0,care:[],raster:0,wai:0,launch:[],could:0,pictur:0,mac:[],keep:0,motion:0,place:0,isn:[],outsid:0,geometri:0,principl:[],think:0,first:0,origin:0,softwar:0,dont:[],directli:0,perturb:[],onc:0,arrai:0,independ:0,qualiti:0,number:0,restrict:0,mai:0,alreadi:0,done:0,open:0,ont:[],size:0,guess:0,width:0,top:0,asfasd:[],least:0,paint:0,master:0,too:0,gpu:0,"final":0,store:0,low:[],option:0,tool:0,ogr:0,geotiff:0,part:0,consult:0,exactli:0,than:0,png:0,produit:0,wide:0,provid:0,remov:0,zero:0,xonsid:[],project:0,reus:0,gillian:0,balanc:0,posit:0,design:0,comput:0,clip:0,viewer:0,ram:0,ani:0,have:0,disadvantag:0,need:0,mountain:0,squar:0,moreov:0,snow:0,also:0,satellit:0,without:0,take:0,which:0,textur:0,sure:0,elev:0,trace:0,normal:0,buffer:0,previou:0,reach:[],avalanch:0,most:0,rigor:0,awd:[],why:[],don:0,url:0,milani:0,doe:[],determin:0,azimuth:0,usual:0,section:0,fact:0,gain:0,monoplott:[],show:0,lightn:0,bring:0,polylin:0,empir:0,radic:0,earth:0,font:0,trivial:0,find:0,fifth:0,ground:0,xml:0,onli:0,slow:0,locat:0,ellipsoid:0,explain:0,configur:0,solut:0,behind:0,jam:0,black:0,factor:0,folder:0,local:0,precsi:[],cube:0,variou:0,get:0,express:[],watch:[],cannot:0,meter:0,progress:0,openend:[],photographi:0,youtub:[],requir:[],bar:0,enabl:0,synthet:0,reload:[],bad:0,common:[],srtm:0,contain:0,essenc:0,where:0,vision:0,view:0,wiki:[],universal_transverse_mercator_coordinate_system:[],set:0,terrain:0,accord:0,see:[],result:0,transpar:0,close:0,best:0,awar:0,detect:0,wikipedia:0,tend:0,state:0,dlt:0,"import":[],awai:0,email:0,adv:[],qt4:0,quadro:0,screen:0,extens:0,incident:0,rapid:0,extent:0,solv:0,come:0,both:0,last:0,framebuff:0,howev:0,atmsopher:[],display:0,etc:0,capabl:0,asdasdsa222:[],mani:0,com:[],load:0,simpli:[],point:0,color:0,trunk:0,non:0,"135m":0,quit:0,vertic:0,second:0,duo:0,stretch:0,antag:[],hardli:[],obstacl:0,been:0,marquardt:0,much:0,toolbar:[],interest:0,basic:0,trunc:[],moutain:[],hesit:0,capabilit:0,imag:0,resolut:0,coordin:0,understand:[],educ:0,present:0,convers:0,"case":0,heavier:0,therefor:0,thesi:0,look:0,toogl:0,can:0,easier:0,calcul:0,abov:0,error:0,everyon:0,loop:0,opt:0,layer:[],advantag:0,ctrl:0,dfasda:[],jpg:[],conf:[],sever:0,heightmap:0,develop:0,harsh:0,author:[],perform:0,make:0,senseful:0,cross:0,same:0,complex:0,pan:0,complet:0,wheel:0,wgs84:0,hand:0,fairli:[],nix:[],rais:0,user:0,refin:0,canva:0,wherev:0,implement:0,focal:0,googl:0,center:0,well:0,exampl:0,command:0,thi:0,choos:0,traffic:0,model:0,left:0,explan:0,comment:0,distanc:0,drawn:0,just:0,photo:[],superimpos:0,shape:0,speed:0,yet:0,enlighten:0,clipper:0,asdsadd:[],easi:[],hint:[],enlight:[],senseless:[],desktop:0,rescal:0,add:0,appli:0,correpond:[],real:0,applic:0,format:0,read:0,game:0,five:0,know:0,background:0,press:0,world:0,bit:0,recurs:0,tif:0,intel:0,measur:[],like:0,zoom:0,princip:0,unstabl:0,either:0,realiti:0,page:[],www:0,lasigrepositori:0,deal:0,what:0,spring:0,interact:[],some:0,back:0,symbolog:0,understood:0,intern:0,tuia:0,landslid:0,guarante:0,scale:0,exif:0,bottom:0,kml:0,recognit:0,mathemat:0,larg:0,unit:0,happend:[],refer:0,machin:0,core:0,particular:0,shadow:0,vertex:0,ration:[],terrestri:0,step:0,repositori:0,epfl:0,between:0,orthoimag:0,about:0,central:0,column:0,http:0,label:0,manag:0,dialog:0,act:0,phasi:0,disabl:0,own:[],logo:[],tiff:0,georeferenc:0,within:[],easy_instal:0,three:0,down:0,right:0,ensur:0,openlay:0,wikimedia:[],your:0,east:0,triangl:0,suffici:0,opengl:[],support:0,initial:[],question:0,transform:0,fast:0,happi:[],avail:0,start:0,calk:0,interfac:0,includ:0,lot:0,"3wic6pyuaku":[],creation:0,form:0,enough:0,navig:0,link:0,translat:0,placement:0,line:0,categor:0,etrs89:0,reset:0,pull:0,made:[],consist:0,possibl:0,geospati:0,displai:0,troubl:0,utm:0,below:0,limit:0,problem:0,similar:0,clear:0,featur:0,creat:0,dure:0,pic:[],doesn:0,repres:0,exist:0,file:0,fdasda:[],check:0,fill:0,again:0,equat:0,polygon:0,allow:0,when:0,detail:0,virtual:[],field:[],other:0,spatial:0,test:[],adwdwa:[],you:0,nice:0,area:0,star:0,drap:[],aster:0,earthexplor:0,consid:0,"30km":0,"timoth\u00e9":0,guarant:[],algorithm:0,descript:0,gradient:0,text:[],time:0,profil:0},objtypes:{},objnames:{},filenames:["index"],titles:["Welcome to Pic2Map’s documentation!"],objects:{},titleterms:{layer:0,concept:0,monoplott:0,scene:0,indic:[],dataset:0,virtual:0,tabl:0,confort:[],instal:0,welcom:0,opengl:0,interact:0,comfort:0,system:0,landscap:[],gcp:0,estim:0,requir:0,qgi:0,test:0,experi:0,approach:0,pic2map:0,map:[],digit:0,run:[],testhelp:[],pose:0,initi:0,visual:0,data:0,technic:0,toolbar:0,measur:0,drape:0,plugin:[],builder:[],trick:0,ortho:0,integr:0,document:0,rectif:0}}) -------------------------------------------------------------------------------- /Pic2Map/ui_icons.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'U:\pic2map-master\pic2map-master\Pic2Map\ui\ui_icons.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | try: 12 | _encoding = QtWidgets.QApplication.UnicodeUTF8 13 | def _translate(context, text, disambig): 14 | return QtCore.QCoreApplication.translate(context, text, disambig, _encoding) 15 | except AttributeError: 16 | def _translate(context, text, disambig): 17 | return QtCore.QCoreApplication.translate(context, text, disambig) 18 | 19 | class Ui_iconsDialog(object): 20 | def setupUi(self, iconsDialog,iconSet): 21 | iconsDialog.setObjectName("iconsDialog") 22 | iconsDialog.resize(235, 270) 23 | self.gridLayout = QtWidgets.QGridLayout(iconsDialog) 24 | self.gridLayout.setObjectName("gridLayout") 25 | self.groupBoxCanvas = QtWidgets.QGroupBox(iconsDialog) 26 | self.groupBoxCanvas.setObjectName("groupBoxCanvas") 27 | self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBoxCanvas) 28 | self.gridLayout_2.setObjectName("gridLayout_2") 29 | self.label = QtWidgets.QLabel(self.groupBoxCanvas) 30 | self.label.setObjectName("label") 31 | self.gridLayout_2.addWidget(self.label, 0, 0, 1, 1) 32 | self.colorMButton = QtWidgets.QPushButton(self.groupBoxCanvas) 33 | self.colorMButton.setObjectName("colorMButton") 34 | self.colorMButton.setStyleSheet("QWidget { background-color: %s }" % iconSet.colorM.name()) 35 | self.gridLayout_2.addWidget(self.colorMButton, 0, 2, 1, 1) 36 | self.spinBoxSM = QtWidgets.QSpinBox(self.groupBoxCanvas) 37 | self.spinBoxSM.setObjectName("spinBoxSM") 38 | self.spinBoxSM.setValue(iconSet.SM) 39 | self.gridLayout_2.addWidget(self.spinBoxSM, 0, 1, 1, 1) 40 | self.spinBoxWM = QtWidgets.QSpinBox(self.groupBoxCanvas) 41 | self.spinBoxWM.setObjectName("spinBoxWM") 42 | self.spinBoxWM.setValue(iconSet.WM) 43 | self.gridLayout_2.addWidget(self.spinBoxWM, 1, 1, 1, 1) 44 | self.label_2 = QtWidgets.QLabel(self.groupBoxCanvas) 45 | self.label_2.setObjectName("label_2") 46 | self.gridLayout_2.addWidget(self.label_2, 1, 0, 1, 1) 47 | self.gridLayout.addWidget(self.groupBoxCanvas, 0, 0, 1, 1) 48 | self.groupBoxMonoplot = QtWidgets.QGroupBox(iconsDialog) 49 | self.groupBoxMonoplot.setObjectName("groupBoxMonoplot") 50 | self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBoxMonoplot) 51 | self.gridLayout_3.setObjectName("gridLayout_3") 52 | self.colorCButton = QtWidgets.QPushButton(self.groupBoxMonoplot) 53 | self.colorCButton.setObjectName("colorCButton") 54 | self.colorCButton.setStyleSheet("QWidget { background-color: %s }" % iconSet.colorC.name()) 55 | self.gridLayout_3.addWidget(self.colorCButton, 0, 2, 1, 1) 56 | self.spinBoxSC = QtWidgets.QSpinBox(self.groupBoxMonoplot) 57 | self.spinBoxSC.setObjectName("spinBoxSC") 58 | self.spinBoxSC.setValue(iconSet.SC) 59 | self.gridLayout_3.addWidget(self.spinBoxSC, 0, 1, 1, 1) 60 | self.spinBoxWC = QtWidgets.QSpinBox(self.groupBoxMonoplot) 61 | self.spinBoxWC.setObjectName("spinBoxWC") 62 | self.spinBoxWC.setValue(iconSet.WC) 63 | self.gridLayout_3.addWidget(self.spinBoxWC, 1, 1, 1, 1) 64 | self.label_5 = QtWidgets.QLabel(self.groupBoxMonoplot) 65 | self.label_5.setObjectName("label_5") 66 | self.gridLayout_3.addWidget(self.label_5, 0, 0, 1, 1) 67 | self.label_6 = QtWidgets.QLabel(self.groupBoxMonoplot) 68 | self.label_6.setObjectName("label_6") 69 | self.gridLayout_3.addWidget(self.label_6, 1, 0, 1, 1) 70 | self.gridLayout.addWidget(self.groupBoxMonoplot, 1, 0, 1, 1) 71 | self.buttonBox = QtWidgets.QDialogButtonBox(iconsDialog) 72 | self.buttonBox.setOrientation(QtCore.Qt.Horizontal) 73 | self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) 74 | self.buttonBox.setObjectName("buttonBox") 75 | self.gridLayout.addWidget(self.buttonBox, 3, 0, 1, 1) 76 | self.groupBox = QtWidgets.QGroupBox(iconsDialog) 77 | self.groupBox.setObjectName("groupBox") 78 | self.gridLayout_4 = QtWidgets.QGridLayout(self.groupBox) 79 | self.gridLayout_4.setObjectName("gridLayout_4") 80 | self.label_3 = QtWidgets.QLabel(self.groupBox) 81 | self.label_3.setObjectName("label_3") 82 | self.gridLayout_4.addWidget(self.label_3, 0, 0, 1, 1) 83 | self.spinBoxS3d = QtWidgets.QSpinBox(self.groupBox) 84 | self.spinBoxS3d.setMaximum(1000) 85 | self.spinBoxS3d.setSingleStep(10) 86 | self.spinBoxS3d.setObjectName("spinBoxS3d") 87 | self.gridLayout_4.addWidget(self.spinBoxS3d, 0, 1, 1, 1) 88 | self.spinBoxS3d.setValue(iconSet.S3d) 89 | self.gridLayout.addWidget(self.groupBox, 2, 0, 1, 1) 90 | 91 | self.retranslateUi(iconsDialog) 92 | self.buttonBox.accepted.connect(iconsDialog.accept) 93 | self.buttonBox.rejected.connect(iconsDialog.reject) 94 | QtCore.QMetaObject.connectSlotsByName(iconsDialog) 95 | 96 | def retranslateUi(self, iconsDialog): 97 | iconsDialog.setWindowTitle(_translate("iconsDialog", "Icon settings", None)) 98 | self.groupBoxCanvas.setTitle(_translate("iconsDialog", "GCP in Monoplotter", None)) 99 | self.label.setText(_translate("iconsDialog", "Size of Icons", None)) 100 | self.colorMButton.setText(_translate("iconsDialog", "Color", None)) 101 | self.label_2.setText(_translate("iconsDialog", "Width of Lines", None)) 102 | self.groupBoxMonoplot.setTitle(_translate("iconsDialog", "GCP in Canvas", None)) 103 | self.colorCButton.setText(_translate("iconsDialog", "Color", None)) 104 | self.label_5.setText(_translate("iconsDialog", "Size of Icons", None)) 105 | self.label_6.setText(_translate("iconsDialog", "Width of Lines", None)) 106 | self.groupBox.setTitle(_translate("iconsDialog", "GCP in 3D viewer", None)) 107 | self.label_3.setText(_translate("iconsDialog", "Size of cube", None)) 108 | 109 | 110 | 111 | 112 | if __name__ == "__main__": 113 | import sys 114 | app = QtWidgets.QApplication(sys.argv) 115 | iconsDialog = QtWidgets.QDialog() 116 | ui = Ui_iconsDialog() 117 | ui.setupUi(iconsDialog) 118 | iconsDialog.show() 119 | sys.exit(app.exec_()) 120 | -------------------------------------------------------------------------------- /Pic2Map/ui_help_ini.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'U:\pic2map-master\pic2map-master\Pic2Map\ui\ui_help_ini.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.12.2 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | 12 | class Ui_Dialog(object): 13 | def setupUi(self, Dialog): 14 | Dialog.setObjectName("Dialog") 15 | Dialog.resize(490, 240) 16 | self.textBrowser = QtWidgets.QTextBrowser(Dialog) 17 | self.textBrowser.setGeometry(QtCore.QRect(0, 0, 491, 251)) 18 | self.textBrowser.setObjectName("textBrowser") 19 | 20 | self.retranslateUi(Dialog) 21 | QtCore.QMetaObject.connectSlotsByName(Dialog) 22 | 23 | def retranslateUi(self, Dialog): 24 | _translate = QtCore.QCoreApplication.translate 25 | Dialog.setWindowTitle(_translate("Dialog", "Dialog")) 26 | self.textBrowser.setHtml(_translate("Dialog", "\n" 27 | "\n" 30 | "

GCP approach:

\n" 31 | "

We make use standards algorithm in computer vision for estimation of the pose. Points in the picture have to be linked to coordinates in world (or local) coordinate system.

\n" 32 | "

Direct Linear Transform (DLT) algorithm is used for estimation of the position. Several parameters can be fixed trough a least square refinement of the DLT.

\n" 33 | "

Advantages:

\n" 34 | "

- A mathematical expression of the pose estimation problem is used and the result is best in a mathematical sense.

\n" 35 | "

- A high precision can be achieved

\n" 36 | "

- Some known parameter can be fixed

\n" 37 | "

Disadvantages:

\n" 38 | "

- Precision is related to the number of correspondences

\n" 39 | "

- Precision is related to the quality of correspondences

\n" 40 | "

- The result can be completely out of sense if the correspondences are wrong or insufficient

\n" 41 | "


\n" 42 | "

Virtual 3D approach:

\n" 43 | "

We make use of the ability of users to estimate position, orientation as well as the focal of the camera. The pose estimation is done empirically. The camera travel in the world until the precision of the calking is enough for application purposes.

\n" 44 | "

Advantages:

\n" 45 | "

- An acceptable level of precision can be achieved quite easily.

\n" 46 | "

- The method is simple and understandable by everybody

\n" 47 | "

Disadvantages:

\n" 48 | "

- The pose estimation is not "best" in a mathematical sense

\n" 49 | "

- The estimation of several parameters is not always straightforward

\n" 50 | "

- A high level of precision cannot be easily achieved

\n" 51 | "


")) 52 | 53 | 54 | 55 | 56 | if __name__ == "__main__": 57 | import sys 58 | app = QtWidgets.QApplication(sys.argv) 59 | Dialog = QtWidgets.QDialog() 60 | ui = Ui_Dialog() 61 | ui.setupUi(Dialog) 62 | Dialog.show() 63 | sys.exit(app.exec_()) 64 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_exif2.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Exif2 4 | 5 | 6 | 7 | 0 8 | 0 9 | 484 10 | 587 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 390 20 | 540 21 | 75 22 | 23 23 | 24 | 25 | 26 | Qt::Horizontal 27 | 28 | 29 | QDialogButtonBox::Ok 30 | 31 | 32 | 33 | 34 | 35 | 9 36 | 9 37 | 461 38 | 301 39 | 40 | 41 | 42 | 43 | 44 | 45 | 10 46 | 320 47 | 461 48 | 211 49 | 50 | 51 | 52 | Focal 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 0 63 | 0 64 | 65 | 66 | 67 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> 68 | <html><head><meta name="qrichtext" content="1" /><style type="text/css"> 69 | p, li { white-space: pre-wrap; } 70 | </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> 71 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Part of the focal information is found in the EXIF File. You need to enter the size of the sensor diagonal in [mm]. </span></p> 72 | <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> 73 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">1. Check the website http://www.digicamdb.com/</span></p> 74 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">2. Find the diagonal length in [mm] of your sensor</span></p> 75 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">3. Enter it in the line below</span></p> 76 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">4. Read the focal length on the right down line and use it in the pose estimation</span></p></body></html> 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 0 85 | 0 86 | 87 | 88 | 89 | Get Focal 90 | 91 | 92 | 93 | 94 | 95 | 96 | Diagonal Length of Sensor [mm] 97 | 98 | 99 | 100 | 101 | 102 | 103 | Focal [pixel unit] 104 | 105 | 106 | 107 | 108 | 109 | 110 | true 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 20 120 | 540 121 | 111 122 | 23 123 | 124 | 125 | 126 | Import Coordinate 127 | 128 | 129 | 130 | 131 | false 132 | 133 | 134 | 135 | 150 136 | 540 137 | 111 138 | 23 139 | 140 | 141 | 142 | Save Coordinate 143 | 144 | 145 | 146 | 147 | 148 | 149 | buttonBox 150 | accepted() 151 | Exif2 152 | accept() 153 | 154 | 155 | 248 156 | 254 157 | 158 | 159 | 157 160 | 274 161 | 162 | 163 | 164 | 165 | buttonBox 166 | rejected() 167 | Exif2 168 | reject() 169 | 170 | 171 | 316 172 | 260 173 | 174 | 175 | 286 176 | 274 177 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /Pic2Map/reportDialog.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | 4 | /*************************************************************************** 5 | * * 6 | * This program is free software; you can redistribute it and/or modify * 7 | * it under the terms of the GNU General Public License as published by * 8 | * the Free Software Foundation; either version 2 of the License, or * 9 | * (at your option) any later version. * 10 | * * 11 | ***************************************************************************/ 12 | """ 13 | 14 | 15 | 16 | from builtins import zip 17 | from builtins import str 18 | from builtins import range 19 | from PyQt5 import QtGui, QtWidgets, QtCore 20 | from PyQt5.QtGui import * 21 | from PyQt5.QtCore import * 22 | from PyQt5.QtWidgets import * 23 | from .ui_reportGCP import Ui_ReportGCP 24 | from numpy import mean, min, max, std, zeros, sqrt, pi 25 | # create the dialog for zoom to point 26 | 27 | class ReportDialog(QtWidgets.QDialog): 28 | #This class create a report about errors in projection and back-projection 29 | #It is also here that points are considered behind a hill or not. 30 | #More generally, if you want to add some functions for checking consistency of 31 | #projections or back projections, you can do it here. 32 | # 33 | #When the Pose dialog window is closed, the errors 34 | def __init__(self, model, Qxx, paramBool, paramList, pathToData, xyzUnProjected): 35 | QtWidgets.QDialog.__init__(self) 36 | self.setWindowFlag(Qt.WindowStaysOnTopHint) 37 | self.setWindowModality(Qt.ApplicationModal) 38 | self.inconsistent = False 39 | self.ui = Ui_ReportGCP() 40 | self.ui.setupUi(self) 41 | #self.center() 42 | self.pathToData = pathToData 43 | self.xyzUnProjected = xyzUnProjected 44 | self.totalPointsOnHill = 0 45 | paramList[3] = (paramList[3]*180)/pi 46 | paramList[4] = (paramList[4]*180)/pi 47 | paramList[5] = (paramList[5]*180)/pi 48 | self.model = model 49 | rowCount = model.rowCount() 50 | errorsPixels = zeros((rowCount,1)) 51 | errors3D = [] 52 | n_outOfHorizon = 0 53 | for row in range(0,rowCount): 54 | if model.checkValid(row)==0: 55 | continue 56 | index = model.index(row, 6) 57 | error3D = model.data(index) 58 | if error3D > 0: 59 | errors3D.append(error3D) 60 | else: 61 | n_outOfHorizon += 1 62 | index = model.index(row,7) 63 | errorsPixels[row] = model.data(index) 64 | if len(errors3D)>0: 65 | text = '' 66 | text += 'Projections errors:' 67 | 68 | text += '\n mean: ' + str(round(mean(errorsPixels),2)) + ' [pixel]' 69 | text += '\n min: ' + str(min(errorsPixels)) + ' [pixel]' 70 | text += '\n max: ' + str(max(errorsPixels)) + ' [pixel]' 71 | text += '\n std: ' + str(round(std(errorsPixels),2)) + ' [pixel]' 72 | text += '\n\n3D reprojections errors:' 73 | text += '\n mean: ' + str(round(mean(errors3D),2)) + ' [m]' 74 | text += '\n min: ' + str(min(errors3D)) + ' [m]' 75 | text += '\n max: ' + str(max(errors3D)) + ' [m]' 76 | text += '\n std: ' + str(round(std(errors3D),2)) + ' [m]' 77 | """ 78 | text += '\n' + str(round(mean(errorsPixels),2)) 79 | text += '\n' + str(min(errorsPixels)) 80 | text += '\n' + str(max(errorsPixels)) 81 | text += '\n' + str(round(std(errorsPixels),2)) 82 | text += '\n' + str(round(mean(errors3D),2)) 83 | text += '\n' + str(min(errors3D)) 84 | text += '\n' + str(max(errors3D)) 85 | text += '\n' + str(round(std(errors3D),2)) 86 | """ 87 | text += '\n\nPose estimation parameters:' 88 | paramText = ['X position','Y Position','Z Position','Tilt [°]','Heading [°]', 'Swing [°]', 'Focal [pixel]'] 89 | for name, bool, value, prec in zip(paramText, paramBool, paramList, Qxx): 90 | if bool: 91 | text += '\n'+ name + ', Free :' + ' ' + str(round(value,6)) + '\n(Precision : '+ str(round(prec,6)) + ")" 92 | else: 93 | text += '\n'+ name + ', Fixed: ' + ' ' + str(round(value,6)) 94 | 95 | self.ui.reportBrowser.setText(text) 96 | self.ui.pushButton.pressed.connect(self.saveReport) 97 | test = self.isBehindHill(paramList,errors3D) 98 | if test: 99 | QMessageBox.warning(self, "Reprojection - Warning", 100 | "%i GCP seems to be not visible from the camera location! The computed position could be behind relief or within the ground." % self.totalPointsOnHill) 101 | else: 102 | QMessageBox.warning(self, "Reprojection - Warning", 103 | "inconsistent pose, consider to provide apriori values") 104 | self.inconsistent = True 105 | 106 | def center(self): 107 | qr = self.frameGeometry() 108 | cp = QtWidgets.QDesktopWidget().availableGeometry().center() 109 | qr.moveCenter(cp) 110 | self.move(qr.topLeft()) 111 | 112 | def saveReport(self): 113 | #Save a small text file which contain the same information as the dialog. 114 | path = self.pathToData + '/report.txt' 115 | fSaveName = QFileDialog.getSaveFileName(self, 'Save your report as...',\ 116 | path,"File (*.txt)")[0] 117 | f = open(fSaveName, 'w') 118 | data = self.ui.reportBrowser.toPlainText() 119 | f.write(data) 120 | f.close() 121 | self.close() 122 | 123 | def isBehindHill(self, paramList,errors3D): 124 | # For checking if a point stand behind a hill, we compare the error 125 | # with the distance between camera position and back-projection 126 | x0 = -paramList[0] 127 | y0 = paramList[1] 128 | 129 | totalPointsOnHill = 0 130 | for xyz,error in zip(self.xyzUnProjected,errors3D): 131 | x = xyz[0] 132 | y = xyz[2] 133 | planimetricDistanceToCameraPosition = sqrt((x-x0)**2+(y-y0)**2) 134 | 135 | #If the error is bigger than the distance between camera position and 136 | # back-projection, the point is considered to be behind a hill. 137 | if planimetricDistanceToCameraPosition < error: 138 | totalPointsOnHill += 1 139 | if totalPointsOnHill == 0: 140 | return False 141 | else: 142 | self.totalPointsOnHill = totalPointsOnHill 143 | return True 144 | 145 | 146 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_disprast.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | disprast 4 | 5 | 6 | 7 | 0 8 | 0 9 | 766 10 | 836 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | true 18 | 19 | 20 | 21 | 22 | 0 23 | 0 24 | 25 | 26 | 27 | true 28 | 29 | 30 | 31 | 32 | 33 | 34 | 0 35 | 0 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 0 46 | 0 47 | 766 48 | 21 49 | 50 | 51 | 52 | 53 | Menu1 54 | 55 | 56 | 57 | Option1.3 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | Menu2 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | false 80 | 81 | 82 | 8 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 0 91 | 0 92 | 93 | 94 | 95 | false 96 | 97 | 98 | true 99 | 100 | 101 | Qt::ImhDigitsOnly|Qt::ImhFormattedNumbersOnly|Qt::ImhUrlCharactersOnly 102 | 103 | 104 | QFrame::Box 105 | 106 | 107 | QFrame::Sunken 108 | 109 | 110 | 2 111 | 112 | 113 | Qt::ScrollBarAlwaysOn 114 | 115 | 116 | Qt::ScrollBarAsNeeded 117 | 118 | 119 | true 120 | 121 | 122 | QAbstractItemView::AllEditTriggers 123 | 124 | 125 | true 126 | 127 | 128 | false 129 | 130 | 131 | false 132 | 133 | 134 | Qt::CopyAction 135 | 136 | 137 | true 138 | 139 | 140 | QAbstractItemView::SingleSelection 141 | 142 | 143 | QAbstractItemView::SelectColumns 144 | 145 | 146 | Qt::ElideNone 147 | 148 | 149 | true 150 | 151 | 152 | Qt::SolidLine 153 | 154 | 155 | false 156 | 157 | 158 | true 159 | 160 | 161 | false 162 | 163 | 164 | true 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | toolBar 174 | 175 | 176 | TopToolBarArea 177 | 178 | 179 | false 180 | 181 | 182 | 183 | 184 | Option1.1 185 | 186 | 187 | 188 | 189 | Option1.2 190 | 191 | 192 | 193 | 194 | Option1.3.1 195 | 196 | 197 | 198 | 199 | Option1.3.2 200 | 201 | 202 | 203 | 204 | Option2.1 205 | 206 | 207 | 208 | 209 | 210 | 211 | -------------------------------------------------------------------------------- /Pic2Map/ui/ui_help_ini.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dialog 4 | 5 | 6 | 7 | 0 8 | 0 9 | 490 10 | 240 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 0 20 | 0 21 | 491 22 | 251 23 | 24 | 25 | 26 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> 27 | <html><head><meta name="qrichtext" content="1" /><style type="text/css"> 28 | p, li { white-space: pre-wrap; } 29 | </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> 30 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">GCP approach:</span></p> 31 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">We make use standards algorithm in computer vision for estimation of the pose. Points in the picture have to be linked to coordinates in world (or local) coordinate system.</span></p> 32 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Direct Linear Transform (DLT) algorithm is used for estimation of the position. Several parameters can be fixed trough a least square refinement of the DLT. </span></p> 33 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; text-decoration: underline;">Advantages:</span></p> 34 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- A mathematical expression of the pose estimation problem is used and the result is best in a mathematical sense.</span></p> 35 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- A high precision can be achieved</span></p> 36 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Some known parameter can be fixed</span></p> 37 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; text-decoration: underline;">Disadvantages:</span></p> 38 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Precision is related to the number of correspondences</span></p> 39 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Precision is related to the quality of correspondences</span></p> 40 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- The result can be completely out of sense if the correspondences are wrong or insufficient</span></p> 41 | <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p> 42 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Virtual 3D approach:</span></p> 43 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">We make use of the ability of users to estimate position, orientation as well as the focal of the camera. The pose estimation is done empirically. The camera travel in the world until the precision of the calking is enough for application purposes.</span></p> 44 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; text-decoration: underline;">Advantages:</span></p> 45 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- An acceptable level of precision can be achieved quite easily. </span></p> 46 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; text-decoration: underline;">- The method is simple and understandable by everybody</span></p> 47 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; text-decoration: underline;">Disadvantages:</span></p> 48 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- The pose estimation is not &quot;best&quot; in a mathematical sense</span></p> 49 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- The estimation of several parameters is not always straightforward</span></p> 50 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- A high level of precision cannot be easily achieved</span></p> 51 | <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html> 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /Pic2Map/initialization.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | /*************************************************************************** 4 | * * 5 | * This program is free software; you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation; either version 2 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | ***************************************************************************/ 11 | """ 12 | 13 | from builtins import str 14 | import qgis.core 15 | from qgis.core import * 16 | from qgis.gui import * 17 | from PyQt5 import QtCore, QtGui, QtWidgets 18 | from PyQt5.QtGui import * 19 | from PyQt5.QtWidgets import * 20 | from PyQt5.QtCore import * 21 | from .ui_disp_ini import Ui_Dialog 22 | import webbrowser 23 | import os, tempfile 24 | from osgeo import gdal 25 | 26 | class Initialization_dialog(QtWidgets.QDialog): 27 | def __init__(self, iface): 28 | QtWidgets.QDialog.__init__(self) 29 | # super(Initialization_dialog, self).__init__(iface.mainWindow()) 30 | self.ui = Ui_Dialog() 31 | self.ui.setupUi(self) 32 | #self.center() 33 | self.iface = iface 34 | self.ui.lineEdit.setText("") 35 | self.ui.lineEditDEM.setText("") 36 | #self.ui.checkBox.setChecked(False) 37 | #self.ui.lineEdit_2.setText("") 38 | self.activeLayer = False 39 | self.filePathSave = os.path.dirname(os.path.abspath(__file__)) + "/config.txt" 40 | 41 | openFile = self.ui.toolButton 42 | openFile.clicked.connect(self.showDialog) 43 | openFile = self.ui.toolButtonDEM 44 | openFile.clicked.connect(self.showDialogDEM) 45 | self.ui.pushButtonDEM.clicked.connect(self.getActiveLayer) 46 | self.ui.pushButtonCurrent.clicked.connect(self.getCurrentView) 47 | 48 | self.ui.buttonBox.helpRequested.connect(self.helpWindow) 49 | #self.ui.checkBox.stateChanged[int].connect(self.orthoActivate) 50 | 51 | self.ui.lineEditDEM.dropped.connect(self.dropEvent) 52 | #self.openOrtho = self.ui.toolButton_2 53 | #self.openOrtho.clicked.connect(self.showDialogOrtho) 54 | #self.ui.lineEdit_2.setReadOnly(True) 55 | 56 | try : 57 | projectName = QgsProject.instance().fileName() 58 | f = open(self.filePathSave, "r") 59 | oldpath = f.readline() 60 | if oldpath : 61 | self.currentPath = oldpath 62 | elif projectName : 63 | self.currentPath = os.path.dirname(projectName) 64 | else : 65 | self.currentPath = '/home' 66 | f.close() 67 | except : 68 | self.currentPath = '/home' 69 | 70 | self.setAcceptDrops(True) 71 | 72 | def dragEnterEvent(self, event): 73 | event.accept() 74 | 75 | def dropEvent(self, event): 76 | lineEdit = self.childAt(event.pos().x(),event.pos().y()) 77 | 78 | if lineEdit.metaObject().className() == "dropedit" : 79 | fileURL = event.mimeData().urls()[0].toString() 80 | try : 81 | fileName = fileURL.split('file:///')[1] 82 | except : 83 | fileName = fileURL.split('file:')[1] 84 | lineEdit.setText(fileName) 85 | 86 | """def orthoActivate(self, state): 87 | if state == 2: 88 | self.openOrtho.setEnabled(True) 89 | if state == 0: 90 | self.openOrtho.setEnabled(False) 91 | self.ui.lineEdit_2.setText('')""" 92 | 93 | 94 | def helpWindow(self): 95 | name = os.path.dirname(os.path.abspath(__file__)) 96 | url = name + "/help/build/html/index.html" 97 | url.replace("\\","/") 98 | webbrowser.open(url,new=2) 99 | 100 | def center(self): 101 | qr = self.frameGeometry() 102 | cp = QtWidgets.QDesktopWidget().availableGeometry().center() 103 | qr.moveCenter(cp) 104 | self.move(qr.topLeft()) 105 | 106 | """def showDialogOrtho(self): 107 | fname = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file',self.currentPath)[0] 108 | self.ui.lineEdit_2.setText(fname) 109 | if fname: 110 | self.currentPath = fname.rsplit("/",1)[0]""" 111 | 112 | def showDialog(self): 113 | fname = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file',self.currentPath)[0] 114 | if fname: 115 | self.ui.lineEdit.setText(fname) 116 | self.currentPath = fname.rsplit("/",1)[0] 117 | f = open(self.filePathSave, "w+") 118 | f.write(self.currentPath) 119 | f.close() 120 | 121 | def showDialogDEM(self): 122 | fname = QtWidgets.QFileDialog.getOpenFileName(self, 'Open file',self.currentPath, "Images (*.tiff *.tif)")[0] 123 | if fname: 124 | self.activeLayer = False 125 | self.ui.lineEditDEM.setText(fname) 126 | self.currentPath = fname.rsplit("/",1)[0] 127 | f = open(self.filePathSave, "w+") 128 | f.write(self.currentPath) 129 | f.close() 130 | 131 | def getActiveLayer(self): 132 | 133 | if str(type(self.iface.activeLayer())) != "" : 134 | QMessageBox.warning(self, "Layer type invalid", "Please select a Qgs Raster Layer") 135 | 136 | else: 137 | fname = self.iface.activeLayer().dataProvider().dataSourceUri() 138 | self.ui.lineEditDEM.setText(fname) 139 | self.currentPath = fname.rsplit("/",1)[0] 140 | f = open(self.filePathSave, "w+") 141 | f.write(self.currentPath) 142 | f.close() 143 | self.activeLayer = True 144 | 145 | def getCurrentView(self): 146 | rect = self.iface.mapCanvas().extent() 147 | proj = [rect.xMinimum(), rect.yMaximum(), rect.xMaximum(), rect.yMinimum()] 148 | if str(type(self.iface.activeLayer())) != "" : 149 | QMessageBox.warning(self, "Layer type invalid", "Please select a Qgs Raster Layer") 150 | 151 | else: 152 | fname = self.iface.activeLayer().dataProvider().dataSourceUri() 153 | self.currentPath = fname.rsplit("/",1)[0] 154 | path = tempfile.gettempdir().replace("\\","/") 155 | outName = path + '/' + (fname.rsplit("/",1)[1]).split(".")[0] + "_CropToView.vrt" 156 | f = open(self.filePathSave, "w+") 157 | f.write(self.currentPath) 158 | f.close() 159 | 160 | activeLayer = self.iface.activeLayer() 161 | self.iface.layerTreeView().layerTreeModel().rootGroup().findLayer(activeLayer).setItemVisibilityChecked(False) 162 | 163 | gdal.Translate(outName, fname, projWin=proj) 164 | 165 | self.ui.lineEditDEM.setText(outName) 166 | self.iface.addRasterLayer(outName) 167 | self.activeLayer = True 168 | 169 | 170 | --------------------------------------------------------------------------------