BERATools 0.2.0__py3-none-any.whl → 0.2.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- beratools/__init__.py +1 -7
- beratools/core/algo_centerline.py +491 -351
- beratools/core/algo_common.py +497 -0
- beratools/core/algo_cost.py +192 -0
- beratools/core/{dijkstra_algorithm.py → algo_dijkstra.py} +503 -460
- beratools/core/algo_footprint_rel.py +577 -0
- beratools/core/algo_line_grouping.py +944 -0
- beratools/core/algo_merge_lines.py +214 -0
- beratools/core/algo_split_with_lines.py +304 -0
- beratools/core/algo_tiler.py +428 -0
- beratools/core/algo_vertex_optimization.py +469 -0
- beratools/core/constants.py +52 -86
- beratools/core/logger.py +76 -85
- beratools/core/tool_base.py +196 -133
- beratools/gui/__init__.py +11 -15
- beratools/gui/{beratools.json → assets/beratools.json} +2185 -2300
- beratools/gui/batch_processing_dlg.py +513 -463
- beratools/gui/bt_data.py +481 -487
- beratools/gui/bt_gui_main.py +710 -691
- beratools/gui/main.py +26 -0
- beratools/gui/map_window.py +162 -146
- beratools/gui/tool_widgets.py +725 -493
- beratools/tools/Beratools_r_script.r +1120 -1120
- beratools/tools/Ht_metrics.py +116 -116
- beratools/tools/__init__.py +7 -7
- beratools/tools/batch_processing.py +136 -132
- beratools/tools/canopy_threshold_relative.py +672 -670
- beratools/tools/canopycostraster.py +222 -222
- beratools/tools/centerline.py +136 -176
- beratools/tools/common.py +857 -885
- beratools/tools/fl_regen_csf.py +428 -428
- beratools/tools/forest_line_attributes.py +408 -408
- beratools/tools/line_footprint_absolute.py +213 -363
- beratools/tools/line_footprint_fixed.py +436 -282
- beratools/tools/line_footprint_functions.py +733 -720
- beratools/tools/line_footprint_relative.py +73 -64
- beratools/tools/line_grouping.py +45 -0
- beratools/tools/ln_relative_metrics.py +615 -615
- beratools/tools/r_cal_lpi_elai.r +24 -24
- beratools/tools/r_generate_pd_focalraster.r +100 -100
- beratools/tools/r_interface.py +79 -79
- beratools/tools/r_point_density.r +8 -8
- beratools/tools/rpy_chm2trees.py +86 -86
- beratools/tools/rpy_dsm_chm_by.py +81 -81
- beratools/tools/rpy_dtm_by.py +63 -63
- beratools/tools/rpy_find_cellsize.py +43 -43
- beratools/tools/rpy_gnd_csf.py +74 -74
- beratools/tools/rpy_hummock_hollow.py +85 -85
- beratools/tools/rpy_hummock_hollow_raster.py +71 -71
- beratools/tools/rpy_las_info.py +51 -51
- beratools/tools/rpy_laz2las.py +40 -40
- beratools/tools/rpy_lpi_elai_lascat.py +466 -466
- beratools/tools/rpy_normalized_lidar_by.py +56 -56
- beratools/tools/rpy_percent_above_dbh.py +80 -80
- beratools/tools/rpy_points2trees.py +88 -88
- beratools/tools/rpy_vegcoverage.py +94 -94
- beratools/tools/tiler.py +48 -206
- beratools/tools/tool_template.py +69 -54
- beratools/tools/vertex_optimization.py +61 -620
- beratools/tools/zonal_threshold.py +144 -144
- beratools-0.2.2.dist-info/METADATA +108 -0
- beratools-0.2.2.dist-info/RECORD +74 -0
- {beratools-0.2.0.dist-info → beratools-0.2.2.dist-info}/WHEEL +1 -1
- {beratools-0.2.0.dist-info → beratools-0.2.2.dist-info}/licenses/LICENSE +22 -22
- beratools/gui/cli.py +0 -18
- beratools/gui/gui.json +0 -8
- beratools/gui_tk/ASCII Banners.txt +0 -248
- beratools/gui_tk/__init__.py +0 -20
- beratools/gui_tk/beratools_main.py +0 -515
- beratools/gui_tk/bt_widgets.py +0 -442
- beratools/gui_tk/cli.py +0 -18
- beratools/gui_tk/img/BERALogo.png +0 -0
- beratools/gui_tk/img/closed.gif +0 -0
- beratools/gui_tk/img/closed.png +0 -0
- beratools/gui_tk/img/open.gif +0 -0
- beratools/gui_tk/img/open.png +0 -0
- beratools/gui_tk/img/tool.gif +0 -0
- beratools/gui_tk/img/tool.png +0 -0
- beratools/gui_tk/main.py +0 -14
- beratools/gui_tk/map_window.py +0 -144
- beratools/gui_tk/runner.py +0 -1481
- beratools/gui_tk/tooltip.py +0 -55
- beratools/third_party/pyqtlet2/__init__.py +0 -9
- beratools/third_party/pyqtlet2/leaflet/__init__.py +0 -26
- beratools/third_party/pyqtlet2/leaflet/control/__init__.py +0 -6
- beratools/third_party/pyqtlet2/leaflet/control/control.py +0 -59
- beratools/third_party/pyqtlet2/leaflet/control/draw.py +0 -52
- beratools/third_party/pyqtlet2/leaflet/control/layers.py +0 -20
- beratools/third_party/pyqtlet2/leaflet/core/Parser.py +0 -24
- beratools/third_party/pyqtlet2/leaflet/core/__init__.py +0 -2
- beratools/third_party/pyqtlet2/leaflet/core/evented.py +0 -180
- beratools/third_party/pyqtlet2/leaflet/layer/__init__.py +0 -5
- beratools/third_party/pyqtlet2/leaflet/layer/featuregroup.py +0 -34
- beratools/third_party/pyqtlet2/leaflet/layer/icon/__init__.py +0 -1
- beratools/third_party/pyqtlet2/leaflet/layer/icon/icon.py +0 -30
- beratools/third_party/pyqtlet2/leaflet/layer/imageoverlay.py +0 -18
- beratools/third_party/pyqtlet2/leaflet/layer/layer.py +0 -105
- beratools/third_party/pyqtlet2/leaflet/layer/layergroup.py +0 -45
- beratools/third_party/pyqtlet2/leaflet/layer/marker/__init__.py +0 -1
- beratools/third_party/pyqtlet2/leaflet/layer/marker/marker.py +0 -91
- beratools/third_party/pyqtlet2/leaflet/layer/tile/__init__.py +0 -2
- beratools/third_party/pyqtlet2/leaflet/layer/tile/gridlayer.py +0 -4
- beratools/third_party/pyqtlet2/leaflet/layer/tile/tilelayer.py +0 -16
- beratools/third_party/pyqtlet2/leaflet/layer/vector/__init__.py +0 -5
- beratools/third_party/pyqtlet2/leaflet/layer/vector/circle.py +0 -15
- beratools/third_party/pyqtlet2/leaflet/layer/vector/circlemarker.py +0 -18
- beratools/third_party/pyqtlet2/leaflet/layer/vector/path.py +0 -5
- beratools/third_party/pyqtlet2/leaflet/layer/vector/polygon.py +0 -14
- beratools/third_party/pyqtlet2/leaflet/layer/vector/polyline.py +0 -18
- beratools/third_party/pyqtlet2/leaflet/layer/vector/rectangle.py +0 -14
- beratools/third_party/pyqtlet2/leaflet/map/__init__.py +0 -1
- beratools/third_party/pyqtlet2/leaflet/map/map.py +0 -220
- beratools/third_party/pyqtlet2/mapwidget.py +0 -45
- beratools/third_party/pyqtlet2/web/custom.js +0 -43
- beratools/third_party/pyqtlet2/web/map.html +0 -23
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/layers-2x.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/layers.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/marker-icon-2x.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/marker-icon.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/marker-shadow.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/leaflet.css +0 -656
- beratools/third_party/pyqtlet2/web/modules/leaflet_193/leaflet.js +0 -6
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.codeclimate.yml +0 -14
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.editorconfig +0 -4
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.gitattributes +0 -22
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.travis.yml +0 -43
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/LICENSE +0 -20
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/layers-2x.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/layers.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/marker-icon-2x.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/marker-icon.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/marker-shadow.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/spritesheet-2x.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/spritesheet.png +0 -0
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/spritesheet.svg +0 -156
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/leaflet.draw.css +0 -10
- beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/leaflet.draw.js +0 -10
- beratools/third_party/pyqtlet2/web/modules/leaflet_rotatedMarker_020/LICENSE +0 -22
- beratools/third_party/pyqtlet2/web/modules/leaflet_rotatedMarker_020/leaflet.rotatedMarker.js +0 -57
- beratools/tools/forest_line_ecosite.py +0 -216
- beratools/tools/lapis_all.py +0 -103
- beratools/tools/least_cost_path_from_chm.py +0 -152
- beratools-0.2.0.dist-info/METADATA +0 -63
- beratools-0.2.0.dist-info/RECORD +0 -142
- /beratools/gui/{img → assets}/BERALogo.png +0 -0
- /beratools/gui/{img → assets}/closed.gif +0 -0
- /beratools/gui/{img → assets}/closed.png +0 -0
- /beratools/{gui_tk → gui/assets}/gui.json +0 -0
- /beratools/gui/{img → assets}/open.gif +0 -0
- /beratools/gui/{img → assets}/open.png +0 -0
- /beratools/gui/{img → assets}/tool.gif +0 -0
- /beratools/gui/{img → assets}/tool.png +0 -0
- {beratools-0.2.0.dist-info → beratools-0.2.2.dist-info}/entry_points.txt +0 -0
|
@@ -1,85 +1,85 @@
|
|
|
1
|
-
import math
|
|
2
|
-
import os
|
|
3
|
-
import time
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
from beratools.tools.common import *
|
|
7
|
-
from beratools.tools.r_interface import *
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def hh_raster(callback, in_las_folder, Min_ws, lawn_range, cell_size, out_folder, processes, verbose):
|
|
11
|
-
rprocesses = r_processes(processes)
|
|
12
|
-
|
|
13
|
-
in_las_folder = in_las_folder.replace("\\", "/")
|
|
14
|
-
out_folder = out_folder.replace("\\", "/")
|
|
15
|
-
|
|
16
|
-
# assign R script file to local variable
|
|
17
|
-
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
18
|
-
# Defining the R script and loading the instance in Python
|
|
19
|
-
r['source'](Beratools_R_script)
|
|
20
|
-
# Loading the function defined in R script.
|
|
21
|
-
r_hh_function = robjects.globalenv['hh_function']
|
|
22
|
-
|
|
23
|
-
# Invoking the R function
|
|
24
|
-
r_hh_function(in_las_folder, cell_size, Min_ws, lawn_range, out_folder, rprocesses)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if __name__ == '__main__':
|
|
28
|
-
start_time = time.time()
|
|
29
|
-
print('Hummock and Hollow detection from LiDAR process.\n'
|
|
30
|
-
'@ {}'.format(time.strftime("%d %b %Y %H:%M:%S", time.localtime())))
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
packages = ['lidR', 'rgrass', 'rlas', 'future',
|
|
34
|
-
'terra'] # ,'comprehenr','na.tools','sf','sp']#,'devtools','gdal']#,'fasterRaster']
|
|
35
|
-
check_r_packages_installation(packages)
|
|
36
|
-
|
|
37
|
-
print("Checking input parameters ...")
|
|
38
|
-
in_args, in_verbose = check_arguments()
|
|
39
|
-
|
|
40
|
-
in_las_folder = in_args.input["in_las_folder"]
|
|
41
|
-
try:
|
|
42
|
-
cell_size = float(in_args.input["cell_size"])
|
|
43
|
-
in_args.input["cell_size"] = cell_size
|
|
44
|
-
except ValueError:
|
|
45
|
-
print("Invalid input of cell_size, default value will be used")
|
|
46
|
-
in_args.input["cell_size"] = 1.0
|
|
47
|
-
|
|
48
|
-
try:
|
|
49
|
-
ws = float(in_args.input["Min_ws"])
|
|
50
|
-
in_args.input["Min_ws"] = ws
|
|
51
|
-
except ValueError:
|
|
52
|
-
print("Invalid input of circular diameter, default value will be used")
|
|
53
|
-
in_args.input["Min_ws"] = 3.0
|
|
54
|
-
try:
|
|
55
|
-
lawn_range = float(in_args.input["lawn_range"])
|
|
56
|
-
in_args.input["lawn_range"] = lawn_range
|
|
57
|
-
except ValueError:
|
|
58
|
-
print("Invalid input of range height of lawns, default value will be used")
|
|
59
|
-
in_args.input["lawn_range"] = 0.1
|
|
60
|
-
|
|
61
|
-
out_folder = in_args.input["out_folder"]
|
|
62
|
-
|
|
63
|
-
if not os.path.exists(in_las_folder):
|
|
64
|
-
print("Error! Cannot locate Las folder, please check.")
|
|
65
|
-
exit()
|
|
66
|
-
else:
|
|
67
|
-
found = False
|
|
68
|
-
for files in os.listdir(in_las_folder):
|
|
69
|
-
if files.endswith(".las") or files.endswith(".laz"):
|
|
70
|
-
found = True
|
|
71
|
-
break
|
|
72
|
-
if not found:
|
|
73
|
-
print("Error! Cannot locate input LAS file(s), please check!")
|
|
74
|
-
exit()
|
|
75
|
-
|
|
76
|
-
if not os.path.exists(out_folder):
|
|
77
|
-
print("Warning! Cannot locate output folder, It will be created.")
|
|
78
|
-
os.makedirs(out_folder)
|
|
79
|
-
|
|
80
|
-
print("Checking input parameters ... Done")
|
|
81
|
-
|
|
82
|
-
hh_raster(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
83
|
-
|
|
84
|
-
print('Hummock and Hollow detection from LiDAR process is done in {} seconds)'
|
|
85
|
-
.format(round(time.time() - start_time, 5)))
|
|
1
|
+
import math
|
|
2
|
+
import os
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
from beratools.tools.common import *
|
|
7
|
+
from beratools.tools.r_interface import *
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def hh_raster(callback, in_las_folder, Min_ws, lawn_range, cell_size, out_folder, processes, verbose):
|
|
11
|
+
rprocesses = r_processes(processes)
|
|
12
|
+
|
|
13
|
+
in_las_folder = in_las_folder.replace("\\", "/")
|
|
14
|
+
out_folder = out_folder.replace("\\", "/")
|
|
15
|
+
|
|
16
|
+
# assign R script file to local variable
|
|
17
|
+
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
18
|
+
# Defining the R script and loading the instance in Python
|
|
19
|
+
r['source'](Beratools_R_script)
|
|
20
|
+
# Loading the function defined in R script.
|
|
21
|
+
r_hh_function = robjects.globalenv['hh_function']
|
|
22
|
+
|
|
23
|
+
# Invoking the R function
|
|
24
|
+
r_hh_function(in_las_folder, cell_size, Min_ws, lawn_range, out_folder, rprocesses)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
if __name__ == '__main__':
|
|
28
|
+
start_time = time.time()
|
|
29
|
+
print('Hummock and Hollow detection from LiDAR process.\n'
|
|
30
|
+
'@ {}'.format(time.strftime("%d %b %Y %H:%M:%S", time.localtime())))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
packages = ['lidR', 'rgrass', 'rlas', 'future',
|
|
34
|
+
'terra'] # ,'comprehenr','na.tools','sf','sp']#,'devtools','gdal']#,'fasterRaster']
|
|
35
|
+
check_r_packages_installation(packages)
|
|
36
|
+
|
|
37
|
+
print("Checking input parameters ...")
|
|
38
|
+
in_args, in_verbose = check_arguments()
|
|
39
|
+
|
|
40
|
+
in_las_folder = in_args.input["in_las_folder"]
|
|
41
|
+
try:
|
|
42
|
+
cell_size = float(in_args.input["cell_size"])
|
|
43
|
+
in_args.input["cell_size"] = cell_size
|
|
44
|
+
except ValueError:
|
|
45
|
+
print("Invalid input of cell_size, default value will be used")
|
|
46
|
+
in_args.input["cell_size"] = 1.0
|
|
47
|
+
|
|
48
|
+
try:
|
|
49
|
+
ws = float(in_args.input["Min_ws"])
|
|
50
|
+
in_args.input["Min_ws"] = ws
|
|
51
|
+
except ValueError:
|
|
52
|
+
print("Invalid input of circular diameter, default value will be used")
|
|
53
|
+
in_args.input["Min_ws"] = 3.0
|
|
54
|
+
try:
|
|
55
|
+
lawn_range = float(in_args.input["lawn_range"])
|
|
56
|
+
in_args.input["lawn_range"] = lawn_range
|
|
57
|
+
except ValueError:
|
|
58
|
+
print("Invalid input of range height of lawns, default value will be used")
|
|
59
|
+
in_args.input["lawn_range"] = 0.1
|
|
60
|
+
|
|
61
|
+
out_folder = in_args.input["out_folder"]
|
|
62
|
+
|
|
63
|
+
if not os.path.exists(in_las_folder):
|
|
64
|
+
print("Error! Cannot locate Las folder, please check.")
|
|
65
|
+
exit()
|
|
66
|
+
else:
|
|
67
|
+
found = False
|
|
68
|
+
for files in os.listdir(in_las_folder):
|
|
69
|
+
if files.endswith(".las") or files.endswith(".laz"):
|
|
70
|
+
found = True
|
|
71
|
+
break
|
|
72
|
+
if not found:
|
|
73
|
+
print("Error! Cannot locate input LAS file(s), please check!")
|
|
74
|
+
exit()
|
|
75
|
+
|
|
76
|
+
if not os.path.exists(out_folder):
|
|
77
|
+
print("Warning! Cannot locate output folder, It will be created.")
|
|
78
|
+
os.makedirs(out_folder)
|
|
79
|
+
|
|
80
|
+
print("Checking input parameters ... Done")
|
|
81
|
+
|
|
82
|
+
hh_raster(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
83
|
+
|
|
84
|
+
print('Hummock and Hollow detection from LiDAR process is done in {} seconds)'
|
|
85
|
+
.format(round(time.time() - start_time, 5)))
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
import math
|
|
2
|
-
import os
|
|
3
|
-
import time
|
|
4
|
-
|
|
5
|
-
from beratools.tools.common import *
|
|
6
|
-
from beratools.tools.r_interface import *
|
|
7
|
-
|
|
8
|
-
def hh_raster(callback, in_raster, Min_ws, lawn_range, cell_size, out_folder, processes, verbose):
|
|
9
|
-
rprocesses = r_processes(processes)
|
|
10
|
-
|
|
11
|
-
in_raster = in_raster.replace("\\", "/")
|
|
12
|
-
out_folder = out_folder.replace("\\", "/")
|
|
13
|
-
|
|
14
|
-
# assign R script file to local variable
|
|
15
|
-
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
16
|
-
# Defining the R script and loading the instance in Python
|
|
17
|
-
r['source'](Beratools_R_script)
|
|
18
|
-
# Loading the function defined in R script.
|
|
19
|
-
r_hh_function = robjects.globalenv['hh_function_byraster']
|
|
20
|
-
|
|
21
|
-
# Invoking the R function
|
|
22
|
-
r_hh_function(in_raster, cell_size, Min_ws, lawn_range, out_folder, rprocesses)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if __name__ == '__main__':
|
|
26
|
-
start_time = time.time()
|
|
27
|
-
print('Hummock and Hollow detection from DTM raster process.\n'
|
|
28
|
-
'@ {}'.format(time.strftime("%d %b %Y %H:%M:%S", time.localtime())))
|
|
29
|
-
|
|
30
|
-
packages = ['terra'] # ,'comprehenr','na.tools','sf','sp']#,'devtools','gdal']#,'fasterRaster']
|
|
31
|
-
check_r_packages_installation(packages)
|
|
32
|
-
|
|
33
|
-
print("Checking input parameters ...")
|
|
34
|
-
in_args, in_verbose = check_arguments()
|
|
35
|
-
in_raster = in_args.input["in_raster"]
|
|
36
|
-
try:
|
|
37
|
-
cell_size = float(in_args.input["cell_size"])
|
|
38
|
-
in_args.input["cell_size"] = cell_size
|
|
39
|
-
except ValueError:
|
|
40
|
-
print("Invalid input of cell_size, default value will be used")
|
|
41
|
-
in_args.input["cell_size"] = 1.0
|
|
42
|
-
|
|
43
|
-
try:
|
|
44
|
-
ws = float(in_args.input["Min_ws"])
|
|
45
|
-
in_args.input["Min_ws"] = ws
|
|
46
|
-
except ValueError:
|
|
47
|
-
print("Invalid input of circular diameter, default value will be used")
|
|
48
|
-
in_args.input["Min_ws"] = 3.0
|
|
49
|
-
try:
|
|
50
|
-
lawn_range = float(in_args.input["lawn_range"])
|
|
51
|
-
in_args.input["lawn_range"] = lawn_range
|
|
52
|
-
except ValueError:
|
|
53
|
-
print("Invalid input of range height of lawns, default value will be used")
|
|
54
|
-
in_args.input["lawn_range"] = 0.1
|
|
55
|
-
|
|
56
|
-
out_folder = in_args.input["out_folder"]
|
|
57
|
-
|
|
58
|
-
if not os.path.isfile(in_raster):
|
|
59
|
-
print("Error! Cannot locate raster folder, please check.")
|
|
60
|
-
exit()
|
|
61
|
-
|
|
62
|
-
if not os.path.exists(out_folder):
|
|
63
|
-
print("Warning! Cannot locate output folder, It will be created.")
|
|
64
|
-
os.makedirs(out_folder)
|
|
65
|
-
|
|
66
|
-
print("Checking input parameters ... Done")
|
|
67
|
-
|
|
68
|
-
hh_raster(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
69
|
-
|
|
70
|
-
print('Hummock and Hollow detection from DTM raster process is done in {} seconds)'
|
|
71
|
-
.format(round(time.time() - start_time, 5)))
|
|
1
|
+
import math
|
|
2
|
+
import os
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
from beratools.tools.common import *
|
|
6
|
+
from beratools.tools.r_interface import *
|
|
7
|
+
|
|
8
|
+
def hh_raster(callback, in_raster, Min_ws, lawn_range, cell_size, out_folder, processes, verbose):
|
|
9
|
+
rprocesses = r_processes(processes)
|
|
10
|
+
|
|
11
|
+
in_raster = in_raster.replace("\\", "/")
|
|
12
|
+
out_folder = out_folder.replace("\\", "/")
|
|
13
|
+
|
|
14
|
+
# assign R script file to local variable
|
|
15
|
+
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
16
|
+
# Defining the R script and loading the instance in Python
|
|
17
|
+
r['source'](Beratools_R_script)
|
|
18
|
+
# Loading the function defined in R script.
|
|
19
|
+
r_hh_function = robjects.globalenv['hh_function_byraster']
|
|
20
|
+
|
|
21
|
+
# Invoking the R function
|
|
22
|
+
r_hh_function(in_raster, cell_size, Min_ws, lawn_range, out_folder, rprocesses)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
if __name__ == '__main__':
|
|
26
|
+
start_time = time.time()
|
|
27
|
+
print('Hummock and Hollow detection from DTM raster process.\n'
|
|
28
|
+
'@ {}'.format(time.strftime("%d %b %Y %H:%M:%S", time.localtime())))
|
|
29
|
+
|
|
30
|
+
packages = ['terra'] # ,'comprehenr','na.tools','sf','sp']#,'devtools','gdal']#,'fasterRaster']
|
|
31
|
+
check_r_packages_installation(packages)
|
|
32
|
+
|
|
33
|
+
print("Checking input parameters ...")
|
|
34
|
+
in_args, in_verbose = check_arguments()
|
|
35
|
+
in_raster = in_args.input["in_raster"]
|
|
36
|
+
try:
|
|
37
|
+
cell_size = float(in_args.input["cell_size"])
|
|
38
|
+
in_args.input["cell_size"] = cell_size
|
|
39
|
+
except ValueError:
|
|
40
|
+
print("Invalid input of cell_size, default value will be used")
|
|
41
|
+
in_args.input["cell_size"] = 1.0
|
|
42
|
+
|
|
43
|
+
try:
|
|
44
|
+
ws = float(in_args.input["Min_ws"])
|
|
45
|
+
in_args.input["Min_ws"] = ws
|
|
46
|
+
except ValueError:
|
|
47
|
+
print("Invalid input of circular diameter, default value will be used")
|
|
48
|
+
in_args.input["Min_ws"] = 3.0
|
|
49
|
+
try:
|
|
50
|
+
lawn_range = float(in_args.input["lawn_range"])
|
|
51
|
+
in_args.input["lawn_range"] = lawn_range
|
|
52
|
+
except ValueError:
|
|
53
|
+
print("Invalid input of range height of lawns, default value will be used")
|
|
54
|
+
in_args.input["lawn_range"] = 0.1
|
|
55
|
+
|
|
56
|
+
out_folder = in_args.input["out_folder"]
|
|
57
|
+
|
|
58
|
+
if not os.path.isfile(in_raster):
|
|
59
|
+
print("Error! Cannot locate raster folder, please check.")
|
|
60
|
+
exit()
|
|
61
|
+
|
|
62
|
+
if not os.path.exists(out_folder):
|
|
63
|
+
print("Warning! Cannot locate output folder, It will be created.")
|
|
64
|
+
os.makedirs(out_folder)
|
|
65
|
+
|
|
66
|
+
print("Checking input parameters ... Done")
|
|
67
|
+
|
|
68
|
+
hh_raster(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
69
|
+
|
|
70
|
+
print('Hummock and Hollow detection from DTM raster process is done in {} seconds)'
|
|
71
|
+
.format(round(time.time() - start_time, 5)))
|
beratools/tools/rpy_las_info.py
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import time
|
|
3
|
-
|
|
4
|
-
from beratools.tools.common import *
|
|
5
|
-
from beratools.tools.r_interface import *
|
|
6
|
-
|
|
7
|
-
def las_info(callback, in_las_folder, processes, verbose):
|
|
8
|
-
rprocesses = r_processes(processes)
|
|
9
|
-
# assign R script file to local variable
|
|
10
|
-
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
11
|
-
# Defining the R script and loading the instance in Python
|
|
12
|
-
r['source'](Beratools_R_script)
|
|
13
|
-
# Loading the function defined in R script.
|
|
14
|
-
r_normalized_lidar = robjects.globalenv['las_info']
|
|
15
|
-
|
|
16
|
-
# Invoking the R function
|
|
17
|
-
r_normalized_lidar(in_las_folder, rprocesses)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if __name__ == '__main__':
|
|
21
|
-
start_time = time.time()
|
|
22
|
-
print('LiDAR data information..\n @ {}'
|
|
23
|
-
.format(time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())))
|
|
24
|
-
|
|
25
|
-
packages = ['lidR', 'future']
|
|
26
|
-
check_r_packages_installation(packages)
|
|
27
|
-
|
|
28
|
-
print("Checking input parameters....")
|
|
29
|
-
in_args, in_verbose = check_arguments()
|
|
30
|
-
|
|
31
|
-
in_las_folder = in_args.input["in_las_folder"]
|
|
32
|
-
|
|
33
|
-
if not os.path.exists(in_las_folder):
|
|
34
|
-
print("Error! Cannot locate Las folder, please check.")
|
|
35
|
-
exit()
|
|
36
|
-
else:
|
|
37
|
-
found = False
|
|
38
|
-
for files in os.listdir(in_las_folder):
|
|
39
|
-
if files.endswith(".las") or files.endswith(".laz"):
|
|
40
|
-
found = True
|
|
41
|
-
break
|
|
42
|
-
if not found:
|
|
43
|
-
print("Error! Cannot locate input LAS file(s), please check!")
|
|
44
|
-
exit()
|
|
45
|
-
|
|
46
|
-
print("Checking input parameters....Done")
|
|
47
|
-
|
|
48
|
-
las_info(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
49
|
-
|
|
50
|
-
print('Display LiDAR data information is done in {} seconds)'
|
|
51
|
-
.format(round(time.time() - start_time, 5)))
|
|
1
|
+
import os
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
from beratools.tools.common import *
|
|
5
|
+
from beratools.tools.r_interface import *
|
|
6
|
+
|
|
7
|
+
def las_info(callback, in_las_folder, processes, verbose):
|
|
8
|
+
rprocesses = r_processes(processes)
|
|
9
|
+
# assign R script file to local variable
|
|
10
|
+
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
11
|
+
# Defining the R script and loading the instance in Python
|
|
12
|
+
r['source'](Beratools_R_script)
|
|
13
|
+
# Loading the function defined in R script.
|
|
14
|
+
r_normalized_lidar = robjects.globalenv['las_info']
|
|
15
|
+
|
|
16
|
+
# Invoking the R function
|
|
17
|
+
r_normalized_lidar(in_las_folder, rprocesses)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
if __name__ == '__main__':
|
|
21
|
+
start_time = time.time()
|
|
22
|
+
print('LiDAR data information..\n @ {}'
|
|
23
|
+
.format(time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())))
|
|
24
|
+
|
|
25
|
+
packages = ['lidR', 'future']
|
|
26
|
+
check_r_packages_installation(packages)
|
|
27
|
+
|
|
28
|
+
print("Checking input parameters....")
|
|
29
|
+
in_args, in_verbose = check_arguments()
|
|
30
|
+
|
|
31
|
+
in_las_folder = in_args.input["in_las_folder"]
|
|
32
|
+
|
|
33
|
+
if not os.path.exists(in_las_folder):
|
|
34
|
+
print("Error! Cannot locate Las folder, please check.")
|
|
35
|
+
exit()
|
|
36
|
+
else:
|
|
37
|
+
found = False
|
|
38
|
+
for files in os.listdir(in_las_folder):
|
|
39
|
+
if files.endswith(".las") or files.endswith(".laz"):
|
|
40
|
+
found = True
|
|
41
|
+
break
|
|
42
|
+
if not found:
|
|
43
|
+
print("Error! Cannot locate input LAS file(s), please check!")
|
|
44
|
+
exit()
|
|
45
|
+
|
|
46
|
+
print("Checking input parameters....Done")
|
|
47
|
+
|
|
48
|
+
las_info(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
49
|
+
|
|
50
|
+
print('Display LiDAR data information is done in {} seconds)'
|
|
51
|
+
.format(round(time.time() - start_time, 5)))
|
beratools/tools/rpy_laz2las.py
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import time
|
|
3
|
-
|
|
4
|
-
from beratools.tools.common import *
|
|
5
|
-
from beratools.tools.r_interface import *
|
|
6
|
-
|
|
7
|
-
def laz2las(callback, in_las_folder, out_folder, processes, verbose):
|
|
8
|
-
rprocesses = r_processes(processes)
|
|
9
|
-
|
|
10
|
-
# assign R script file to local variable
|
|
11
|
-
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
12
|
-
# Defining the R script and loading the instance in Python
|
|
13
|
-
r['source'](Beratools_R_script)
|
|
14
|
-
# Loading the function defined in R script.
|
|
15
|
-
r_laz2las = robjects.globalenv['laz2las']
|
|
16
|
-
|
|
17
|
-
# Invoking the R function
|
|
18
|
-
r_laz2las(in_las_folder, out_folder, rprocesses)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if __name__ == '__main__':
|
|
22
|
-
start_time = time.time()
|
|
23
|
-
print('Unzip liDAR data processing..\n @ {}'
|
|
24
|
-
.format(time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())))
|
|
25
|
-
|
|
26
|
-
packages = ['lidR', 'future']
|
|
27
|
-
check_r_packages_installation(packages)
|
|
28
|
-
|
|
29
|
-
print("Checking input parameters....")
|
|
30
|
-
in_args, in_verbose = check_arguments()
|
|
31
|
-
|
|
32
|
-
in_las_folder = in_args.input["in_las_folder"]
|
|
33
|
-
out_folder = in_args.input["out_folder"]
|
|
34
|
-
|
|
35
|
-
check_las_files_existence(in_las_folder)
|
|
36
|
-
|
|
37
|
-
print("Checking input parameters....Done")
|
|
38
|
-
laz2las(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
39
|
-
print('Unzip liDAR data processing is done in {} seconds)'
|
|
40
|
-
.format(round(time.time() - start_time, 5)))
|
|
1
|
+
import os
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
from beratools.tools.common import *
|
|
5
|
+
from beratools.tools.r_interface import *
|
|
6
|
+
|
|
7
|
+
def laz2las(callback, in_las_folder, out_folder, processes, verbose):
|
|
8
|
+
rprocesses = r_processes(processes)
|
|
9
|
+
|
|
10
|
+
# assign R script file to local variable
|
|
11
|
+
Beratools_R_script = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Beratools_r_script.r')
|
|
12
|
+
# Defining the R script and loading the instance in Python
|
|
13
|
+
r['source'](Beratools_R_script)
|
|
14
|
+
# Loading the function defined in R script.
|
|
15
|
+
r_laz2las = robjects.globalenv['laz2las']
|
|
16
|
+
|
|
17
|
+
# Invoking the R function
|
|
18
|
+
r_laz2las(in_las_folder, out_folder, rprocesses)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if __name__ == '__main__':
|
|
22
|
+
start_time = time.time()
|
|
23
|
+
print('Unzip liDAR data processing..\n @ {}'
|
|
24
|
+
.format(time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime())))
|
|
25
|
+
|
|
26
|
+
packages = ['lidR', 'future']
|
|
27
|
+
check_r_packages_installation(packages)
|
|
28
|
+
|
|
29
|
+
print("Checking input parameters....")
|
|
30
|
+
in_args, in_verbose = check_arguments()
|
|
31
|
+
|
|
32
|
+
in_las_folder = in_args.input["in_las_folder"]
|
|
33
|
+
out_folder = in_args.input["out_folder"]
|
|
34
|
+
|
|
35
|
+
check_las_files_existence(in_las_folder)
|
|
36
|
+
|
|
37
|
+
print("Checking input parameters....Done")
|
|
38
|
+
laz2las(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
39
|
+
print('Unzip liDAR data processing is done in {} seconds)'
|
|
40
|
+
.format(round(time.time() - start_time, 5)))
|