Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
2823f6dd
Commit
2823f6dd
authored
Oct 16, 2020
by
Valentin Platzgummer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
min tile area -> percent
parent
5d91598d
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
127 additions
and
126 deletions
+127
-126
WimaMeasurementArea.cc
src/Wima/Geometry/WimaMeasurementArea.cc
+115
-90
WimaMeasurementArea.h
src/Wima/Geometry/WimaMeasurementArea.h
+7
-14
WimaMeasurementArea.SettingsGroup.json
...Wima/Geometry/json/WimaMeasurementArea.SettingsGroup.json
+5
-22
No files found.
src/Wima/Geometry/WimaMeasurementArea.cc
View file @
2823f6dd
...
@@ -57,12 +57,10 @@ size_t TileData::size() const {
...
@@ -57,12 +57,10 @@ size_t TileData::size() const {
const
char
*
WimaMeasurementArea
::
settingsGroup
=
"MeasurementArea"
;
const
char
*
WimaMeasurementArea
::
settingsGroup
=
"MeasurementArea"
;
const
char
*
WimaMeasurementArea
::
tileHeightName
=
"TileHeight"
;
const
char
*
WimaMeasurementArea
::
tileHeightName
=
"TileHeight"
;
const
char
*
WimaMeasurementArea
::
tileWidthName
=
"TileWidth"
;
const
char
*
WimaMeasurementArea
::
tileWidthName
=
"TileWidth"
;
const
char
*
WimaMeasurementArea
::
minTileAreaName
=
"MinTileArea"
;
const
char
*
WimaMeasurementArea
::
minTileAreaName
=
"MinTileArea
Percent
"
;
const
char
*
WimaMeasurementArea
::
showTilesName
=
"ShowTiles"
;
const
char
*
WimaMeasurementArea
::
showTilesName
=
"ShowTiles"
;
const
char
*
WimaMeasurementArea
::
WimaMeasurementAreaName
=
"Measurement Area"
;
const
char
*
WimaMeasurementArea
::
WimaMeasurementAreaName
=
"Measurement Area"
;
void
tileDeleter
(
QmlObjectListModel
*
tiles
)
{
tiles
->
clearAndDeleteContents
();
}
WimaMeasurementArea
::
WimaMeasurementArea
(
QObject
*
parent
)
WimaMeasurementArea
::
WimaMeasurementArea
(
QObject
*
parent
)
:
WimaArea
(
parent
),
:
WimaArea
(
parent
),
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
_metaDataMap
(
FactMetaData
::
createMapFromJsonFile
(
...
@@ -72,7 +70,8 @@ WimaMeasurementArea::WimaMeasurementArea(QObject *parent)
...
@@ -72,7 +70,8 @@ WimaMeasurementArea::WimaMeasurementArea(QObject *parent)
this
/* QObject parent */
)),
this
/* QObject parent */
)),
_tileWidth
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
tileWidthName
],
_tileWidth
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
tileWidthName
],
this
/* QObject parent */
)),
this
/* QObject parent */
)),
_minTileArea
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
minTileAreaName
],
_minTileAreaPercent
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
minTileAreaName
],
this
/* QObject parent */
)),
this
/* QObject parent */
)),
_showTiles
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
showTilesName
],
_showTiles
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
showTilesName
],
this
/* QObject parent */
)),
this
/* QObject parent */
)),
...
@@ -90,7 +89,8 @@ WimaMeasurementArea::WimaMeasurementArea(const WimaMeasurementArea &other,
...
@@ -90,7 +89,8 @@ WimaMeasurementArea::WimaMeasurementArea(const WimaMeasurementArea &other,
this
/* QObject parent */
)),
this
/* QObject parent */
)),
_tileWidth
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
tileWidthName
],
_tileWidth
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
tileWidthName
],
this
/* QObject parent */
)),
this
/* QObject parent */
)),
_minTileArea
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
minTileAreaName
],
_minTileAreaPercent
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
minTileAreaName
],
this
/* QObject parent */
)),
this
/* QObject parent */
)),
_showTiles
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
showTilesName
],
_showTiles
(
SettingsFact
(
settingsGroup
,
_metaDataMap
[
showTilesName
],
this
/* QObject parent */
)),
this
/* QObject parent */
)),
...
@@ -123,7 +123,7 @@ Fact *WimaMeasurementArea::tileHeight() { return &_tileHeight; }
...
@@ -123,7 +123,7 @@ Fact *WimaMeasurementArea::tileHeight() { return &_tileHeight; }
Fact
*
WimaMeasurementArea
::
tileWidth
()
{
return
&
_tileWidth
;
}
Fact
*
WimaMeasurementArea
::
tileWidth
()
{
return
&
_tileWidth
;
}
Fact
*
WimaMeasurementArea
::
minTileArea
()
{
return
&
_minTileArea
;
}
Fact
*
WimaMeasurementArea
::
minTileArea
()
{
return
&
_minTileArea
Percent
;
}
Fact
*
WimaMeasurementArea
::
showTiles
()
{
return
&
_showTiles
;
}
Fact
*
WimaMeasurementArea
::
showTiles
()
{
return
&
_showTiles
;
}
...
@@ -156,46 +156,56 @@ int WimaMeasurementArea::maxTiles() const { return SNAKE_MAX_TILES; }
...
@@ -156,46 +156,56 @@ int WimaMeasurementArea::maxTiles() const { return SNAKE_MAX_TILES; }
bool
WimaMeasurementArea
::
ready
()
const
{
return
this
->
_state
==
STATE
::
IDLE
;
}
bool
WimaMeasurementArea
::
ready
()
const
{
return
this
->
_state
==
STATE
::
IDLE
;
}
void
WimaMeasurementArea
::
saveToJson
(
QJsonObject
&
json
)
{
void
WimaMeasurementArea
::
saveToJson
(
QJsonObject
&
json
)
{
if
(
ready
())
{
this
->
WimaArea
::
saveToJson
(
json
);
this
->
WimaArea
::
saveToJson
(
json
);
json
[
tileHeightName
]
=
_tileHeight
.
rawValue
().
toDouble
();
json
[
tileHeightName
]
=
_tileHeight
.
rawValue
().
toDouble
();
json
[
tileWidthName
]
=
_tileWidth
.
rawValue
().
toDouble
();
json
[
tileWidthName
]
=
_tileWidth
.
rawValue
().
toDouble
();
json
[
minTileAreaName
]
=
_minTileArea
.
rawValue
().
toDouble
();
json
[
minTileAreaName
]
=
_minTileAreaPercent
.
rawValue
().
toDouble
();
json
[
showTilesName
]
=
_showTiles
.
rawValue
().
toBool
();
json
[
showTilesName
]
=
_showTiles
.
rawValue
().
toBool
();
json
[
areaTypeName
]
=
WimaMeasurementAreaName
;
json
[
areaTypeName
]
=
WimaMeasurementAreaName
;
}
else
{
qCDebug
(
WimaMeasurementAreaLog
)
<<
"saveToJson(): not ready for saveing."
;
}
}
}
bool
WimaMeasurementArea
::
loadFromJson
(
const
QJsonObject
&
json
,
bool
WimaMeasurementArea
::
loadFromJson
(
const
QJsonObject
&
json
,
QString
&
errorString
)
{
QString
&
errorString
)
{
if
(
this
->
WimaArea
::
loadFromJson
(
json
,
errorString
))
{
if
(
this
->
WimaArea
::
loadFromJson
(
json
,
errorString
))
{
disableUpdates
();
bool
retVal
=
true
;
bool
retVal
=
true
;
if
(
json
.
contains
(
tileHeightName
)
&&
json
[
tileHeightName
].
isDouble
())
{
if
(
!
json
.
contains
(
tileHeightName
)
||
!
json
[
tileHeightName
].
isDouble
())
{
_tileHeight
.
setRawValue
(
json
[
tileHeightName
].
toDouble
());
}
else
{
errorString
.
append
(
tr
(
"Could not load tile height!
\n
"
));
errorString
.
append
(
tr
(
"Could not load tile height!
\n
"
));
retVal
=
false
;
retVal
=
false
;
}
}
if
(
json
.
contains
(
tileWidthName
)
&&
json
[
tileWidthName
].
isDouble
())
{
if
(
!
json
.
contains
(
tileWidthName
)
||
!
json
[
tileWidthName
].
isDouble
())
{
_tileWidth
.
setRawValue
(
json
[
tileWidthName
].
toDouble
());
}
else
{
errorString
.
append
(
tr
(
"Could not load tile width!
\n
"
));
errorString
.
append
(
tr
(
"Could not load tile width!
\n
"
));
retVal
=
false
;
retVal
=
false
;
}
}
if
(
json
.
contains
(
minTileAreaName
)
&&
json
[
minTileAreaName
].
isDouble
())
{
if
(
!
json
.
contains
(
minTileAreaName
)
||
!
json
[
minTileAreaName
].
isDouble
())
{
_minTileArea
.
setRawValue
(
json
[
minTileAreaName
].
toDouble
());
}
else
{
errorString
.
append
(
tr
(
"Could not load minimal tile area!
\n
"
));
errorString
.
append
(
tr
(
"Could not load minimal tile area!
\n
"
));
retVal
=
false
;
retVal
=
false
;
}
}
if
(
json
.
contains
(
showTilesName
)
&&
json
[
showTilesName
].
isBool
())
{
if
(
!
json
.
contains
(
showTilesName
)
||
!
json
[
showTilesName
].
isBool
())
{
_showTiles
.
setRawValue
(
json
[
showTilesName
].
toBool
());
}
else
{
errorString
.
append
(
tr
(
"Could not load show tiles !
\n
"
));
errorString
.
append
(
tr
(
"Could not load show tiles !
\n
"
));
retVal
=
false
;
retVal
=
false
;
}
}
if
(
retVal
)
{
_tileHeight
.
setRawValue
(
json
[
tileHeightName
].
toDouble
());
_tileWidth
.
setRawValue
(
json
[
tileWidthName
].
toDouble
());
_minTileAreaPercent
.
setRawValue
(
json
[
minTileAreaName
].
toDouble
());
_showTiles
.
setRawValue
(
json
[
showTilesName
].
toBool
());
enableUpdates
();
doUpdate
();
}
else
{
enableUpdates
();
}
return
retVal
;
return
retVal
;
}
else
{
}
else
{
return
false
;
return
false
;
...
@@ -222,22 +232,24 @@ void WimaMeasurementArea::doUpdate() {
...
@@ -222,22 +232,24 @@ void WimaMeasurementArea::doUpdate() {
using
namespace
boost
::
units
;
using
namespace
boost
::
units
;
auto
start
=
std
::
chrono
::
high_resolution_clock
::
now
();
auto
start
=
std
::
chrono
::
high_resolution_clock
::
now
();
// Check state.
if
(
this
->
_state
!=
STATE
::
UPDATEING
&&
!
this
->
_state
==
STATE
::
STOP
)
{
const
auto
height
=
this
->
_tileHeight
.
rawValue
().
toDouble
()
*
si
::
meter
;
const
auto
height
=
this
->
_tileHeight
.
rawValue
().
toDouble
()
*
si
::
meter
;
const
auto
width
=
this
->
_tileWidth
.
rawValue
().
toDouble
()
*
si
::
meter
;
const
auto
width
=
this
->
_tileWidth
.
rawValue
().
toDouble
()
*
si
::
meter
;
const
auto
tileArea
=
width
*
height
;
const
auto
tileArea
=
width
*
height
;
const
auto
totalArea
=
this
->
area
()
*
si
::
meter
*
si
::
meter
;
const
auto
totalArea
=
this
->
area
()
*
si
::
meter
*
si
::
meter
;
const
auto
estNumTiles
=
totalArea
/
tileArea
;
const
auto
estNumTiles
=
totalArea
/
tileArea
;
if
(
this
->
_state
!=
STATE
::
UPDATE
&&
// Check some conditions.
long
(
std
::
ceil
(
estNumTiles
.
value
()))
<=
SNAKE_MAX_TILES
&&
if
(
long
(
std
::
ceil
(
estNumTiles
.
value
()))
<=
SNAKE_MAX_TILES
&&
this
->
count
()
>=
3
&&
this
->
isSimplePolygon
())
{
this
->
count
()
>=
3
&&
this
->
isSimplePolygon
())
{
setState
(
STATE
::
UPDATE
);
setState
(
STATE
::
UPDATEING
);
auto
polygon
=
this
->
coordinateList
();
auto
polygon
=
this
->
coordinateList
();
for
(
auto
&
v
:
polygon
)
{
for
(
auto
&
v
:
polygon
)
{
v
.
setAltitude
(
0
);
v
.
setAltitude
(
0
);
}
}
const
auto
minArea
=
const
auto
minArea
=
this
->
_minTileArea
.
rawValue
().
toDouble
()
*
si
::
meter
*
si
::
meter
;
this
->
_minTileAreaPercent
.
rawValue
().
toDouble
()
/
100
*
tileArea
;
auto
*
th
=
this
->
thread
();
auto
*
th
=
this
->
thread
();
auto
future
=
QtConcurrent
::
run
([
polygon
,
th
,
height
,
width
,
minArea
]
{
auto
future
=
QtConcurrent
::
run
([
polygon
,
th
,
height
,
width
,
minArea
]
{
auto
start
=
std
::
chrono
::
high_resolution_clock
::
now
();
auto
start
=
std
::
chrono
::
high_resolution_clock
::
now
();
...
@@ -284,7 +296,7 @@ void WimaMeasurementArea::doUpdate() {
...
@@ -284,7 +296,7 @@ void WimaMeasurementArea::doUpdate() {
this
->
_watcher
.
setFuture
(
future
);
this
->
_watcher
.
setFuture
(
future
);
}
}
}
qCDebug
(
WimaMeasurementAreaLog
)
qCDebug
(
WimaMeasurementAreaLog
)
<<
"doUpdate(): execution time: "
<<
"doUpdate(): execution time: "
<<
std
::
chrono
::
duration_cast
<
std
::
chrono
::
milliseconds
>
(
<<
std
::
chrono
::
duration_cast
<
std
::
chrono
::
milliseconds
>
(
...
@@ -295,6 +307,7 @@ void WimaMeasurementArea::doUpdate() {
...
@@ -295,6 +307,7 @@ void WimaMeasurementArea::doUpdate() {
void
WimaMeasurementArea
::
deferUpdate
()
{
void
WimaMeasurementArea
::
deferUpdate
()
{
if
(
this
->
_state
==
STATE
::
IDLE
||
this
->
_state
==
STATE
::
DEFERED
)
{
if
(
this
->
_state
==
STATE
::
IDLE
||
this
->
_state
==
STATE
::
DEFERED
)
{
qCDebug
(
WimaMeasurementAreaLog
)
<<
"defereUpdate(): defer update."
;
if
(
this
->
_state
==
STATE
::
IDLE
)
{
if
(
this
->
_state
==
STATE
::
IDLE
)
{
this
->
_progress
.
clear
();
this
->
_progress
.
clear
();
this
->
_tileData
.
clear
();
this
->
_tileData
.
clear
();
...
@@ -303,16 +316,16 @@ void WimaMeasurementArea::deferUpdate() {
...
@@ -303,16 +316,16 @@ void WimaMeasurementArea::deferUpdate() {
}
}
this
->
setState
(
STATE
::
DEFERED
);
this
->
setState
(
STATE
::
DEFERED
);
this
->
_timer
.
start
(
100
);
this
->
_timer
.
start
(
100
);
}
else
if
(
this
->
_state
==
STATE
::
UPDATE
)
{
}
else
if
(
this
->
_state
==
STATE
::
UPDATEING
)
{
setState
(
STATE
::
RESTART
);
qCDebug
(
WimaMeasurementAreaLog
)
<<
"defereUpdate(): restart."
;
setState
(
STATE
::
RESTARTING
);
}
}
}
}
void
WimaMeasurementArea
::
storeTiles
()
{
void
WimaMeasurementArea
::
storeTiles
()
{
auto
start
=
std
::
chrono
::
high_resolution_clock
::
now
();
auto
start
=
std
::
chrono
::
high_resolution_clock
::
now
();
if
(
this
->
_state
==
STATE
::
UPDATE
)
{
if
(
this
->
_state
==
STATE
::
UPDATEING
)
{
qCDebug
(
WimaMeasurementAreaLog
)
<<
"storeTiles(): update."
;
qCDebug
(
WimaMeasurementAreaLog
)
<<
"storeTiles(): update."
;
this
->
_tileData
=
*
this
->
_watcher
.
result
();
this
->
_tileData
=
*
this
->
_watcher
.
result
();
...
@@ -321,10 +334,11 @@ void WimaMeasurementArea::storeTiles() {
...
@@ -321,10 +334,11 @@ void WimaMeasurementArea::storeTiles() {
this
->
progressChanged
();
this
->
progressChanged
();
emit
this
->
tilesChanged
();
emit
this
->
tilesChanged
();
setState
(
STATE
::
IDLE
);
setState
(
STATE
::
IDLE
);
}
else
if
(
this
->
_state
==
STATE
::
RESTART
)
{
}
else
if
(
this
->
_state
==
STATE
::
RESTART
ING
)
{
qCDebug
(
WimaMeasurementAreaLog
)
<<
"storeTiles(): restart."
;
qCDebug
(
WimaMeasurementAreaLog
)
<<
"storeTiles(): restart."
;
doUpdate
();
doUpdate
();
}
else
if
(
this
->
_state
==
STATE
::
STOP
)
{
qCDebug
(
WimaMeasurementAreaLog
)
<<
"storeTiles(): stop."
;
}
}
qCDebug
(
WimaMeasurementAreaLog
)
qCDebug
(
WimaMeasurementAreaLog
)
<<
"storeTiles() execution time: "
<<
"storeTiles() execution time: "
...
@@ -334,13 +348,24 @@ void WimaMeasurementArea::storeTiles() {
...
@@ -334,13 +348,24 @@ void WimaMeasurementArea::storeTiles() {
<<
" ms"
;
<<
" ms"
;
}
}
void
WimaMeasurementArea
::
disableUpdates
()
{
setState
(
STATE
::
IDLE
);
this
->
_timer
.
stop
();
}
void
WimaMeasurementArea
::
enableUpdates
()
{
if
(
this
->
_state
==
STATE
::
STOP
)
{
setState
(
STATE
::
IDLE
);
}
}
void
WimaMeasurementArea
::
init
()
{
void
WimaMeasurementArea
::
init
()
{
this
->
setObjectName
(
WimaMeasurementAreaName
);
this
->
setObjectName
(
WimaMeasurementAreaName
);
connect
(
&
this
->
_tileHeight
,
&
Fact
::
rawValueChanged
,
this
,
connect
(
&
this
->
_tileHeight
,
&
Fact
::
rawValueChanged
,
this
,
&
WimaMeasurementArea
::
deferUpdate
);
&
WimaMeasurementArea
::
deferUpdate
);
connect
(
&
this
->
_tileWidth
,
&
Fact
::
rawValueChanged
,
this
,
connect
(
&
this
->
_tileWidth
,
&
Fact
::
rawValueChanged
,
this
,
&
WimaMeasurementArea
::
deferUpdate
);
&
WimaMeasurementArea
::
deferUpdate
);
connect
(
&
this
->
_minTileArea
,
&
Fact
::
rawValueChanged
,
this
,
connect
(
&
this
->
_minTileArea
Percent
,
&
Fact
::
rawValueChanged
,
this
,
&
WimaMeasurementArea
::
deferUpdate
);
&
WimaMeasurementArea
::
deferUpdate
);
connect
(
this
,
&
WimaArea
::
pathChanged
,
this
,
connect
(
this
,
&
WimaArea
::
pathChanged
,
this
,
&
WimaMeasurementArea
::
deferUpdate
);
&
WimaMeasurementArea
::
deferUpdate
);
...
...
src/Wima/Geometry/WimaMeasurementArea.h
View file @
2823f6dd
...
@@ -27,12 +27,7 @@ public:
...
@@ -27,12 +27,7 @@ public:
class
WimaMeasurementArea
:
public
WimaArea
{
class
WimaMeasurementArea
:
public
WimaArea
{
Q_OBJECT
Q_OBJECT
enum
class
STATE
{
enum
class
STATE
{
IDLE
,
DEFERED
,
UPDATEING
,
RESTARTING
,
STOP
};
IDLE
,
DEFERED
,
UPDATE
,
RESTART
,
};
public:
public:
WimaMeasurementArea
(
QObject
*
parent
=
nullptr
);
WimaMeasurementArea
(
QObject
*
parent
=
nullptr
);
...
@@ -71,10 +66,6 @@ public:
...
@@ -71,10 +66,6 @@ public:
void
saveToJson
(
QJsonObject
&
json
);
void
saveToJson
(
QJsonObject
&
json
);
bool
loadFromJson
(
const
QJsonObject
&
json
,
QString
&
errorString
);
bool
loadFromJson
(
const
QJsonObject
&
json
,
QString
&
errorString
);
// Friends
friend
void
print
(
const
WimaMeasurementArea
&
area
,
QString
outputStr
);
friend
void
print
(
const
WimaMeasurementArea
&
area
);
// Static Variables
// Static Variables
static
const
char
*
settingsGroup
;
static
const
char
*
settingsGroup
;
static
const
char
*
tileHeightName
;
static
const
char
*
tileHeightName
;
...
@@ -98,6 +89,8 @@ private slots:
...
@@ -98,6 +89,8 @@ private slots:
void
doUpdate
();
void
doUpdate
();
void
deferUpdate
();
void
deferUpdate
();
void
storeTiles
();
void
storeTiles
();
void
disableUpdates
();
void
enableUpdates
();
private:
private:
// Member Methodes
// Member Methodes
...
@@ -109,15 +102,15 @@ private:
...
@@ -109,15 +102,15 @@ private:
SettingsFact
_tileHeight
;
SettingsFact
_tileHeight
;
SettingsFact
_tileWidth
;
SettingsFact
_tileWidth
;
SettingsFact
_minTileArea
;
SettingsFact
_minTileArea
Percent
;
// 0..100
SettingsFact
_showTiles
;
SettingsFact
_showTiles
;
QVector
<
int
>
_progress
;
// Tile stuff.
// Tile stuff.
mutable
QTimer
_timer
;
mutable
QTimer
_timer
;
using
DataPtr
=
std
::
shared_ptr
<
TileData
>
;
using
DataPtr
=
std
::
shared_ptr
<
TileData
>
;
mutable
STATE
_state
;
mutable
TileData
_tileData
;
mutable
TileData
_tileData
;
mutable
QFutureWatcher
<
DataPtr
>
_watcher
;
mutable
QFutureWatcher
<
DataPtr
>
_watcher
;
mutable
STATE
_state
;
QVector
<
int
>
_progress
;
};
};
src/Wima/Geometry/json/WimaMeasurementArea.SettingsGroup.json
View file @
2823f6dd
...
@@ -18,31 +18,14 @@
...
@@ -18,31 +18,14 @@
"defaultValue"
:
5
"defaultValue"
:
5
},
},
{
{
"name"
:
"MinTileArea"
,
"name"
:
"MinTileArea
Percent
"
,
"shortDescription"
:
"The minimal allowed area
of a tile
"
,
"shortDescription"
:
"The minimal allowed area
in percent (of width*height).
"
,
"type"
:
"double"
,
"type"
:
"double"
,
"units"
:
"
m^2
"
,
"units"
:
"
%
"
,
"min"
:
0
,
"min"
:
0
,
"max"
:
100
,
"decimalPlaces"
:
2
,
"decimalPlaces"
:
2
,
"defaultValue"
:
5
"defaultValue"
:
20
},
{
"name"
:
"TransectDistance"
,
"shortDescription"
:
"The transect distance"
,
"type"
:
"double"
,
"units"
:
"m"
,
"min"
:
0.3
,
"decimalPlaces"
:
2
,
"defaultValue"
:
2
},
{
"name"
:
"MinTransectLength"
,
"shortDescription"
:
"The minimal transect length"
,
"type"
:
"double"
,
"units"
:
"m"
,
"min"
:
0
,
"decimalPlaces"
:
2
,
"defaultValue"
:
1
},
},
{
{
"name"
:
"ShowTiles"
,
"name"
:
"ShowTiles"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment