Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Merge branch 'master' of https://github.com/qgis/QGIS into hana-provider
- Loading branch information
Showing
with
2,816 additions
and 1,302 deletions.
- +2 −1 debian/control.in
- +1 −0 doc/CONTRIBUTORS
- +26 −1 external/untwine/bu/BuPyramid.cpp
- +1 −0 external/untwine/bu/BuTypes.hpp
- +50 −6 external/untwine/bu/Processor.cpp
- +2 −1 external/untwine/bu/Processor.hpp
- +23 −3 external/untwine/bu/PyramidManager.cpp
- +4 −1 external/untwine/bu/PyramidManager.hpp
- +67 −0 external/untwine/bu/Stats.cpp
- +181 −0 external/untwine/bu/Stats.hpp
- +1 −0 external/untwine/epf/Grid.cpp
- +3 −0 external/untwine/epf/Reprocessor.cpp
- +1 −0 external/untwine/untwine/Common.hpp
- +3 −1 external/untwine/untwine/FileDimInfo.hpp
- +13 −7 external/untwine/untwine/ProgressWriter.cpp
- +13 −4 external/untwine/untwine/Untwine.cpp
- +23 −8 external/untwine/untwine/VoxelKey.hpp
- +1 −0 python/core/auto_additions/qgsabstractdatabaseproviderconnection.py
- +3 −3 python/core/auto_generated/effects/qgsblureffect.sip.in
- +3 −3 python/core/auto_generated/effects/qgscoloreffect.sip.in
- +3 −3 python/core/auto_generated/effects/qgseffectstack.sip.in
- +4 −4 python/core/auto_generated/effects/qgsgloweffect.sip.in
- +5 −5 python/core/auto_generated/effects/qgspainteffect.sip.in
- +2 −2 python/core/auto_generated/effects/qgspainteffectregistry.sip.in
- +4 −4 python/core/auto_generated/effects/qgsshadoweffect.sip.in
- +3 −3 python/core/auto_generated/effects/qgstransformeffect.sip.in
- +1 −1 python/core/auto_generated/labeling/qgsrulebasedlabeling.sip.in
- +3 −3 python/core/auto_generated/labeling/qgsvectorlayerlabeling.sip.in
- +3 −1 python/core/auto_generated/processing/qgsprocessingparameters.sip.in
- +15 −12 python/core/auto_generated/qgscolorramp.sip.in
- +2 −0 python/core/auto_generated/qgsinterval.sip.in
- +54 −12 python/core/auto_generated/qgsrenderchecker.sip.in
- +86 −0 python/core/auto_generated/qgsrunprocess.sip.in
- +24 −0 python/core/auto_generated/qgstemporalutils.sip.in
- +1 −1 python/core/auto_generated/raster/qgshillshaderenderer.sip.in
- +1 −1 python/core/auto_generated/raster/qgsmultibandcolorrenderer.sip.in
- +1 −1 python/core/auto_generated/raster/qgspalettedrasterrenderer.sip.in
- +1 −1 python/core/auto_generated/raster/qgsrasterlayer.sip.in
- +1 −1 python/core/auto_generated/raster/qgsrasterrenderer.sip.in
- +1 −1 python/core/auto_generated/raster/qgssinglebandgrayrenderer.sip.in
- +1 −1 python/core/auto_generated/raster/qgssinglebandpseudocolorrenderer.sip.in
- +2 −2 python/core/auto_generated/symbology/qgsarrowsymbollayer.sip.in
- +2 −2 python/core/auto_generated/symbology/qgscategorizedsymbolrenderer.sip.in
- +7 −4 python/core/auto_generated/symbology/qgsellipsesymbollayer.sip.in
- +25 −25 python/core/auto_generated/symbology/qgsfillsymbollayer.sip.in
- +5 −2 python/core/auto_generated/symbology/qgsgeometrygeneratorsymbollayer.sip.in
- +1 −1 python/core/auto_generated/symbology/qgsgraduatedsymbolrenderer.sip.in
- +9 −9 python/core/auto_generated/symbology/qgslinesymbollayer.sip.in
- +19 −16 python/core/auto_generated/symbology/qgsmarkersymbollayer.sip.in
- +2 −2 python/core/auto_generated/symbology/qgsmasksymbollayer.sip.in
- +1 −1 python/core/auto_generated/symbology/qgspointdistancerenderer.sip.in
- +2 −2 python/core/auto_generated/symbology/qgsrenderer.sip.in
- +1 −1 python/core/auto_generated/symbology/qgsrendererrange.sip.in
- +5 −2 python/core/auto_generated/symbology/qgsrulebasedrenderer.sip.in
- +1 −1 python/core/auto_generated/symbology/qgssinglesymbolrenderer.sip.in
- +71 −31 python/core/auto_generated/symbology/qgssvgcache.sip.in
- +4 −4 python/core/auto_generated/symbology/qgssymbol.sip.in
- +8 −5 python/core/auto_generated/symbology/qgssymbollayer.sip.in
- +6 −6 python/core/auto_generated/symbology/qgssymbollayerregistry.sip.in
- +13 −7 python/core/auto_generated/symbology/qgssymbollayerutils.sip.in
- +6 −3 python/core/auto_generated/symbology/qgsvectorfieldsymbollayer.sip.in
- +1 −1 python/core/auto_generated/vector/qgsvectorlayer.sip.in
- +19 −0 python/gui/auto_generated/qgsmapcanvas.sip.in
- +22 −17 python/plugins/MetaSearch/dialogs/maindialog.py
- +26 −3 python/plugins/processing/algs/otb/OtbAlgorithm.py
- +3 −8 python/plugins/processing/gui/BatchPanel.py
- +4 −3 python/plugins/processing/gui/ParametersPanel.py
- +1 −1 python/plugins/processing/modeler/ModelerDialog.py
- +1 −1 python/server/auto_generated/qgsserverprojectutils.sip.in
- +5 −1 scripts/sipify_all.sh
- +7 −4 src/app/locator/qgsinbuiltlocatorfilters.cpp
- +14 −2 src/app/qgisapp.cpp
- +37 −21 src/app/qgsapplayertreeviewmenuprovider.cpp
- +7 −3 src/app/qgsidentifyresultsdialog.cpp
- +2 −2 src/app/qgsmapcanvasdockwidget.cpp
- +2 −2 src/core/annotations/qgsannotation.cpp
- +6 −6 src/core/effects/qgsblureffect.cpp
- +3 −3 src/core/effects/qgsblureffect.h
- +5 −5 src/core/effects/qgscoloreffect.cpp
- +3 −3 src/core/effects/qgscoloreffect.h
- +4 −4 src/core/effects/qgseffectstack.cpp
- +3 −3 src/core/effects/qgseffectstack.h
- +10 −10 src/core/effects/qgsgloweffect.cpp
- +4 −4 src/core/effects/qgsgloweffect.h
- +7 −34 src/core/effects/qgspainteffect.cpp
- +5 −5 src/core/effects/qgspainteffect.h
- +1 −1 src/core/effects/qgspainteffectregistry.cpp
- +4 −4 src/core/effects/qgspainteffectregistry.h
- +10 −10 src/core/effects/qgsshadoweffect.cpp
- +4 −4 src/core/effects/qgsshadoweffect.h
- +6 −6 src/core/effects/qgstransformeffect.cpp
- +3 −3 src/core/effects/qgstransformeffect.h
- +1 −1 src/core/labeling/qgslabelingengine.cpp
- +2 −2 src/core/labeling/qgsrulebasedlabeling.cpp
- +1 −1 src/core/labeling/qgsrulebasedlabeling.h
- +3 −3 src/core/labeling/qgsvectorlayerlabeling.cpp
- +3 −3 src/core/labeling/qgsvectorlayerlabeling.h
- +2 −2 src/core/layout/qgscompositionconverter.cpp
- +3 −3 src/core/layout/qgslayoutitemmapgrid.cpp
- +1 −1 src/core/layout/qgslayoutitemmapoverview.cpp
- +1 −1 src/core/layout/qgslayoutitemmarker.cpp
- +2 −2 src/core/layout/qgslayoutitemnodeitem.cpp
- +1 −1 src/core/layout/qgslayoutitempage.cpp
- +1 −1 src/core/layout/qgslayoutitempolygon.cpp
- +1 −1 src/core/layout/qgslayoutitempolyline.cpp
- +1 −1 src/core/layout/qgslayoutitemshape.cpp
- +1 −1 src/core/layout/qgslayoutpagecollection.cpp
- +1 −1 src/core/mesh/qgsmeshlayer.cpp
- +2 −2 src/core/pointcloud/qgseptdecoder.cpp
- +47 −17 src/core/pointcloud/qgspointclouddataprovider.cpp
- +4 −0 src/core/pointcloud/qgspointcloudrenderer.h
- +20 −0 src/core/processing/qgsprocessingparameters.cpp
- +2 −1 src/core/processing/qgsprocessingparameters.h
- +2 −2 src/core/providers/ogr/qgsogrprovider.cpp
- +2 −2 src/core/qgsabstractdatabaseproviderconnection.cpp
- +1 −1 src/core/qgsabstractdatabaseproviderconnection.h
- +39 −33 src/core/qgsapplication.cpp
- +29 −29 src/core/qgscolorramp.cpp
- +13 −12 src/core/qgscolorramp.h
- +11 −2 src/core/qgscoordinateutils.cpp
- +1 −1 src/core/qgscoordinateutils.h
- +1 −1 src/core/qgsdiagramrenderer.cpp
- +0 −13 src/core/qgsinterval.cpp
- +17 −1 src/core/qgsinterval.h
- +1 −1 src/core/qgsmaplayer.cpp
- +11 −3 src/core/qgsrenderchecker.cpp
- +54 −14 src/core/qgsrenderchecker.h
- +159 −0 src/core/qgsrunprocess.cpp
- +135 −0 src/core/qgsrunprocess.h
- +6 −2 src/core/qgstemporalnavigationobject.cpp
- +1 −1 src/core/qgstemporalnavigationobject.h
- +52 −0 src/core/qgstemporalutils.cpp
- +23 −0 src/core/qgstemporalutils.h
- +1 −1 src/core/raster/qgshillshaderenderer.cpp
- +1 −1 src/core/raster/qgshillshaderenderer.h
- +1 −1 src/core/raster/qgsmultibandcolorrenderer.cpp
- +1 −1 src/core/raster/qgsmultibandcolorrenderer.h
- +1 −1 src/core/raster/qgspalettedrasterrenderer.cpp
- +1 −1 src/core/raster/qgspalettedrasterrenderer.h
- +2 −2 src/core/raster/qgsrasterlayer.cpp
- +1 −1 src/core/raster/qgsrasterlayer.h
- +1 −1 src/core/raster/qgsrasterrenderer.cpp
- +1 −1 src/core/raster/qgsrasterrenderer.h
- +1 −1 src/core/raster/qgssinglebandgrayrenderer.cpp
- +1 −1 src/core/raster/qgssinglebandgrayrenderer.h
- +1 −1 src/core/raster/qgssinglebandpseudocolorrenderer.cpp
- +1 −1 src/core/raster/qgssinglebandpseudocolorrenderer.h
- +2 −2 src/core/symbology/qgs25drenderer.cpp
- +14 −14 src/core/symbology/qgsarrowsymbollayer.cpp
- +2 −2 src/core/symbology/qgsarrowsymbollayer.h
- +5 −5 src/core/symbology/qgscategorizedsymbolrenderer.cpp
- +2 −2 src/core/symbology/qgscategorizedsymbolrenderer.h
- +29 −29 src/core/symbology/qgsellipsesymbollayer.cpp
- +5 −4 src/core/symbology/qgsellipsesymbollayer.h
- +135 −135 src/core/symbology/qgsfillsymbollayer.cpp
- +25 −25 src/core/symbology/qgsfillsymbollayer.h
- +7 −7 src/core/symbology/qgsgeometrygeneratorsymbollayer.cpp
- +3 −2 src/core/symbology/qgsgeometrygeneratorsymbollayer.h
- +2 −2 src/core/symbology/qgsgraduatedsymbolrenderer.cpp
- +1 −1 src/core/symbology/qgsgraduatedsymbolrenderer.h
- +48 −48 src/core/symbology/qgslinesymbollayer.cpp
- +9 −9 src/core/symbology/qgslinesymbollayer.h
- +95 −91 src/core/symbology/qgsmarkersymbollayer.cpp
- +19 −17 src/core/symbology/qgsmarkersymbollayer.h
- +5 −5 src/core/symbology/qgsmasksymbollayer.cpp
- +2 −2 src/core/symbology/qgsmasksymbollayer.h
- +1 −1 src/core/symbology/qgspointdistancerenderer.cpp
- +1 −1 src/core/symbology/qgspointdistancerenderer.h
- +1 −1 src/core/symbology/qgsrenderer.cpp
- +2 −2 src/core/symbology/qgsrenderer.h
- +3 −3 src/core/symbology/qgsrendererrange.cpp
- +1 −1 src/core/symbology/qgsrendererrange.h
- +9 −7 src/core/symbology/qgsrulebasedrenderer.cpp
- +3 −2 src/core/symbology/qgsrulebasedrenderer.h
- +2 −2 src/core/symbology/qgssinglesymbolrenderer.cpp
- +1 −1 src/core/symbology/qgssinglesymbolrenderer.h
- +55 −29 src/core/symbology/qgssvgcache.h
- +4 −4 src/core/symbology/qgssymbol.cpp
- +4 −4 src/core/symbology/qgssymbol.h
- +10 −10 src/core/symbology/qgssymbollayer.cpp
- +6 −5 src/core/symbology/qgssymbollayer.h
- +2 −2 src/core/symbology/qgssymbollayerregistry.cpp
- +8 −8 src/core/symbology/qgssymbollayerregistry.h
- +51 −32 src/core/symbology/qgssymbollayerutils.cpp
- +9 −7 src/core/symbology/qgssymbollayerutils.h
- +13 −13 src/core/symbology/qgsvectorfieldsymbollayer.cpp
- +4 −3 src/core/symbology/qgsvectorfieldsymbollayer.h
- +2 −2 src/core/textrenderer/qgstextrenderer.cpp
- +2 −2 src/core/vector/qgsvectorlayer.cpp
- +1 −1 src/core/vector/qgsvectorlayer.h
- +11 −2 src/core/vector/qgsvectorlayereditutils.cpp
- +14 −10 src/gui/layertree/qgslayertreeviewdefaultactions.cpp
- +4 −4 src/gui/qgslegendpatchshapebutton.cpp
- +73 −0 src/gui/qgsmapcanvas.cpp
- +15 −0 src/gui/qgsmapcanvas.h
- +5 −3 src/gui/qgsmaptoolidentify.cpp
- +3 −3 src/gui/qgspropertyassistantwidget.cpp
- +4 −4 src/gui/qgssymbolbutton.cpp
- +3 −2 src/gui/qgstemporalcontrollerwidget.cpp
- +1 −1 src/gui/symbology/qgsdatadefinedsizelegendwidget.cpp
- +1 −0 src/providers/mssql/qgsmssqldataitems.cpp
- +1 −1 src/providers/mssql/qgsmssqlproviderconnection.cpp
- +2 −0 src/providers/pdal/CMakeLists.txt
- +6 −1 src/providers/pdal/qgspdaleptgenerationtask.cpp
- +14 −13 src/providers/postgres/qgspostgresproviderconnection.cpp
- +1 −1 src/server/qgis_mapserver.cpp
- +2 −2 src/server/qgscapabilitiescache.cpp
- +3 −2 src/server/qgsserverogcapi.cpp
- +8 −5 src/server/qgsserverogcapihandler.cpp
- +12 −6 src/server/qgsserverparameters.cpp
- +3 −1 src/server/qgsserverplugins.cpp
- +10 −1 src/server/qgsserverprojectutils.cpp
- +1 −1 src/server/qgsserverprojectutils.h
- +2 −3 src/server/qgsserverquerystringparameter.cpp
- +3 −2 src/server/qgsserversettings.cpp
- +2 −1 src/server/qgsservicenativeloader.cpp
- +4 −3 src/server/services/landingpage/qgslandingpageutils.cpp
- +12 −29 src/server/services/wms/qgswmsgetcapabilities.cpp
- +1 −1 src/server/services/wms/qgswmsgetstyles.cpp
- +1 −1 src/ui/qgisapp.ui
- +13 −0 tests/src/analysis/testqgsprocessing.cpp
- +14 −1 tests/src/app/testqgsapplocatorfilters.cpp
- +2 −2 tests/src/core/testqgsdatadefinedsizelegend.cpp
- +5 −5 tests/src/core/testqgsdiagram.cpp
- +1 −1 tests/src/core/testqgsdxfexport.cpp
- +1 −1 tests/src/core/testqgslabelingengine.cpp
- +4 −4 tests/src/core/testqgslayertree.cpp
- +2 −2 tests/src/core/testqgslayoutatlas.cpp
- +1 −1 tests/src/core/testqgslegendrenderer.cpp
- +2 −2 tests/src/core/testqgslinefillsymbol.cpp
- +2 −2 tests/src/core/testqgsmarkerlinesymbol.cpp
- +11 −11 tests/src/core/testqgspainteffect.cpp
- +4 −4 tests/src/core/testqgspainteffectregistry.cpp
- +7 −7 tests/src/core/testqgspointpatternfillsymbol.cpp
- +14 −14 tests/src/core/testqgsstyle.cpp
- +7 −1 tests/src/core/testqgstemporalnavigationobject.cpp
- +1 −0 tests/src/python/CMakeLists.txt
- +86 −0 tests/src/python/test_qgsblockingprocess.py
- +1 −1 tests/src/python/test_qgsserver.py
- +59 −1 tests/src/python/test_qgstemporalutils.py
- BIN tests/testdata/curved_polys.gpkg
- +2 −2 tests/testdata/qgis_server/getcapabilities.txt
- +2 −2 tests/testdata/qgis_server/getcapabilities_inspire.txt
- +2 −2 tests/testdata/qgis_server/getprojectsettings.txt
- +2 −2 tests/testdata/qgis_server/getprojectsettings_opacity.txt
- +1 −1 tests/testdata/qgis_server/landingpage/test_landing_page_index.json
- +1 −1 tests/testdata/qgis_server/landingpage/test_landing_page_with_pg_index.json
- +1 −1 tests/testdata/qgis_server/landingpage/test_project_QGIS_Server_-_Grouped_Nested_Layer.json
- +2 −2 tests/testdata/qgis_server/wms_getcapabilities_1_1_1.txt
- +2 −2 tests/testdata/qgis_server/wms_getcapabilities_1_3_0.txt
- +2 −1 tests/testdata/qgis_server/wms_getcapabilities_empty_layer.txt
- +2 −1 tests/testdata/qgis_server/wms_getcapabilities_empty_spatial_layer.txt
- +2 −1 tests/testdata/qgis_server/wms_getcapabilities_without_title.txt
- +2 −2 tests/testdata/qgis_server_accesscontrol/results/getcapabilities_wms_dimension.txt
@@ -0,0 +1,67 @@ | ||
|
||
#include "Stats.hpp" | ||
|
||
#include <cmath> | ||
|
||
namespace untwine | ||
{ | ||
|
||
void Stats::computeGlobalStats() | ||
{ | ||
auto compute_median = [](std::vector<double> vals) | ||
{ | ||
std::nth_element(vals.begin(), vals.begin() + vals.size() / 2, vals.end()); | ||
return *(vals.begin() + vals.size() / 2); | ||
}; | ||
|
||
// TODO add quantiles | ||
m_median = compute_median(m_data); | ||
std::transform(m_data.begin(), m_data.end(), m_data.begin(), | ||
[this](double v) { return std::fabs(v - this->m_median); }); | ||
m_mad = compute_median(m_data); | ||
} | ||
|
||
// Math comes from https://prod.sandia.gov/techlib-noauth/access-control.cgi/2008/086212.pdf | ||
// (Pebay paper from Sandia labs, 2008) | ||
bool Stats::merge(const Stats& s) | ||
{ | ||
if ((m_name != s.m_name) || (m_enumerate != s.m_enumerate) || (m_advanced != s.m_advanced)) | ||
return false; | ||
|
||
double n1 = m_cnt; | ||
double n2 = s.m_cnt; | ||
double n = n1 + n2; | ||
double nsq = n * n; | ||
double n1n2 = m_cnt * s.m_cnt; | ||
double n1sq = n1 * n1; | ||
double n2sq = n2 * n2; | ||
double ncube = n * n * n; | ||
double deltaMean = s.M1 - M1; | ||
|
||
if (n == 0) | ||
return true; | ||
|
||
double m1 = M1 + s.m_cnt * deltaMean / n; | ||
double m2 = M2 + s.M2 + n1n2 * std::pow(deltaMean, 2) / n; | ||
double m3 = M3 + s.M3 + n1n2 * (n1 - n2) * std::pow(deltaMean, 3) / nsq + | ||
3 * (n1 * s.M2 - n2 * M2) * deltaMean / n; | ||
double m4 = M4 + s.M4 + | ||
n1n2 * (n1sq - n1n2 + n2sq) * std::pow(deltaMean, 4) / ncube + | ||
6 * (n1sq * s.M2 + n2sq * M2) * std::pow(deltaMean, 2) / nsq + | ||
4 * (n1 * s.M3 - n2 * M3) * deltaMean / n; | ||
|
||
M1 = m1; | ||
M2 = m2; | ||
M3 = m3; | ||
M4 = m4; | ||
m_min = (std::min)(m_min, s.m_min); | ||
m_max = (std::max)(m_max, s.m_max); | ||
m_cnt = s.m_cnt + m_cnt; | ||
m_data.insert(m_data.begin(), s.m_data.begin(), s.m_data.end()); | ||
for (auto p : s.m_values) | ||
m_values[p.first] += p.second; | ||
|
||
return true; | ||
} | ||
|
||
} // namespace untwine |
Oops, something went wrong.