mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-22 00:06:12 -05:00
[pointclouds] add basic structure for PDAL layer
This commit is contained in:
parent
b725a044ae
commit
3dec432cb6
@ -237,6 +237,11 @@ IF(WITH_CORE)
|
||||
SET(ORACLE_LIBDIR "" CACHE STRING "Path to OCI libraries")
|
||||
ENDIF(WITH_ORACLE)
|
||||
|
||||
SET (WITH_PDAL FALSE CACHE BOOL "Determines whether PDAL support should be built")
|
||||
IF(WITH_PDAL)
|
||||
SET(HAVE_PDAL TRUE)
|
||||
ENDIF(WITH_PDAL)
|
||||
|
||||
#BUILD WITH QtMobility by default on android only. Other platform can force it
|
||||
IF (ANDROID)
|
||||
SET (DEFAULT_WITH_QTMOBILITY TRUE)
|
||||
@ -390,6 +395,10 @@ IF(WITH_CORE)
|
||||
MESSAGE(STATUS "Qt WebKit support DISABLED.")
|
||||
ENDIF(WITH_QTWEBKIT)
|
||||
|
||||
IF (WITH_PDAL)
|
||||
FIND_PACKAGE(PDAL) # PDAL provider
|
||||
ENDIF (WITH_PDAL)
|
||||
|
||||
#############################################################
|
||||
# search for Qt5
|
||||
SET(QT_MIN_VERSION 5.9.0)
|
||||
|
62
cmake/FindPDAL.cmake
Normal file
62
cmake/FindPDAL.cmake
Normal file
@ -0,0 +1,62 @@
|
||||
# Find PDAL
|
||||
# ~~~~~~~~~~
|
||||
# Copyright (c) 2020, Peter Petrik <zilolv at gmail.com>
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
# CMake module to search for PDAL library
|
||||
#
|
||||
# If it's found it sets PDAL_FOUND to TRUE
|
||||
# and following variables are set:
|
||||
# PDAL_INCLUDE_DIR
|
||||
# PDAL_LIBRARIES
|
||||
|
||||
# FIND_PATH and FIND_LIBRARY normally search standard locations
|
||||
# before the specified paths. To search non-standard paths first,
|
||||
# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
|
||||
# and then again with no specified paths to search the default
|
||||
# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
|
||||
# searching for the same item do nothing.
|
||||
FIND_PATH(PDAL_INCLUDE_DIR pdal.hpp
|
||||
"$ENV{LIB_DIR}/include/"
|
||||
"$ENV{LIB_DIR}/include/pdal"
|
||||
c:/msys/local/include
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
FIND_PATH(PDAL_INCLUDE_DIR pdal.hpp)
|
||||
|
||||
FIND_LIBRARY(PDAL_CPP_LIBRARY NAMES pdalccpp libpdalcpp PATHS
|
||||
"$ENV{LIB_DIR}/lib"
|
||||
c:/msys/local/lib
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
FIND_LIBRARY(PDAL_CPP_LIBRARY NAMES pdalcpp libpdalcpp)
|
||||
|
||||
FIND_LIBRARY(PDAL_UTIL_LIBRARY NAMES pdal_util libpdal_util PATHS
|
||||
"$ENV{LIB_DIR}/lib"
|
||||
c:/msys/local/lib
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
FIND_LIBRARY(PDAL_UTIL_LIBRARY NAMES pdal_util libpdal_util)
|
||||
|
||||
|
||||
IF (PDAL_INCLUDE_DIR AND PDAL_CPP_LIBRARY AND PDAL_UTIL_LIBRARY)
|
||||
SET(PDAL_FOUND TRUE)
|
||||
SET(PDAL_LIBRARIES ${PDAL_CPP_LIBRARY} ${PDAL_UTIL_LIBRARY})
|
||||
ENDIF (PDAL_INCLUDE_DIR AND PDAL_CPP_LIBRARY AND PDAL_UTIL_LIBRARY)
|
||||
|
||||
IF (PDAL_FOUND)
|
||||
IF (NOT PDAL_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found PDAL: ${PDAL_LIBRARIES}")
|
||||
ENDIF (NOT PDAL_FIND_QUIETLY)
|
||||
|
||||
ELSE (PDAL_FOUND)
|
||||
IF (PDAL_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "Could not find PDAL")
|
||||
ELSE (PDAL_FIND_REQUIRED)
|
||||
IF (NOT PDAL_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Could not find PDAL")
|
||||
ENDIF (NOT PDAL_FIND_QUIETLY)
|
||||
ENDIF (PDAL_FIND_REQUIRED)
|
||||
|
||||
ENDIF (PDAL_FOUND)
|
@ -240,6 +240,8 @@
|
||||
<file>themes/default/mActionAddXyzLayer.svg</file>
|
||||
<file>themes/default/mActionAddVectorTileLayer.svg</file>
|
||||
<file>themes/default/mActionAddPointCloudLayer.svg</file>
|
||||
<file>themes/default/mActionAddPdalLayer.svg</file>
|
||||
<file>themes/default/mActionAddEntwineLayer.svg</file>
|
||||
<file>themes/default/mActionAddGeonodeLayer.svg</file>
|
||||
<file>themes/default/mActionAddDelimitedTextLayer.svg</file>
|
||||
<file>themes/default/mActionAddVirtualLayer.svg</file>
|
||||
@ -538,6 +540,8 @@
|
||||
<file>themes/default/mIconVector.svg</file>
|
||||
<file>themes/default/mIconVectorTileLayer.svg</file>
|
||||
<file>themes/default/mIconPointCloudLayer.svg</file>
|
||||
<file>themes/default/mIconEntwineLayer.svg</file>
|
||||
<file>themes/default/mIconPdalLayer.svg</file>
|
||||
<file>themes/default/mIconVirtualLayer.svg</file>
|
||||
<file>themes/default/mIconWcs.svg</file>
|
||||
<file>themes/default/mIconWfs.svg</file>
|
||||
|
221
images/themes/default/mActionAddEntwineLayer.svg
Normal file
221
images/themes/default/mActionAddEntwineLayer.svg
Normal file
@ -0,0 +1,221 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:i="&ns_ai;"
|
||||
xmlns:x="adobe:ns:meta/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
|
||||
height="23"
|
||||
width="23"
|
||||
sodipodi:docname="mActionAddEntwineLayer.svg"
|
||||
xml:space="preserve"
|
||||
viewBox="0 0 23 23"
|
||||
y="0px"
|
||||
x="0px"
|
||||
id="Layer_1"
|
||||
version="1.1"><defs
|
||||
id="defs881" /><sodipodi:namedview
|
||||
inkscape:current-layer="g857"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-x="0"
|
||||
inkscape:cy="12.188549"
|
||||
inkscape:cx="10.660205"
|
||||
inkscape:zoom="18.9168"
|
||||
showgrid="false"
|
||||
id="namedview879"
|
||||
inkscape:window-height="737"
|
||||
inkscape:window-width="1415"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
inkscape:document-rotation="0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<metadata
|
||||
id="metadata833"><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
<x:xmpmeta
|
||||
x:xmptk="Adobe XMP Core 5.6-c067 79.157747, 2015/03/30-23:40:42 ">
|
||||
|
||||
<metadata><rdf:RDF>
|
||||
<rdf:Description
|
||||
rdf:about="" />
|
||||
<cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata></x:xmpmeta>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?></metadata>
|
||||
<style
|
||||
id="style835"
|
||||
type="text/css">
|
||||
.st0{clip-path:url(#SVGID_2_);fill:#39B54A;}
|
||||
.st1{clip-path:url(#SVGID_2_);fill:none;stroke:#FFFFFF;stroke-width:6.2024;stroke-miterlimit:10;}
|
||||
.st2{clip-path:url(#SVGID_2_);}
|
||||
.st3{fill:#FFFFFF;}
|
||||
.st4{fill:#39B44A;}
|
||||
.st5{fill:#192854;}
|
||||
</style>
|
||||
<switch
|
||||
transform="translate(-198.69999,-262.09999)"
|
||||
id="switch876">
|
||||
<foreignObject
|
||||
height="1"
|
||||
width="1"
|
||||
y="0"
|
||||
x="0"
|
||||
requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
|
||||
</foreignObject>
|
||||
<g
|
||||
id="g874"
|
||||
i:extraneous="self">
|
||||
<g
|
||||
id="g865">
|
||||
<g
|
||||
id="g857">
|
||||
<defs
|
||||
id="defs838">
|
||||
<circle
|
||||
r="41.700001"
|
||||
cy="303.79999"
|
||||
cx="240.39999"
|
||||
id="SVGID_1_" />
|
||||
</defs>
|
||||
<clipPath
|
||||
id="SVGID_2_">
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
y="0"
|
||||
x="0"
|
||||
id="use840"
|
||||
style="overflow:visible"
|
||||
xlink:href="#SVGID_1_" />
|
||||
</clipPath>
|
||||
<circle
|
||||
transform="matrix(0.27577937,0,0,0.27577937,143.90263,189.81822)"
|
||||
id="circle843"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
r="41.900002"
|
||||
cy="303.79999"
|
||||
cx="240.39999"
|
||||
class="st0" />
|
||||
<circle
|
||||
transform="matrix(0.27577937,0,0,0.27577937,143.90263,189.81822)"
|
||||
id="circle845"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
r="24.700001"
|
||||
cy="303.79999"
|
||||
cx="240.5"
|
||||
class="st1" />
|
||||
<g
|
||||
transform="matrix(0.27577937,0,0,0.27577937,143.90263,189.81822)"
|
||||
id="g851"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
class="st2">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 233.9,346.3 c 5.9,-28.3 -4.4,-36.5 -4.5,-36.6 l -13.2,-9.9 15.5,5.9 c 0.4,0.1 7.3,2.9 10.5,10.6 1.6,-1.9 4,-3.7 7.6,-4.2 l 11.8,-1.6 -10.4,5.9 c 0,0 -8,5.4 -3.3,29.5 l 0.5,2.7 -15.1,0.6 z"
|
||||
class="st3" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path849"
|
||||
d="m 230.8,307.9 c 0,0 9.6,3.7 10.5,15.1 0,0 1.5,-7.6 8.7,-8.6 0,0 -9.6,5.5 -4.4,32 l -9.4,0.4 c 6.3,-30.2 -5.4,-38.9 -5.4,-38.9 m -36.6,-18.9 33.7,22.6 c 0.3,0.3 2.4,2.3 3.8,6.9 1.5,4.8 2.8,13.5 -0.1,27.3 l -1.2,5.9 6,-0.3 9.4,-0.4 5.4,-0.2 -1,-5.3 c -4.2,-21.5 2.1,-27 2.2,-27.1 l 20.8,-11.8 -23.7,3.2 c -2.7,0.4 -4.9,1.4 -6.6,2.7 -3.9,-6.4 -10,-8.8 -10.3,-8.9 z"
|
||||
class="st4" />
|
||||
</g>
|
||||
<path
|
||||
transform="matrix(0.27577937,0,0,0.27577937,143.90263,189.81822)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path853"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
d="m 216,306.7 c -1.6,-13.5 8,-25.8 21.6,-27.4 13.5,-1.6 25.8,8 27.4,21.6"
|
||||
class="st1" />
|
||||
<path
|
||||
transform="matrix(0.27577937,0,0,0.27577937,143.90263,189.81822)"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path855"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
d="m 223,286.3 c 9.6,-9.6 25.3,-9.6 34.9,0 9.6,9.6 9.6,25.3 0,34.9"
|
||||
class="st1" />
|
||||
<g
|
||||
transform="matrix(0.6923,0,0,0.6923,199.42945,262.68233)"
|
||||
id="g2197"><rect
|
||||
fill="#5a8c5a"
|
||||
height="13"
|
||||
rx="2.615"
|
||||
width="13"
|
||||
x="19"
|
||||
y="19"
|
||||
id="rect2189" /><g
|
||||
fill-rule="evenodd"
|
||||
id="g2195"><path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 21.6,25.5 h 7.8 m -3.9,3.9 v -7.8"
|
||||
fill="#fff"
|
||||
stroke="#fff"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2.6"
|
||||
id="path2191" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 20.3,25.5 h 10.4 v -2.6 c 0,-2.6 -0.65,-2.6 -5.2,-2.6 -4.55,0 -5.2,0 -5.2,2.6 z"
|
||||
fill="#fcffff"
|
||||
opacity=".3"
|
||||
id="path2193" /></g></g></g>
|
||||
<g
|
||||
transform="matrix(0.27577937,0,0,0.27577937,143.90263,189.81822)"
|
||||
id="g863">
|
||||
<circle
|
||||
id="circle859"
|
||||
r="10.9"
|
||||
cy="290.89999"
|
||||
cx="258.10001"
|
||||
class="st4" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path861"
|
||||
d="m 258.1,304.1 c -7.3,0 -13.2,-5.9 -13.2,-13.2 0,-7.3 5.9,-13.2 13.2,-13.2 7.3,0 13.2,5.9 13.2,13.2 0,7.3 -6,13.2 -13.2,13.2 z m 0,-21.8 c -4.7,0 -8.6,3.8 -8.6,8.6 0,4.8 3.8,8.6 8.6,8.6 4.8,0 8.6,-3.8 8.6,-8.6 0,-4.8 -3.9,-8.6 -8.6,-8.6 z"
|
||||
class="st3" />
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</g>
|
||||
</switch>
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 5.6 KiB |
294
images/themes/default/mActionAddPdalLayer.svg
Normal file
294
images/themes/default/mActionAddPdalLayer.svg
Normal file
@ -0,0 +1,294 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="250"
|
||||
inkscape:export-xdpi="250"
|
||||
inkscape:export-filename="/Users/hobu/Desktop/pdal_logo.png"
|
||||
width="23.105442"
|
||||
height="22.752747"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
|
||||
sodipodi:docname="mActionAddPdalLayer.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:guide-bbox="true"
|
||||
showguides="false"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-y="228"
|
||||
inkscape:window-x="56"
|
||||
inkscape:window-height="939"
|
||||
inkscape:window-width="1680"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer3"
|
||||
inkscape:document-units="px"
|
||||
inkscape:cy="14.378892"
|
||||
inkscape:cx="13.403946"
|
||||
inkscape:zoom="25.43759"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base">
|
||||
<inkscape:grid
|
||||
originy="-66.101765"
|
||||
originx="-106.10363"
|
||||
snapvisiblegridlinesonly="true"
|
||||
enabled="true"
|
||||
visible="true"
|
||||
empspacing="5"
|
||||
id="grid3113"
|
||||
type="xygrid" />
|
||||
<sodipodi:guide
|
||||
id="guide3818"
|
||||
position="58.041494,22.052723"
|
||||
orientation="0,1" />
|
||||
<sodipodi:guide
|
||||
id="guide3820"
|
||||
position="-1.5013465,-26.22525"
|
||||
orientation="1,0" />
|
||||
<sodipodi:guide
|
||||
id="guide3822"
|
||||
position="54.593064,-108.52771"
|
||||
orientation="0,1" />
|
||||
<sodipodi:guide
|
||||
id="guide3824"
|
||||
position="128.61929,-60.01984"
|
||||
orientation="1,0" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-106.10363,-66.101765)"
|
||||
style="display:inline"
|
||||
inkscape:label="PDAL text"
|
||||
id="layer4"
|
||||
inkscape:groupmode="layer" />
|
||||
<g
|
||||
transform="translate(-106.10363,-66.101765)"
|
||||
style="display:inline"
|
||||
inkscape:label="Color Dots"
|
||||
id="layer2"
|
||||
inkscape:groupmode="layer" />
|
||||
<g
|
||||
transform="translate(-106.10363,-66.101765)"
|
||||
style="display:inline"
|
||||
inkscape:label="Gray Dots"
|
||||
id="layer3"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
transform="matrix(0.17964694,0,0,0.17399869,87.055159,54.570728)"
|
||||
id="g3107">
|
||||
<circle
|
||||
r="15.528928"
|
||||
cy="141.33174"
|
||||
cx="181.81787"
|
||||
style="display:inline;fill:#b6f2fb;fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:0.962704;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3003"
|
||||
transform="matrix(-1.0387412,0,0,1.0387412,393.22524,-63.905737)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="15.528928"
|
||||
cy="141.33174"
|
||||
cx="181.81787"
|
||||
style="display:inline;fill:#55a9f6;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.854881;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3073"
|
||||
transform="matrix(-1.169753,0,0,1.169753,342.92204,-33.895972)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
style="display:inline;fill:#b6f2fb;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3075"
|
||||
transform="matrix(-1,0,0,1,384.26161,-62.333932)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
id="path3079"
|
||||
style="display:inline;fill:#b6f2fb;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.927382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(-1.0783049,0,0,1.0783049,327.70526,-161.79578)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="11.970215"
|
||||
cy="188.88908"
|
||||
cx="257.19788"
|
||||
style="display:inline;fill:#2c7fb8;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.905983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3081"
|
||||
transform="matrix(-1.1037735,0,0,1.1037735,480.8321,-26.231392)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="24.910988"
|
||||
cy="212.18248"
|
||||
cx="218.37555"
|
||||
style="display:inline;fill:#55a9f6;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.918172;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3083"
|
||||
transform="matrix(-1.0891203,0,0,1.0891203,430.57541,-102.27246)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="11.970215"
|
||||
cy="188.88908"
|
||||
cx="257.19788"
|
||||
transform="matrix(-1.1037735,0,0,1.1037735,405.30333,-25.168442)"
|
||||
id="path3111"
|
||||
style="display:inline;fill:#2c7fb8;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.905983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1,0,0,1,277.86199,9.564221)"
|
||||
id="path3838"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3840"
|
||||
transform="matrix(-1,0,0,1,312.59339,-4.689847)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
id="path3844"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.850241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(-0.94090967,0,0,0.94090967,342.27869,-120.03231)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1.0783049,0,0,1.0783049,433.52077,-103.18489)"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.741905;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3846" />
|
||||
<circle
|
||||
r="15.528928"
|
||||
cy="141.33174"
|
||||
cx="181.81787"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1.0605504,0,0,1.0605504,350.60249,22.364694)"
|
||||
id="path3850"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.754325;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3828"
|
||||
transform="matrix(-1,0,0,1,327.34063,-65.939185)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1.2827378,0,0,1.2827378,395.72688,-226.15381)"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.623666;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3830" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
id="path3961"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:1.05002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(-0.76189307,0,0,0.76189307,266.73335,-110.25136)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1,0,0,1,379.84063,37.810815)"
|
||||
id="path3963"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.6923,0,0,0.6923,107.08664,66.677564)"
|
||||
id="g2197">
|
||||
<rect
|
||||
fill="#5a8c5a"
|
||||
height="13"
|
||||
rx="2.615"
|
||||
width="13"
|
||||
x="19"
|
||||
y="19"
|
||||
id="rect2189" />
|
||||
<g
|
||||
fill-rule="evenodd"
|
||||
id="g2195">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 21.6,25.5 h 7.8 m -3.9,3.9 v -7.8"
|
||||
fill="#fff"
|
||||
stroke="#fff"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2.6"
|
||||
id="path2191" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 20.3,25.5 h 10.4 v -2.6 c 0,-2.6 -0.65,-2.6 -5.2,-2.6 -4.55,0 -5.2,0 -5.2,2.6 z"
|
||||
fill="#fcffff"
|
||||
opacity=".3"
|
||||
id="path2193" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
191
images/themes/default/mIconEntwineLayer.svg
Normal file
191
images/themes/default/mIconEntwineLayer.svg
Normal file
@ -0,0 +1,191 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:i="&ns_ai;"
|
||||
xmlns:x="adobe:ns:meta/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
|
||||
height="83.400002"
|
||||
width="83.400002"
|
||||
sodipodi:docname="mEntwineLogo.svg"
|
||||
xml:space="preserve"
|
||||
viewBox="0 0 83.400002 83.400002"
|
||||
y="0px"
|
||||
x="0px"
|
||||
id="Layer_1"
|
||||
version="1.1"><defs
|
||||
id="defs881" /><sodipodi:namedview
|
||||
inkscape:current-layer="g857"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-x="0"
|
||||
inkscape:cy="43.900013"
|
||||
inkscape:cx="197.30001"
|
||||
inkscape:zoom="1.2614379"
|
||||
showgrid="false"
|
||||
id="namedview879"
|
||||
inkscape:window-height="737"
|
||||
inkscape:window-width="1415"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
inkscape:document-rotation="0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff" />
|
||||
<metadata
|
||||
id="metadata833"><?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
|
||||
<x:xmpmeta
|
||||
x:xmptk="Adobe XMP Core 5.6-c067 79.157747, 2015/03/30-23:40:42 ">
|
||||
|
||||
<metadata><rdf:RDF>
|
||||
<rdf:Description
|
||||
rdf:about="" />
|
||||
<cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata></x:xmpmeta>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<?xpacket end="w"?></metadata>
|
||||
<style
|
||||
id="style835"
|
||||
type="text/css">
|
||||
.st0{clip-path:url(#SVGID_2_);fill:#39B54A;}
|
||||
.st1{clip-path:url(#SVGID_2_);fill:none;stroke:#FFFFFF;stroke-width:6.2024;stroke-miterlimit:10;}
|
||||
.st2{clip-path:url(#SVGID_2_);}
|
||||
.st3{fill:#FFFFFF;}
|
||||
.st4{fill:#39B44A;}
|
||||
.st5{fill:#192854;}
|
||||
</style>
|
||||
<switch
|
||||
transform="translate(-198.69999,-262.09999)"
|
||||
id="switch876">
|
||||
<foreignObject
|
||||
height="1"
|
||||
width="1"
|
||||
y="0"
|
||||
x="0"
|
||||
requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
|
||||
|
||||
</foreignObject>
|
||||
<g
|
||||
id="g874"
|
||||
i:extraneous="self">
|
||||
<g
|
||||
id="g865">
|
||||
<g
|
||||
id="g857">
|
||||
<defs
|
||||
id="defs838">
|
||||
<circle
|
||||
r="41.700001"
|
||||
cy="303.79999"
|
||||
cx="240.39999"
|
||||
id="SVGID_1_" />
|
||||
</defs>
|
||||
<clipPath
|
||||
id="SVGID_2_">
|
||||
<use
|
||||
height="100%"
|
||||
width="100%"
|
||||
y="0"
|
||||
x="0"
|
||||
id="use840"
|
||||
style="overflow:visible"
|
||||
xlink:href="#SVGID_1_" />
|
||||
</clipPath>
|
||||
<circle
|
||||
id="circle843"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
r="41.900002"
|
||||
cy="303.79999"
|
||||
cx="240.39999"
|
||||
class="st0" />
|
||||
<circle
|
||||
id="circle845"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
r="24.700001"
|
||||
cy="303.79999"
|
||||
cx="240.5"
|
||||
class="st1" />
|
||||
<g
|
||||
id="g851"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
class="st2">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path847"
|
||||
d="m 233.9,346.3 c 5.9,-28.3 -4.4,-36.5 -4.5,-36.6 l -13.2,-9.9 15.5,5.9 c 0.4,0.1 7.3,2.9 10.5,10.6 1.6,-1.9 4,-3.7 7.6,-4.2 l 11.8,-1.6 -10.4,5.9 c 0,0 -8,5.4 -3.3,29.5 l 0.5,2.7 -15.1,0.6 z"
|
||||
class="st3" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path849"
|
||||
d="m 230.8,307.9 c 0,0 9.6,3.7 10.5,15.1 0,0 1.5,-7.6 8.7,-8.6 0,0 -9.6,5.5 -4.4,32 l -9.4,0.4 c 6.3,-30.2 -5.4,-38.9 -5.4,-38.9 m -36.6,-18.9 33.7,22.6 c 0.3,0.3 2.4,2.3 3.8,6.9 1.5,4.8 2.8,13.5 -0.1,27.3 l -1.2,5.9 6,-0.3 9.4,-0.4 5.4,-0.2 -1,-5.3 c -4.2,-21.5 2.1,-27 2.2,-27.1 l 20.8,-11.8 -23.7,3.2 c -2.7,0.4 -4.9,1.4 -6.6,2.7 -3.9,-6.4 -10,-8.8 -10.3,-8.9 z"
|
||||
class="st4" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path853"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
d="m 216,306.7 c -1.6,-13.5 8,-25.8 21.6,-27.4 13.5,-1.6 25.8,8 27.4,21.6"
|
||||
class="st1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path855"
|
||||
clip-path="url(#SVGID_2_)"
|
||||
d="m 223,286.3 c 9.6,-9.6 25.3,-9.6 34.9,0 9.6,9.6 9.6,25.3 0,34.9"
|
||||
class="st1" />
|
||||
</g>
|
||||
<g
|
||||
id="g863">
|
||||
<circle
|
||||
id="circle859"
|
||||
r="10.9"
|
||||
cy="290.89999"
|
||||
cx="258.10001"
|
||||
class="st4" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path861"
|
||||
d="m 258.1,304.1 c -7.3,0 -13.2,-5.9 -13.2,-13.2 0,-7.3 5.9,-13.2 13.2,-13.2 7.3,0 13.2,5.9 13.2,13.2 0,7.3 -6,13.2 -13.2,13.2 z m 0,-21.8 c -4.7,0 -8.6,3.8 -8.6,8.6 0,4.8 3.8,8.6 8.6,8.6 4.8,0 8.6,-3.8 8.6,-8.6 0,-4.8 -3.9,-8.6 -8.6,-8.6 z"
|
||||
class="st3" />
|
||||
</g>
|
||||
</g>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</g>
|
||||
</switch>
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 4.6 KiB |
262
images/themes/default/mIconPdalLayer.svg
Normal file
262
images/themes/default/mIconPdalLayer.svg
Normal file
@ -0,0 +1,262 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="250"
|
||||
inkscape:export-xdpi="250"
|
||||
inkscape:export-filename="/Users/hobu/Desktop/pdal_logo.png"
|
||||
width="128.61584"
|
||||
height="130.7639"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="1.0beta2 (2b71d25, 2019-12-03)"
|
||||
sodipodi:docname="mPdalLogo.svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:guide-bbox="true"
|
||||
showguides="false"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-y="23"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-height="939"
|
||||
inkscape:window-width="1680"
|
||||
showgrid="false"
|
||||
inkscape:current-layer="layer3"
|
||||
inkscape:document-units="px"
|
||||
inkscape:cy="37.049332"
|
||||
inkscape:cx="42.117816"
|
||||
inkscape:zoom="2"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
borderopacity="1.0"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
id="base">
|
||||
<inkscape:grid
|
||||
originy="-66.270828"
|
||||
originx="-106.03279"
|
||||
snapvisiblegridlinesonly="true"
|
||||
enabled="true"
|
||||
visible="true"
|
||||
empspacing="5"
|
||||
id="grid3113"
|
||||
type="xygrid" />
|
||||
<sodipodi:guide
|
||||
id="guide3818"
|
||||
position="58.112329,130.23294"
|
||||
orientation="0,1" />
|
||||
<sodipodi:guide
|
||||
id="guide3820"
|
||||
position="-1.4305111,81.954967"
|
||||
orientation="1,0" />
|
||||
<sodipodi:guide
|
||||
id="guide3822"
|
||||
position="54.663899,-0.34749337"
|
||||
orientation="0,1" />
|
||||
<sodipodi:guide
|
||||
id="guide3824"
|
||||
position="128.69013,48.160377"
|
||||
orientation="1,0" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
transform="translate(-106.03279,-66.270828)"
|
||||
style="display:inline"
|
||||
inkscape:label="PDAL text"
|
||||
id="layer4"
|
||||
inkscape:groupmode="layer" />
|
||||
<g
|
||||
transform="translate(-106.03279,-66.270828)"
|
||||
style="display:inline"
|
||||
inkscape:label="Color Dots"
|
||||
id="layer2"
|
||||
inkscape:groupmode="layer" />
|
||||
<g
|
||||
transform="translate(-106.03279,-66.270828)"
|
||||
style="display:inline"
|
||||
inkscape:label="Gray Dots"
|
||||
id="layer3"
|
||||
inkscape:groupmode="layer">
|
||||
<g
|
||||
id="g3107">
|
||||
<circle
|
||||
r="15.528928"
|
||||
cy="141.33174"
|
||||
cx="181.81787"
|
||||
style="display:inline;fill:#b6f2fb;fill-opacity:1;fill-rule:evenodd;stroke:#323232;stroke-width:0.962704;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3003"
|
||||
transform="matrix(-1.0387412,0,0,1.0387412,393.22524,-63.905737)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="15.528928"
|
||||
cy="141.33174"
|
||||
cx="181.81787"
|
||||
style="display:inline;fill:#55a9f6;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.854881;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3073"
|
||||
transform="matrix(-1.169753,0,0,1.169753,342.92204,-33.895972)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
style="display:inline;fill:#b6f2fb;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3075"
|
||||
transform="matrix(-1,0,0,1,384.26161,-62.333932)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
id="path3079"
|
||||
style="display:inline;fill:#b6f2fb;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.927382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(-1.0783049,0,0,1.0783049,327.70526,-161.79578)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="11.970215"
|
||||
cy="188.88908"
|
||||
cx="257.19788"
|
||||
style="display:inline;fill:#2c7fb8;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.905983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3081"
|
||||
transform="matrix(-1.1037735,0,0,1.1037735,480.8321,-26.231392)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="24.910988"
|
||||
cy="212.18248"
|
||||
cx="218.37555"
|
||||
style="display:inline;fill:#55a9f6;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.918172;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3083"
|
||||
transform="matrix(-1.0891203,0,0,1.0891203,430.57541,-102.27246)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="11.970215"
|
||||
cy="188.88908"
|
||||
cx="257.19788"
|
||||
transform="matrix(-1.1037735,0,0,1.1037735,405.30333,-25.168442)"
|
||||
id="path3111"
|
||||
style="display:inline;fill:#2c7fb8;fill-opacity:1;fill-rule:evenodd;stroke:#232323;stroke-width:0.905983;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1,0,0,1,277.86199,9.564221)"
|
||||
id="path3838"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3840"
|
||||
transform="matrix(-1,0,0,1,312.59339,-4.689847)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
id="path3844"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.850241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(-0.94090967,0,0,0.94090967,342.27869,-120.03231)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1.0783049,0,0,1.0783049,433.52077,-103.18489)"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.741905;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3846" />
|
||||
<circle
|
||||
r="15.528928"
|
||||
cy="141.33174"
|
||||
cx="181.81787"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1.0605504,0,0,1.0605504,350.60249,22.364694)"
|
||||
id="path3850"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.754325;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3828"
|
||||
transform="matrix(-1,0,0,1,327.34063,-65.939185)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1.2827378,0,0,1.2827378,395.72688,-226.15381)"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.623666;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3830" />
|
||||
<circle
|
||||
r="8.0879831"
|
||||
cy="243.88737"
|
||||
cx="197.02327"
|
||||
id="path3961"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:1.05002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="matrix(-0.76189307,0,0,0.76189307,266.73335,-110.25136)"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90" />
|
||||
<circle
|
||||
r="4.2057514"
|
||||
cy="148.77269"
|
||||
cx="154.31873"
|
||||
inkscape:export-ydpi="90"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-filename="/Users/patrick/Documents/Consulting/Hobu/pdal/pdal_v2b.png"
|
||||
transform="matrix(-1,0,0,1,379.84063,37.810815)"
|
||||
id="path3963"
|
||||
style="display:inline;fill:#d6d6d6;fill-opacity:1;fill-rule:evenodd;stroke:#5a5a5a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
@ -36,11 +36,6 @@ Ctor
|
||||
%End
|
||||
|
||||
~QgsPointCloudDataProvider();
|
||||
virtual QgsRectangle extent() const;
|
||||
|
||||
virtual bool isValid() const;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
@ -29,13 +29,3 @@ QgsPointCloudDataProvider::QgsPointCloudDataProvider(
|
||||
|
||||
QgsPointCloudDataProvider::~QgsPointCloudDataProvider() = default;
|
||||
|
||||
|
||||
QgsRectangle QgsPointCloudDataProvider::extent() const
|
||||
{
|
||||
return index()->extent();
|
||||
}
|
||||
|
||||
bool QgsPointCloudDataProvider::isValid() const
|
||||
{
|
||||
return mIsValid;
|
||||
}
|
||||
|
@ -44,18 +44,15 @@ class CORE_EXPORT QgsPointCloudDataProvider: public QgsDataProvider
|
||||
QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
|
||||
|
||||
~QgsPointCloudDataProvider() override;
|
||||
QgsRectangle extent() const override;
|
||||
bool isValid() const override;
|
||||
|
||||
/**
|
||||
* Returns the point cloud index associated with the provider.
|
||||
*
|
||||
* Can be nullptr (e.g. the index is being created)
|
||||
*
|
||||
* \note Not available in Python bindings
|
||||
*/
|
||||
virtual QgsPointCloudIndex *index() const SIP_SKIP {return nullptr;}
|
||||
|
||||
private:
|
||||
bool mIsValid = false;
|
||||
};
|
||||
|
||||
#endif // QGSMESHDATAPROVIDER_H
|
||||
|
@ -56,7 +56,7 @@ QgsRectangle QgsPointCloudLayer::extent() const
|
||||
if ( !mDataProvider )
|
||||
return QgsRectangle();
|
||||
|
||||
return mDataProvider->index()->extent();
|
||||
return mDataProvider->extent();
|
||||
}
|
||||
|
||||
QgsMapLayerRenderer *QgsPointCloudLayer::createMapRenderer( QgsRenderContext &rendererContext )
|
||||
|
@ -113,6 +113,8 @@ bool QgsPointCloudLayerRenderer::render()
|
||||
{
|
||||
// TODO cache!?
|
||||
QgsPointCloudIndex *pc = mLayer->dataProvider()->index();
|
||||
if ( !pc )
|
||||
return false;
|
||||
|
||||
QgsRenderContext &context = *renderContext();
|
||||
|
||||
@ -162,6 +164,9 @@ QgsPointCloudLayerRenderer::~QgsPointCloudLayerRenderer() = default;
|
||||
|
||||
void QgsPointCloudLayerRenderer::drawData( QPainter *painter, const QgsPointCloudBlock *data, const QgsPointCloudRendererConfig &config )
|
||||
{
|
||||
Q_ASSERT( mLayer->dataProvider() );
|
||||
Q_ASSERT( mLayer->dataProvider()->index() );
|
||||
|
||||
if ( !data )
|
||||
return;
|
||||
|
||||
|
@ -32,6 +32,7 @@ QgsEptLayerItem::QgsEptLayerItem( QgsDataItem *parent,
|
||||
: QgsLayerItem( parent, name, path, uri, QgsLayerItem::PointCloud, QStringLiteral( "ept" ) )
|
||||
{
|
||||
mToolTip = uri;
|
||||
mIconName = QStringLiteral( "mIconEntwineLayer.svg" );
|
||||
setState( Populated );
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ class QgsEptDataItemGuiProvider : public QObject, public QgsDataItemGuiProvider
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
QString name() override { return QStringLiteral( "Point Cloud" ); }
|
||||
QString name() override { return QStringLiteral( "ept" ); }
|
||||
|
||||
void populateContextMenu( QgsDataItem *item, QMenu *menu,
|
||||
const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
|
||||
|
@ -27,10 +27,10 @@ class QgsEptSourceSelectProvider : public QgsSourceSelectProvider
|
||||
{
|
||||
public:
|
||||
|
||||
QString providerKey() const override { return QStringLiteral( "pointcloud" ); }
|
||||
QString text() const override { return QObject::tr( "Point Cloud" ); }
|
||||
QString providerKey() const override { return QStringLiteral( "ept" ); }
|
||||
QString text() const override { return QObject::tr( "EPT Point Cloud" ); }
|
||||
int ordering() const override { return QgsSourceSelectProvider::OrderLocalProvider + 25; }
|
||||
QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddPointCloudLayer.svg" ) ); }
|
||||
QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddEntwineLayer.svg" ) ); }
|
||||
QgsAbstractDataSourceWidget *createDataSourceWidget( QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::Widget, QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::Embedded ) const override
|
||||
{
|
||||
return new QgsEptSourceSelect( parent, fl, widgetMode );
|
||||
@ -38,7 +38,7 @@ class QgsEptSourceSelectProvider : public QgsSourceSelectProvider
|
||||
};
|
||||
|
||||
QgsEptProviderGuiMetadata::QgsEptProviderGuiMetadata()
|
||||
: QgsProviderGuiMetadata( QStringLiteral( "etp" ) )
|
||||
: QgsProviderGuiMetadata( QStringLiteral( "ept" ) )
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
#include "qgis_sip.h"
|
||||
#define SIP_NO_FILE
|
||||
|
||||
#include "ui_qgspointcloudsourceselectbase.h"
|
||||
#include "ui_qgseptsourceselectbase.h"
|
||||
#include "qgsabstractdatasourcewidget.h"
|
||||
#include "qgis_gui.h"
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
* \class QgsEptSourceSelect
|
||||
* \brief Dialog to select EPT point cloud supported sources
|
||||
*/
|
||||
class QgsEptSourceSelect : public QgsAbstractDataSourceWidget, private Ui::QgsPointCloudSourceSelectBase
|
||||
class QgsEptSourceSelect : public QgsAbstractDataSourceWidget, private Ui::QgsEptSourceSelectBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -26,6 +26,10 @@ IF (NOT FORCE_STATIC_PROVIDERS)
|
||||
ADD_SUBDIRECTORY(oracle)
|
||||
ENDIF(WITH_ORACLE)
|
||||
|
||||
IF (WITH_PDAL)
|
||||
ADD_SUBDIRECTORY(pdal)
|
||||
ENDIF(WITH_PDAL)
|
||||
|
||||
IF (WITH_GRASS OR WITH_GRASS7)
|
||||
ADD_SUBDIRECTORY(grass)
|
||||
ENDIF (WITH_GRASS OR WITH_GRASS7)
|
||||
|
73
src/providers/pdal/CMakeLists.txt
Normal file
73
src/providers/pdal/CMakeLists.txt
Normal file
@ -0,0 +1,73 @@
|
||||
########################################################
|
||||
# Files
|
||||
|
||||
SET(PDAL_SRCS
|
||||
qgspdaldataitems.cpp
|
||||
qgspdalprovider.cpp
|
||||
)
|
||||
|
||||
SET(PDAL_HDRS
|
||||
qgspdaldataitems.h
|
||||
qgspdalprovider.h
|
||||
)
|
||||
|
||||
IF (WITH_GUI)
|
||||
SET(PDAL_SRCS
|
||||
${PDAL_SRCS}
|
||||
qgspdalprovidergui.cpp
|
||||
qgspdaldataitemguiprovider.cpp
|
||||
qgspdalsourceselect.cpp
|
||||
)
|
||||
|
||||
SET(PDAL_HDRS
|
||||
${PDAL_HDRS}
|
||||
qgspdalprovidergui.h
|
||||
qgspdaldataitemguiprovider.h
|
||||
qgspdalsourceselect.h
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
########################################################
|
||||
# Build
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
${CMAKE_SOURCE_DIR}/src/core
|
||||
${CMAKE_SOURCE_DIR}/src/core/auth
|
||||
${CMAKE_SOURCE_DIR}/src/core/expression
|
||||
${CMAKE_SOURCE_DIR}/src/core/geometry
|
||||
${CMAKE_SOURCE_DIR}/src/core/metadata
|
||||
${CMAKE_SOURCE_DIR}/src/core/symbology
|
||||
${CMAKE_SOURCE_DIR}/src/core/raster
|
||||
${CMAKE_SOURCE_DIR}/src/core/pointcloud
|
||||
${CMAKE_SOURCE_DIR}/src/core/providers/ept
|
||||
${CMAKE_SOURCE_DIR}/src/gui
|
||||
${CMAKE_SOURCE_DIR}/src/gui/auth
|
||||
${CMAKE_SOURCE_DIR}/src/gui/codeeditors
|
||||
${CMAKE_SOURCE_DIR}/external
|
||||
${CMAKE_SOURCE_DIR}/external/nlohmann
|
||||
|
||||
${CMAKE_BINARY_DIR}/src/core
|
||||
${CMAKE_BINARY_DIR}/src/gui
|
||||
${CMAKE_BINARY_DIR}/src/ui
|
||||
)
|
||||
|
||||
INCLUDE_DIRECTORIES(SYSTEM
|
||||
${PDAL_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
# static library
|
||||
ADD_LIBRARY (pdalprovider MODULE ${PDAL_SRCS} ${PDAL_HDRS})
|
||||
TARGET_LINK_LIBRARIES (pdalprovider
|
||||
${PDAL_LIBRARIES}
|
||||
)
|
||||
|
||||
IF (WITH_GUI)
|
||||
TARGET_LINK_LIBRARIES(pdalprovider
|
||||
qgis_gui
|
||||
)
|
||||
ADD_DEPENDENCIES(pdalprovider ui)
|
||||
ENDIF (WITH_GUI)
|
||||
|
||||
INSTALL(TARGETS pdalprovider
|
||||
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
|
||||
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})
|
33
src/providers/pdal/qgspdaldataitemguiprovider.cpp
Normal file
33
src/providers/pdal/qgspdaldataitemguiprovider.cpp
Normal file
@ -0,0 +1,33 @@
|
||||
/***************************************************************************
|
||||
qgspdaldataitemguiprovider.cpp
|
||||
--------------------------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgspdaldataitemguiprovider.h"
|
||||
|
||||
#include "qgsmanageconnectionsdialog.h"
|
||||
#include "qgspdaldataitems.h"
|
||||
#include "qgspdalprovider.h"
|
||||
#include "qgspdalsourceselect.h"
|
||||
|
||||
#include <QFileDialog>
|
||||
#include <QInputDialog>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
void QgsPdalDataItemGuiProvider::populateContextMenu( QgsDataItem *item, QMenu *menu, const QList<QgsDataItem *> &, QgsDataItemGuiContext context )
|
||||
{
|
||||
Q_UNUSED( item )
|
||||
Q_UNUSED( menu )
|
||||
Q_UNUSED( context )
|
||||
}
|
33
src/providers/pdal/qgspdaldataitemguiprovider.h
Normal file
33
src/providers/pdal/qgspdaldataitemguiprovider.h
Normal file
@ -0,0 +1,33 @@
|
||||
/***************************************************************************
|
||||
qgspdaldataitemguiprovider.h
|
||||
--------------------------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSPDALDATAITEMGUIPROVIDER_H
|
||||
#define QGSPDALDATAITEMGUIPROVIDER_H
|
||||
|
||||
#include "qgsdataitemguiprovider.h"
|
||||
|
||||
|
||||
class QgsPdalDataItemGuiProvider : public QObject, public QgsDataItemGuiProvider
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
QString name() override { return QStringLiteral( "pdal" ); }
|
||||
|
||||
void populateContextMenu( QgsDataItem *item, QMenu *menu,
|
||||
const QList<QgsDataItem *> &selectedItems, QgsDataItemGuiContext context ) override;
|
||||
};
|
||||
|
||||
#endif // QGSPDALDATAITEMGUIPROVIDER_H
|
79
src/providers/pdal/qgspdaldataitems.cpp
Normal file
79
src/providers/pdal/qgspdaldataitems.cpp
Normal file
@ -0,0 +1,79 @@
|
||||
/***************************************************************************
|
||||
qgspdaldataitems.cpp
|
||||
--------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgspdaldataitems.h"
|
||||
#include "qgslogger.h"
|
||||
#include "qgssettings.h"
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <mutex>
|
||||
|
||||
QgsPdalLayerItem::QgsPdalLayerItem( QgsDataItem *parent,
|
||||
const QString &name, const QString &path, const QString &uri )
|
||||
: QgsLayerItem( parent, name, path, uri, QgsLayerItem::PointCloud, QStringLiteral( "pdal" ) )
|
||||
{
|
||||
mToolTip = uri;
|
||||
mIconName = QStringLiteral( "mIconPdalLayer.svg" );
|
||||
setState( Populated );
|
||||
}
|
||||
|
||||
QString QgsPdalLayerItem::layerName() const
|
||||
{
|
||||
QFileInfo info( name() );
|
||||
return info.completeBaseName();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
QgsPdalDataItemProvider::QgsPdalDataItemProvider():
|
||||
QgsDataItemProvider()
|
||||
{
|
||||
}
|
||||
|
||||
QString QgsPdalDataItemProvider::name()
|
||||
{
|
||||
return QStringLiteral( "pdal" );
|
||||
}
|
||||
|
||||
int QgsPdalDataItemProvider::capabilities() const
|
||||
{
|
||||
return QgsDataProvider::File;
|
||||
}
|
||||
|
||||
QgsDataItem *QgsPdalDataItemProvider::createDataItem( const QString &path, QgsDataItem *parentItem )
|
||||
{
|
||||
if ( path.isEmpty() )
|
||||
return nullptr;
|
||||
|
||||
QgsDebugMsgLevel( "thePath = " + path, 2 );
|
||||
|
||||
// get suffix, removing .gz if present
|
||||
QFileInfo info( path );
|
||||
info.setFile( path );
|
||||
|
||||
// allow only normal files
|
||||
if ( !info.isFile() )
|
||||
return nullptr;
|
||||
|
||||
// Filter files by extension
|
||||
// TODO get file filter list from PDAL library
|
||||
if ( !path.endsWith( QStringLiteral( "laz" ) ) )
|
||||
return nullptr;
|
||||
|
||||
QString name = info.baseName() + QStringLiteral( ".laz" );
|
||||
|
||||
return new QgsPdalLayerItem( parentItem, name, path, path );
|
||||
}
|
49
src/providers/pdal/qgspdaldataitems.h
Normal file
49
src/providers/pdal/qgspdaldataitems.h
Normal file
@ -0,0 +1,49 @@
|
||||
/***************************************************************************
|
||||
qgspdaldataitems.h
|
||||
--------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSPDALDATAITEMS_H
|
||||
#define QGSPDALDATAITEMS_H
|
||||
|
||||
#include "qgsdataitem.h"
|
||||
#include "qgsdataitemprovider.h"
|
||||
#include "qgsprovidermetadata.h"
|
||||
|
||||
class CORE_EXPORT QgsPdalLayerItem : public QgsLayerItem
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QgsPdalLayerItem( QgsDataItem *parent, const QString &name, const QString &path, const QString &uri );
|
||||
QString layerName() const override;
|
||||
};
|
||||
|
||||
//! Provider for PDAL data items
|
||||
class QgsPdalDataItemProvider : public QgsDataItemProvider
|
||||
{
|
||||
public:
|
||||
QgsPdalDataItemProvider();
|
||||
|
||||
QString name() override;
|
||||
|
||||
int capabilities() const override;
|
||||
|
||||
QgsDataItem *createDataItem( const QString &pathIn, QgsDataItem *parentItem ) override;
|
||||
};
|
||||
|
||||
#endif // QGSPDALDATAITEMS_H
|
||||
|
||||
|
||||
|
35
src/providers/pdal/qgspdalgresprovidergui.h
Normal file
35
src/providers/pdal/qgspdalgresprovidergui.h
Normal file
@ -0,0 +1,35 @@
|
||||
/***************************************************************************
|
||||
qgspostgresprovidergui.h
|
||||
------------------------
|
||||
Date : October 2019
|
||||
Copyright : (C) 2019 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSPOSTGRESPROVIDERGUI_H
|
||||
#define QGSPOSTGRESPROVIDERGUI_H
|
||||
|
||||
#include <QList>
|
||||
#include <QMainWindow>
|
||||
|
||||
#include "qgsproviderguimetadata.h"
|
||||
|
||||
class QgsPostgresProviderGuiMetadata: public QgsProviderGuiMetadata
|
||||
{
|
||||
public:
|
||||
QgsPostgresProviderGuiMetadata();
|
||||
|
||||
QList<QgsSourceSelectProvider *> sourceSelectProviders() override;
|
||||
QList<QgsDataItemGuiProvider *> dataItemGuiProviders() override;
|
||||
QList<QgsProjectStorageGuiProvider *> projectStorageGuiProviders() override;
|
||||
void registerGui( QMainWindow *mainWindow ) override;
|
||||
};
|
||||
|
||||
#endif // QGSPOSTGRESPROVIDERGUI_H
|
151
src/providers/pdal/qgspdalprovider.cpp
Normal file
151
src/providers/pdal/qgspdalprovider.cpp
Normal file
@ -0,0 +1,151 @@
|
||||
/***************************************************************************
|
||||
qgspdaldataprovider.cpp
|
||||
-----------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgis.h"
|
||||
#include "qgspdalprovider.h"
|
||||
#include "qgspdaldataitems.h"
|
||||
#include "qgsruntimeprofiler.h"
|
||||
#include "qgsapplication.h"
|
||||
|
||||
#include <pdal/io/LasReader.hpp>
|
||||
#include <pdal/io/LasHeader.hpp>
|
||||
#include <pdal/Options.hpp>
|
||||
|
||||
#define PROVIDER_KEY QStringLiteral( "pdal" )
|
||||
#define PROVIDER_DESCRIPTION QStringLiteral( "PDAL point cloud data provider" )
|
||||
|
||||
QgsPdalProvider::QgsPdalProvider(
|
||||
const QString &uri,
|
||||
const QgsDataProvider::ProviderOptions &options,
|
||||
QgsDataProvider::ReadFlags flags )
|
||||
: QgsPointCloudDataProvider( uri, options, flags )
|
||||
{
|
||||
std::unique_ptr< QgsScopedRuntimeProfile > profile;
|
||||
if ( QgsApplication::profiler()->groupIsActive( QStringLiteral( "projectload" ) ) )
|
||||
profile = qgis::make_unique< QgsScopedRuntimeProfile >( tr( "Open data source" ), QStringLiteral( "projectload" ) );
|
||||
|
||||
mIsValid = load( uri );
|
||||
}
|
||||
|
||||
QgsPdalProvider::~QgsPdalProvider() = default;
|
||||
|
||||
QgsCoordinateReferenceSystem QgsPdalProvider::crs() const
|
||||
{
|
||||
return mCrs;
|
||||
}
|
||||
|
||||
QgsRectangle QgsPdalProvider::extent() const
|
||||
{
|
||||
return mExtent;
|
||||
}
|
||||
|
||||
bool QgsPdalProvider::isValid() const
|
||||
{
|
||||
return mIsValid;
|
||||
}
|
||||
|
||||
QString QgsPdalProvider::name() const
|
||||
{
|
||||
return QStringLiteral( "pdal" );
|
||||
}
|
||||
|
||||
QString QgsPdalProvider::description() const
|
||||
{
|
||||
return QStringLiteral( "Point Clouds PDAL" );
|
||||
}
|
||||
|
||||
QgsPointCloudIndex *QgsPdalProvider::index() const
|
||||
{
|
||||
// TODO automatically generate EPT index
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool QgsPdalProvider::load( const QString &uri )
|
||||
{
|
||||
pdal::Option las_opt( "filename", uri.toStdString() );
|
||||
pdal::Options las_opts;
|
||||
las_opts.add( las_opt );
|
||||
pdal::PointTable table;
|
||||
pdal::LasReader las_reader;
|
||||
las_reader.setOptions( las_opts );
|
||||
las_reader.prepare( table );
|
||||
pdal::PointViewSet point_view_set = las_reader.execute( table );
|
||||
pdal::PointViewPtr point_view = *point_view_set.begin();
|
||||
pdal::Dimension::IdList dims = point_view->dims();
|
||||
pdal::LasHeader las_header = las_reader.header();
|
||||
|
||||
// extent
|
||||
/*
|
||||
double scale_x = las_header.scaleX();
|
||||
double scale_y = las_header.scaleY();
|
||||
double scale_z = las_header.scaleZ();
|
||||
|
||||
double offset_x = las_header.offsetX();
|
||||
double offset_y = las_header.offsetY();
|
||||
double offset_z = las_header.offsetZ();
|
||||
*/
|
||||
|
||||
double xmin = las_header.minX();
|
||||
double xmax = las_header.maxX();
|
||||
double ymin = las_header.minY();
|
||||
double ymax = las_header.maxY();
|
||||
mExtent = QgsRectangle( xmin, ymin, xmax, ymax );
|
||||
|
||||
// unsigned int nFeatures = las_header.pointCount();
|
||||
|
||||
// projection
|
||||
QString wkt = QString::fromStdString( las_reader.getSpatialReference().getWKT() );
|
||||
mCrs = QgsCoordinateReferenceSystem::fromWkt( wkt );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QgsPdalProviderMetadata::QgsPdalProviderMetadata():
|
||||
QgsProviderMetadata( PROVIDER_KEY, PROVIDER_DESCRIPTION )
|
||||
{
|
||||
}
|
||||
|
||||
QgsPdalProvider *QgsPdalProviderMetadata::createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags )
|
||||
{
|
||||
return new QgsPdalProvider( uri, options, flags );
|
||||
}
|
||||
|
||||
QList<QgsDataItemProvider *> QgsPdalProviderMetadata::dataItemProviders() const
|
||||
{
|
||||
QList< QgsDataItemProvider * > providers;
|
||||
providers << new QgsPdalDataItemProvider;
|
||||
return providers;
|
||||
}
|
||||
|
||||
QVariantMap QgsPdalProviderMetadata::decodeUri( const QString &uri )
|
||||
{
|
||||
const QString path = uri;
|
||||
QVariantMap uriComponents;
|
||||
uriComponents.insert( QStringLiteral( "path" ), path );
|
||||
return uriComponents;
|
||||
}
|
||||
|
||||
QString QgsPdalProviderMetadata::encodeUri( const QVariantMap &parts )
|
||||
{
|
||||
const QString path = parts.value( QStringLiteral( "path" ) ).toString();
|
||||
return path;
|
||||
}
|
||||
|
||||
QGISEXTERN QgsProviderMetadata *providerMetadataFactory()
|
||||
{
|
||||
return new QgsPdalProviderMetadata();
|
||||
}
|
65
src/providers/pdal/qgspdalprovider.h
Normal file
65
src/providers/pdal/qgspdalprovider.h
Normal file
@ -0,0 +1,65 @@
|
||||
/***************************************************************************
|
||||
qgspdaldataprovider.h
|
||||
---------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSPDALPROVIDER_H
|
||||
#define QGSPDALPROVIDER_H
|
||||
|
||||
#include "qgis_core.h"
|
||||
#include "qgspointclouddataprovider.h"
|
||||
#include "qgsprovidermetadata.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
class QgsPdalProvider: public QgsPointCloudDataProvider
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
QgsPdalProvider( const QString &uri,
|
||||
const QgsDataProvider::ProviderOptions &providerOptions,
|
||||
QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
|
||||
|
||||
~QgsPdalProvider();
|
||||
QgsCoordinateReferenceSystem crs() const override;
|
||||
|
||||
QgsRectangle extent() const override;
|
||||
|
||||
bool isValid() const override;
|
||||
|
||||
QString name() const override;
|
||||
|
||||
QString description() const override;
|
||||
|
||||
QgsPointCloudIndex *index() const override;
|
||||
|
||||
private:
|
||||
bool load( const QString &uri );
|
||||
QgsCoordinateReferenceSystem mCrs;
|
||||
QgsRectangle mExtent;
|
||||
bool mIsValid = false;
|
||||
};
|
||||
|
||||
class QgsPdalProviderMetadata : public QgsProviderMetadata
|
||||
{
|
||||
public:
|
||||
QgsPdalProviderMetadata();
|
||||
QgsPdalProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() ) override;
|
||||
QList< QgsDataItemProvider * > dataItemProviders() const override;
|
||||
QString encodeUri( const QVariantMap &parts ) override;
|
||||
QVariantMap decodeUri( const QString &uri ) override;
|
||||
};
|
||||
|
||||
#endif // QGSPDALPROVIDER_H
|
61
src/providers/pdal/qgspdalprovidergui.cpp
Normal file
61
src/providers/pdal/qgspdalprovidergui.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
/***************************************************************************
|
||||
qgspdalprovidergui.cpp
|
||||
--------------------------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgsapplication.h"
|
||||
#include "qgsproviderguimetadata.h"
|
||||
#include "qgssourceselectprovider.h"
|
||||
|
||||
#include "qgspdalprovider.h"
|
||||
#include "qgspdalsourceselect.h"
|
||||
|
||||
|
||||
//! Provider for pdal source select
|
||||
class QgsPdalSourceSelectProvider : public QgsSourceSelectProvider
|
||||
{
|
||||
public:
|
||||
|
||||
QString providerKey() const override { return QStringLiteral( "pdal" ); }
|
||||
QString text() const override { return QObject::tr( "PDAL Point Clouds" ); }
|
||||
int ordering() const override { return QgsSourceSelectProvider::OrderLocalProvider + 22; }
|
||||
QIcon icon() const override { return QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddPdalLayer.svg" ) ); }
|
||||
QgsAbstractDataSourceWidget *createDataSourceWidget( QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::Widget,
|
||||
QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::Embedded ) const override
|
||||
{
|
||||
return new QgsPdalSourceSelect( parent, fl, widgetMode );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class QgsPdalProviderGuiMetadata: public QgsProviderGuiMetadata
|
||||
{
|
||||
public:
|
||||
QgsPdalProviderGuiMetadata()
|
||||
: QgsProviderGuiMetadata( QStringLiteral( "pdal" ) )
|
||||
{
|
||||
}
|
||||
|
||||
QList<QgsSourceSelectProvider *> sourceSelectProviders() override
|
||||
{
|
||||
QList<QgsSourceSelectProvider *> providers;
|
||||
providers << new QgsPdalSourceSelectProvider;
|
||||
return providers;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
QGISEXTERN QgsProviderGuiMetadata *providerGuiMetadataFactory()
|
||||
{
|
||||
return new QgsPdalProviderGuiMetadata();
|
||||
}
|
35
src/providers/pdal/qgspdalprovidergui.h
Normal file
35
src/providers/pdal/qgspdalprovidergui.h
Normal file
@ -0,0 +1,35 @@
|
||||
/***************************************************************************
|
||||
qgspdalprovidergui.h
|
||||
------------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSPDALPROVIDERGUI_H
|
||||
#define QGSPDALPROVIDERGUI_H
|
||||
|
||||
#include <QList>
|
||||
#include <QMainWindow>
|
||||
|
||||
#include "qgsproviderguimetadata.h"
|
||||
|
||||
class QgsPdalProviderGuiMetadata: public QgsProviderGuiMetadata
|
||||
{
|
||||
public:
|
||||
QgsPdalProviderGuiMetadata();
|
||||
|
||||
QList<QgsSourceSelectProvider *> sourceSelectProviders() override;
|
||||
QList<QgsDataItemGuiProvider *> dataItemGuiProviders() override;
|
||||
QList<QgsProjectStorageGuiProvider *> projectStorageGuiProviders() override;
|
||||
void registerGui( QMainWindow *mainWindow ) override;
|
||||
};
|
||||
|
||||
#endif // QGSPDALPROVIDERGUI_H
|
54
src/providers/pdal/qgspdalsourceselect.cpp
Normal file
54
src/providers/pdal/qgspdalsourceselect.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
/***************************************************************************
|
||||
qgspdalsourceselect.cpp
|
||||
-----------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "qgspdalsourceselect.h"
|
||||
#include "qgsproviderregistry.h"
|
||||
#include "ogr/qgsogrhelperfunctions.h"
|
||||
|
||||
QgsPdalSourceSelect::QgsPdalSourceSelect( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode widgetMode ):
|
||||
QgsAbstractDataSourceWidget( parent, fl, widgetMode )
|
||||
{
|
||||
setupUi( this );
|
||||
setupButtons( buttonBox );
|
||||
|
||||
mFileWidget->setDialogTitle( tr( "Open PDAL Supported Point Cloud Dataset(s)" ) );
|
||||
mFileWidget->setFilter( QgsProviderRegistry::instance()->fileMeshFilters() );
|
||||
mFileWidget->setStorageMode( QgsFileWidget::GetMultipleFiles );
|
||||
connect( mFileWidget, &QgsFileWidget::fileChanged, this, [ = ]( const QString & path )
|
||||
{
|
||||
mPath = path;
|
||||
emit enableButtons( ! mPath.isEmpty() );
|
||||
} );
|
||||
}
|
||||
|
||||
void QgsPdalSourceSelect::addButtonClicked()
|
||||
{
|
||||
if ( mPath.isEmpty() )
|
||||
{
|
||||
QMessageBox::information( this,
|
||||
tr( "Add mesh layer" ),
|
||||
tr( "No layers selected." ) );
|
||||
return;
|
||||
}
|
||||
|
||||
for ( const QString &path : QgsFileWidget::splitFilePaths( mPath ) )
|
||||
{
|
||||
emit addMeshLayer( path, QFileInfo( path ).baseName(), QStringLiteral( "mdal" ) );
|
||||
}
|
||||
}
|
46
src/providers/pdal/qgspdalsourceselect.h
Normal file
46
src/providers/pdal/qgspdalsourceselect.h
Normal file
@ -0,0 +1,46 @@
|
||||
/***************************************************************************
|
||||
qgspdalsourceselect.h
|
||||
-------------------
|
||||
Date : November 2020
|
||||
Copyright : (C) 2020 by Peter Petrik
|
||||
Email : zilolv at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
#ifndef QGSPDALSOURCESELECT_H
|
||||
#define QGSPDALSOURCESELECT_H
|
||||
|
||||
#include "ui_qgspdalsourceselectbase.h"
|
||||
#include "qgsabstractdatasourcewidget.h"
|
||||
#include "qgis_gui.h"
|
||||
|
||||
|
||||
/**
|
||||
* Dialog to select PDAL supported point cloud sources
|
||||
*/
|
||||
class QgsPdalSourceSelect : public QgsAbstractDataSourceWidget, private Ui::QgsPdalSourceSelectBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
//! Constructor
|
||||
QgsPdalSourceSelect( QWidget *parent = nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags,
|
||||
QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None );
|
||||
|
||||
public slots:
|
||||
//! Determines the tables the user selected and closes the dialog
|
||||
void addButtonClicked() override;
|
||||
|
||||
private:
|
||||
QString mPath;
|
||||
|
||||
};
|
||||
|
||||
#endif // QGSPDALSOURCESELECT_H
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QgsPointCloudSourceSelectBase</class>
|
||||
<widget class="QDialog" name="QgsPointCloudSourceSelectBase">
|
||||
<class>QgsEptSourceSelectBase</class>
|
||||
<widget class="QDialog" name="QgsEptSourceSelectBase">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
@ -41,7 +41,7 @@
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Point cloud dataset</string>
|
||||
<string>EPT Point cloud dataset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
@ -91,7 +91,7 @@
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>QgsPointCloudSourceSelectBase</receiver>
|
||||
<receiver>QgsEptSourceSelectBase</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
108
src/ui/pointcloud/qgspdalsourceselectbase.ui
Normal file
108
src/ui/pointcloud/qgspdalsourceselectbase.ui
Normal file
@ -0,0 +1,108 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QgsPdalSourceSelectBase</class>
|
||||
<widget class="QDialog" name="QgsPdalSourceSelectBase">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>351</width>
|
||||
<height>119</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Add Point Cloud Layer(s)</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset>
|
||||
<normaloff>.</normaloff>.</iconset>
|
||||
</property>
|
||||
<property name="sizeGripEnabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="fileGroupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Source</string>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>PDAL Point cloud dataset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QgsFileWidget" name="mFileWidget" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::NoButton</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QgsFileWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>qgsfilewidget.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>buttonBox</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>QgsPdalSourceSelectBase</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>518</x>
|
||||
<y>510</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>551</x>
|
||||
<y>370</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
Loading…
x
Reference in New Issue
Block a user