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
beratools/tools/lapis_all.py
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
from random import random
|
|
3
|
-
import time
|
|
4
|
-
from multiprocessing.pool import Pool
|
|
5
|
-
from numpy import mean
|
|
6
|
-
from beratools.tools.common import *
|
|
7
|
-
import json
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class OperationCancelledException(Exception):
|
|
11
|
-
pass
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def lapis_all(args, callback=print, processes=None, verbose=None):
|
|
15
|
-
lapis_path = '../third_party/Lapis_0_8/Lapis.exe'
|
|
16
|
-
lapis_path = Path(__file__).parent.joinpath(lapis_path).resolve()
|
|
17
|
-
ini_file = Path(__file__).parents[2].joinpath(r'.\.data\lapis.ini').resolve().as_posix()
|
|
18
|
-
|
|
19
|
-
arg_parsed = json.loads(args)
|
|
20
|
-
in_dtm = arg_parsed['in_dtm']
|
|
21
|
-
in_las = arg_parsed['in_las']
|
|
22
|
-
out_dir = arg_parsed['out_dir']
|
|
23
|
-
|
|
24
|
-
f = open(ini_file, 'w')
|
|
25
|
-
f.write('#Data options\n')
|
|
26
|
-
f.write('dem=' + in_dtm + '\n')
|
|
27
|
-
f.write('dem-units = unspecified' + '\n')
|
|
28
|
-
f.write('dem-algo = raster' + '\n')
|
|
29
|
-
f.write('las=' + in_las + '\n')
|
|
30
|
-
f.write('las-units=unspecified' + '\n')
|
|
31
|
-
f.write('output=' + out_dir + '\n')
|
|
32
|
-
|
|
33
|
-
f.write('\n # Computer-specific options\n')
|
|
34
|
-
f.write('thread=50' + '\n')
|
|
35
|
-
f.write('bench=' + '\n')
|
|
36
|
-
|
|
37
|
-
f.write('\n # Processing options\n')
|
|
38
|
-
f.write('xres=0.15' + '\n')
|
|
39
|
-
f.write('yres=0.15' + '\n')
|
|
40
|
-
f.write('xorigin=0' + '\n')
|
|
41
|
-
f.write('yorigin=0' + '\n')
|
|
42
|
-
f.write('csm-cellsize=0.15' + '\n')
|
|
43
|
-
f.write('footprint=0.1' + '\n')
|
|
44
|
-
f.write('smooth=1' + '\n')
|
|
45
|
-
f.write('minht=-8' + '\n')
|
|
46
|
-
f.write('maxht=100' + '\n')
|
|
47
|
-
f.write('class=~7, 9, 18' + '\n')
|
|
48
|
-
f.write('max-scan-angle=32' + '\n')
|
|
49
|
-
f.write('user-units=meters' + '\n')
|
|
50
|
-
f.write('canopy=3' + '\n')
|
|
51
|
-
f.write('strata=0.5, 1, 2, 4, 8, 16, 32, 48, 64,' + '\n')
|
|
52
|
-
f.write('min-tao-dist=1' + '\n')
|
|
53
|
-
f.write('id-algo=highpoint' + '\n')
|
|
54
|
-
f.write('seg-algo=watershed' + '\n')
|
|
55
|
-
f.write('topo-scale=500, 1000, 2000,' + '\n')
|
|
56
|
-
f.write('fine-int=' + '\n')
|
|
57
|
-
|
|
58
|
-
args = lapis_path.as_posix() + ' --ini-file' + ' ' + ini_file
|
|
59
|
-
|
|
60
|
-
callback('Lapis parameters returned.')
|
|
61
|
-
return args
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
# task executed in a worker process
|
|
65
|
-
def worker(task_data):
|
|
66
|
-
# report a message
|
|
67
|
-
value = mean(task_data)
|
|
68
|
-
print(f'Task {len(task_data)} with {value} executed', flush=True)
|
|
69
|
-
|
|
70
|
-
# block for a moment
|
|
71
|
-
time.sleep(value * 10)
|
|
72
|
-
|
|
73
|
-
# return the generated value
|
|
74
|
-
return value
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
# protect the entry point
|
|
78
|
-
def execute_multiprocessing():
|
|
79
|
-
# create and configure the process pool
|
|
80
|
-
data = [[random() for n in range(100)] for i in range(300)]
|
|
81
|
-
try:
|
|
82
|
-
total_steps = 300
|
|
83
|
-
with Pool() as pool:
|
|
84
|
-
step = 0
|
|
85
|
-
# execute tasks in order, process results out of order
|
|
86
|
-
for result in pool.imap_unordered(worker, data):
|
|
87
|
-
print(f'Got result: {result}', flush=True)
|
|
88
|
-
step += 1
|
|
89
|
-
print(step)
|
|
90
|
-
print('%{}'.format(step/total_steps*100))
|
|
91
|
-
|
|
92
|
-
except OperationCancelledException:
|
|
93
|
-
print("Operation cancelled")
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if __name__ == '__main__':
|
|
97
|
-
# in_args, in_verbose = check_arguments()
|
|
98
|
-
# start_time = time.time()
|
|
99
|
-
# lapis_all(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
100
|
-
#
|
|
101
|
-
# print('Elapsed time: {}'.format(time.time() - start_time))
|
|
102
|
-
|
|
103
|
-
pass
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import time
|
|
2
|
-
from xrspatial import convolution
|
|
3
|
-
|
|
4
|
-
from beratools.tools.common import *
|
|
5
|
-
from beratools.core.algo_centerline import *
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def LCP_centerline(callback, in_line, in_chm, line_radius,
|
|
9
|
-
proc_segments, out_line, processes, verbose):
|
|
10
|
-
if not compare_crs(vector_crs(in_line), raster_crs(in_chm)):
|
|
11
|
-
print("Line and CHM have different spatial references, please check.")
|
|
12
|
-
return
|
|
13
|
-
|
|
14
|
-
# Read input line features
|
|
15
|
-
layer_crs = None
|
|
16
|
-
schema = None
|
|
17
|
-
input_lines = []
|
|
18
|
-
|
|
19
|
-
df, found = chk_df_multipart(gpd.GeoDataFrame.from_file(in_line), 'MultiLineString')
|
|
20
|
-
if found:
|
|
21
|
-
df.to_file(in_line)
|
|
22
|
-
else:
|
|
23
|
-
del df, found
|
|
24
|
-
|
|
25
|
-
with fiona.open(in_line) as open_line_file:
|
|
26
|
-
layer_crs = open_line_file.crs
|
|
27
|
-
schema = open_line_file.meta['schema']
|
|
28
|
-
for line in open_line_file:
|
|
29
|
-
if line.geometry:
|
|
30
|
-
if line.geometry['type'] != 'MultiLineString':
|
|
31
|
-
input_lines.append([line.geometry, line.properties])
|
|
32
|
-
else:
|
|
33
|
-
print('MultiLineString found.')
|
|
34
|
-
geoms = shape(line['geometry']).geoms
|
|
35
|
-
for item in geoms:
|
|
36
|
-
line_part = fiona.Geometry.from_dict(item)
|
|
37
|
-
if line_part:
|
|
38
|
-
input_lines.append([line_part, line.properties])
|
|
39
|
-
else:
|
|
40
|
-
print(f'Line {line.id} has empty geometry.')
|
|
41
|
-
|
|
42
|
-
if proc_segments:
|
|
43
|
-
# split line segments at vertices
|
|
44
|
-
input_lines_temp = []
|
|
45
|
-
for line in input_lines:
|
|
46
|
-
line_seg = line[0]
|
|
47
|
-
line_prop = line[1]
|
|
48
|
-
line_segs = segments(line_seg.coordinates)
|
|
49
|
-
line_feats = [(line, line_prop) for line in line_segs]
|
|
50
|
-
if line_segs:
|
|
51
|
-
input_lines_temp.extend(line_feats)
|
|
52
|
-
|
|
53
|
-
input_lines = input_lines_temp
|
|
54
|
-
|
|
55
|
-
# Process lines
|
|
56
|
-
all_lines = []
|
|
57
|
-
i = 0
|
|
58
|
-
for line in input_lines:
|
|
59
|
-
all_lines.append((line, line_radius, in_chm, i))
|
|
60
|
-
i += 1
|
|
61
|
-
|
|
62
|
-
print('{} lines to be processed.'.format(len(all_lines)))
|
|
63
|
-
|
|
64
|
-
feat_geoms = []
|
|
65
|
-
feat_props = []
|
|
66
|
-
center_line_geoms = []
|
|
67
|
-
corridor_poly_list = []
|
|
68
|
-
result = execute_multiprocessing(process_single_line, all_lines, 'Centerline',
|
|
69
|
-
processes, 1, verbose=verbose)
|
|
70
|
-
|
|
71
|
-
for item in result:
|
|
72
|
-
geom = item[0]
|
|
73
|
-
prop = item[1]
|
|
74
|
-
center_line = item[2]
|
|
75
|
-
corridor_poly = item[3]
|
|
76
|
-
|
|
77
|
-
if geom and prop:
|
|
78
|
-
feat_geoms.append(geom)
|
|
79
|
-
feat_props.append(prop)
|
|
80
|
-
center_line_geoms.append(center_line)
|
|
81
|
-
corridor_poly_list.append(corridor_poly)
|
|
82
|
-
|
|
83
|
-
out_least_cost_path = Path(out_line)
|
|
84
|
-
out_least_cost_path = out_least_cost_path.with_stem(out_least_cost_path.stem + '_least_cost_path')
|
|
85
|
-
schema['properties']['status'] = 'int'
|
|
86
|
-
|
|
87
|
-
save_features_to_shapefile(out_least_cost_path.as_posix(), layer_crs, feat_geoms, feat_props, schema)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def process_single_line(line_args):
|
|
91
|
-
line = line_args[0][0]
|
|
92
|
-
prop = line_args[0][1]
|
|
93
|
-
line_radius = line_args[1]
|
|
94
|
-
in_chm_raster = line_args[2]
|
|
95
|
-
line_id = line_args[3]
|
|
96
|
-
seed_line = shape(line) # LineString
|
|
97
|
-
line_radius = float(line_radius)
|
|
98
|
-
|
|
99
|
-
chm_clip, out_meta = clip_raster(in_chm_raster, seed_line, line_radius)
|
|
100
|
-
in_chm = np.squeeze(chm_clip, axis=0)
|
|
101
|
-
cell_x, cell_y = out_meta['transform'][0], -out_meta['transform'][4]
|
|
102
|
-
kernel = convolution.circle_kernel(cell_x, cell_y, 2.5)
|
|
103
|
-
dyn_canopy_ndarray = dyn_np_cc_map(in_chm, FP_CORRIDOR_THRESHOLD, BT_NODATA)
|
|
104
|
-
cc_std, cc_mean = dyn_fs_raster_stdmean(dyn_canopy_ndarray, kernel, BT_NODATA)
|
|
105
|
-
cc_smooth = dyn_smooth_cost(dyn_canopy_ndarray, 2.5, [cell_x, cell_y])
|
|
106
|
-
avoidance = max(min(float(0.4), 1), 0)
|
|
107
|
-
cost_clip = dyn_np_cost_raster(dyn_canopy_ndarray, cc_mean, cc_std,
|
|
108
|
-
cc_smooth, 0.4, 1.5)
|
|
109
|
-
|
|
110
|
-
# if CL_USE_SKIMAGE_GRAPH:
|
|
111
|
-
# skimage shortest path (Cost Array elements with infinite or negative costs will simply be ignored.)
|
|
112
|
-
negative_cost_clip = np.where(np.isnan(cost_clip), -9999, cost_clip)
|
|
113
|
-
lc_path = LCP_skimage_mcp_connect(negative_cost_clip, out_meta, seed_line)
|
|
114
|
-
|
|
115
|
-
if lc_path:
|
|
116
|
-
lc_path_coords = lc_path.coords
|
|
117
|
-
else:
|
|
118
|
-
lc_path_coords = []
|
|
119
|
-
|
|
120
|
-
# search for centerline
|
|
121
|
-
if len(lc_path_coords) < 2:
|
|
122
|
-
print('No least cost path detected, use input line.')
|
|
123
|
-
prop['status'] = CenterlineStatus.FAILED.value
|
|
124
|
-
return seed_line, prop, seed_line, None
|
|
125
|
-
|
|
126
|
-
# get corridor raster
|
|
127
|
-
out_transform = out_meta['transform']
|
|
128
|
-
transformer = rasterio.transform.AffineTransformer(out_transform)
|
|
129
|
-
cell_size = (out_transform[0], -out_transform[4])
|
|
130
|
-
|
|
131
|
-
x1, y1 = lc_path_coords[0]
|
|
132
|
-
x2, y2 = lc_path_coords[-1]
|
|
133
|
-
source = [transformer.rowcol(x1, y1)]
|
|
134
|
-
destination = [transformer.rowcol(x2, y2)]
|
|
135
|
-
corridor_thresh_cl = corridor_raster(negative_cost_clip, out_meta, source, destination,
|
|
136
|
-
cell_size, FP_CORRIDOR_THRESHOLD)
|
|
137
|
-
|
|
138
|
-
# find contiguous corridor polygon and extract centerline
|
|
139
|
-
df = gpd.GeoDataFrame(geometry=[seed_line], crs=out_meta['crs'])
|
|
140
|
-
corridor_poly_gpd = find_corridor_polygon(corridor_thresh_cl, out_transform, df)
|
|
141
|
-
center_line, status = find_centerline(corridor_poly_gpd.geometry.iloc[0], lc_path)
|
|
142
|
-
prop['status'] = status.value
|
|
143
|
-
|
|
144
|
-
print(" Searching centerline: line {} ".format(line_id), flush=True)
|
|
145
|
-
return lc_path, prop, center_line, corridor_poly_gpd
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if __name__ == '__main__':
|
|
149
|
-
in_args, in_verbose = check_arguments()
|
|
150
|
-
start_time = time.time()
|
|
151
|
-
LCP_centerline(print, **in_args.input, processes=int(in_args.processes), verbose=in_verbose)
|
|
152
|
-
print('Elapsed time: {}'.format(time.time() - start_time))
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: BERATools
|
|
3
|
-
Version: 0.2.0
|
|
4
|
-
Summary: An advanced forest line feature analysis platform
|
|
5
|
-
Project-URL: Homepage, https://github.com/RichardQZeng/BTools
|
|
6
|
-
Author-email: AppliedGRG <appliedgrg@gmail.com>, Richard Zeng <richardqzeng@gmail.com>
|
|
7
|
-
License: MIT License
|
|
8
|
-
|
|
9
|
-
Copyright (c) 2023, AppliedGRG
|
|
10
|
-
|
|
11
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
13
|
-
in the Software without restriction, including without limitation the rights
|
|
14
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
16
|
-
furnished to do so, subject to the following conditions:
|
|
17
|
-
|
|
18
|
-
The above copyright notice and this permission notice shall be included in all
|
|
19
|
-
copies or substantial portions of the Software.
|
|
20
|
-
|
|
21
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
-
SOFTWARE.
|
|
28
|
-
|
|
29
|
-
License-File: LICENSE
|
|
30
|
-
Keywords: BERA,Line
|
|
31
|
-
Classifier: Development Status :: 2 - Pre-Alpha
|
|
32
|
-
Classifier: Intended Audience :: Developers
|
|
33
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
34
|
-
Classifier: Natural Language :: English
|
|
35
|
-
Classifier: Programming Language :: Python :: 3
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
37
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
38
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
39
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
40
|
-
Requires-Python: >=3.9
|
|
41
|
-
Requires-Dist: dask
|
|
42
|
-
Requires-Dist: distributed
|
|
43
|
-
Requires-Dist: geopandas
|
|
44
|
-
Requires-Dist: label-centerlines
|
|
45
|
-
Requires-Dist: pip
|
|
46
|
-
Requires-Dist: psutil
|
|
47
|
-
Requires-Dist: pyogrio>=0.9.0
|
|
48
|
-
Requires-Dist: pyqt5
|
|
49
|
-
Requires-Dist: rioxarray
|
|
50
|
-
Requires-Dist: rpy2
|
|
51
|
-
Requires-Dist: scikit-image>=0.24.0
|
|
52
|
-
Requires-Dist: xarray-spatial
|
|
53
|
-
Description-Content-Type: text/markdown
|
|
54
|
-
|
|
55
|
-
- HTML documentation is generated from .rst files with Sphinx
|
|
56
|
-
|
|
57
|
-
$ sphinx-build -b html ./sphinx/rst OutDir/sphinx/html
|
|
58
|
-
Or use the target doc in the cmake build system
|
|
59
|
-
$ make doc
|
|
60
|
-
|
|
61
|
-
Sphinx setup:
|
|
62
|
-
Please follow the http://sphinx-doc.org/latest/install.html guide.
|
|
63
|
-
|
beratools-0.2.0.dist-info/RECORD
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
beratools/__init__.py,sha256=Eai5NoQD_Llw8jD85r1qdEt2dxM6pFIOfwp9qoCynOA,254
|
|
2
|
-
beratools/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
beratools/core/algo_centerline.py,sha256=jOZRuQp8db1Nc6_WJ18VupFg1QiA0cZ7ndrm1sgmzYk,12452
|
|
4
|
-
beratools/core/constants.py,sha256=0lVdKcKFyBE2Ym-8EhgP6vjM9fvKKs4HNk9jOAvROeY,1877
|
|
5
|
-
beratools/core/dijkstra_algorithm.py,sha256=krIQTu9pjMJGpJR5ZyOsrfnZFQ8F1sU959cLF7rVTp8,15540
|
|
6
|
-
beratools/core/logger.py,sha256=FB4VqwyGRj07o7jMD27KELgFRl3cPt20ytKmak5lLJc,2811
|
|
7
|
-
beratools/core/tool_base.py,sha256=XL8feNupBXIG8WBNZsOMrXab5yVlusOepuJLIfegqNo,4407
|
|
8
|
-
beratools/gui/__init__.py,sha256=4OpdKTrS7OPMTmiJ3mvgvXaxxyHAWuni1Al1GwPgySw,235
|
|
9
|
-
beratools/gui/batch_processing_dlg.py,sha256=JbW7TMXWkXXgRUK_01IzcqzIXpc3k25Lu-fX7TDIXX0,18818
|
|
10
|
-
beratools/gui/beratools.json,sha256=sL2UB0X9qSZYxNadVWIcnpHeO0hjK3bXWlLoNOLoKBM,128858
|
|
11
|
-
beratools/gui/bt_data.py,sha256=y35W5ApjcGi_FSG24JihzSj7IxiMf1EZ1Lg09cHL5g4,17671
|
|
12
|
-
beratools/gui/bt_gui_main.py,sha256=pn3g4JF32IorbQwUIPJ7-BaQ8Ssb6z4xvdEGCtFEBVc,24524
|
|
13
|
-
beratools/gui/cli.py,sha256=0ILxYciDt9gH8cOKpeZb_2Bpwpr-YEWMIwyslndLhFU,440
|
|
14
|
-
beratools/gui/gui.json,sha256=y5WVe_dHSK5AJa3fzCbVY_FXlWuAharVeC3XtWglGRg,336
|
|
15
|
-
beratools/gui/map_window.py,sha256=5UIESx46dHDRs4TDyMdxhMuDU7ZRcpoKrCYw4s7iBNA,5515
|
|
16
|
-
beratools/gui/tool_widgets.py,sha256=OPeURzYQeVXUdVv8bsbAldHouxoOf9NfpqEb0E8lXBI,17656
|
|
17
|
-
beratools/gui/img/BERALogo.png,sha256=hnGLSL7Jv2ljDn6Z8ad5ekzH9k1PEuq7xe7Hh8bXZkE,6660
|
|
18
|
-
beratools/gui/img/closed.gif,sha256=T9BBGl286-FdSRYbWVt68HwPRF0geWoowtBzeYsk_bI,592
|
|
19
|
-
beratools/gui/img/closed.png,sha256=FRSAh3wzASowFUEt88zHhk1BQmwRbjoCs50Ff8KpJNQ,311
|
|
20
|
-
beratools/gui/img/open.gif,sha256=o8LL1OaDNkQ0Gcc9dO-1f1UZFAQ3ALc4svtqiUuWJPY,1062
|
|
21
|
-
beratools/gui/img/open.png,sha256=v0OOwfTNGMmtdFbffCbxdYLaNZeRC9Cy5whAwi71oVw,524
|
|
22
|
-
beratools/gui/img/tool.gif,sha256=2KGcUI_b-qFdrJJhgbx9pMZ8pExX7zH8nYvweRiQs6U,555
|
|
23
|
-
beratools/gui/img/tool.png,sha256=35Txwum2l_aKeazF_I97ZaZAKHsrKQCGG-LZxEIFyZw,714
|
|
24
|
-
beratools/gui_tk/ASCII Banners.txt,sha256=WjJFkz61AiZArYzwfgoHcZrkw1e5YuRqjhPtMtFRwa0,20601
|
|
25
|
-
beratools/gui_tk/__init__.py,sha256=Lo0Hyv-bggKsqRXmqg4b7u-UwnTcA81HmhL5ks3Ybe4,307
|
|
26
|
-
beratools/gui_tk/beratools_main.py,sha256=SyjWgFMqq4hMeniRyPXndufUw9hcjZjWsWm-eJ6Uecs,19206
|
|
27
|
-
beratools/gui_tk/bt_widgets.py,sha256=z_eKfojJhbRbK6XzkOu0AmBAkNapo7uFMpUkeSMUIf0,16120
|
|
28
|
-
beratools/gui_tk/cli.py,sha256=QUFBWoeAXJkXpRWlS1pegpj58LXS390a0qtwIKzAFzc,422
|
|
29
|
-
beratools/gui_tk/gui.json,sha256=kRD3Ozim9IotcY8P3fapgs4qqj5vebQHLxmss_SOJdY,329
|
|
30
|
-
beratools/gui_tk/main.py,sha256=z1szJ1CnQYVFSsVdKoUrH8XXemgxOWmNuV1X7Z0rk-U,339
|
|
31
|
-
beratools/gui_tk/map_window.py,sha256=SmPlCIif9uDoYZscelrQoT0e-lPShskzYBwcgbeMEB8,5366
|
|
32
|
-
beratools/gui_tk/runner.py,sha256=lPmn48D3rwsuTutgyjnTFV7ctsGAPgFUPV8bFaZPMWw,59938
|
|
33
|
-
beratools/gui_tk/tooltip.py,sha256=JK4cz28XTKZ2VoEw8ml1XkIOxpiNoTlzZjFs_imlnII,1848
|
|
34
|
-
beratools/gui_tk/img/BERALogo.png,sha256=hnGLSL7Jv2ljDn6Z8ad5ekzH9k1PEuq7xe7Hh8bXZkE,6660
|
|
35
|
-
beratools/gui_tk/img/closed.gif,sha256=T9BBGl286-FdSRYbWVt68HwPRF0geWoowtBzeYsk_bI,592
|
|
36
|
-
beratools/gui_tk/img/closed.png,sha256=FRSAh3wzASowFUEt88zHhk1BQmwRbjoCs50Ff8KpJNQ,311
|
|
37
|
-
beratools/gui_tk/img/open.gif,sha256=o8LL1OaDNkQ0Gcc9dO-1f1UZFAQ3ALc4svtqiUuWJPY,1062
|
|
38
|
-
beratools/gui_tk/img/open.png,sha256=v0OOwfTNGMmtdFbffCbxdYLaNZeRC9Cy5whAwi71oVw,524
|
|
39
|
-
beratools/gui_tk/img/tool.gif,sha256=2KGcUI_b-qFdrJJhgbx9pMZ8pExX7zH8nYvweRiQs6U,555
|
|
40
|
-
beratools/gui_tk/img/tool.png,sha256=35Txwum2l_aKeazF_I97ZaZAKHsrKQCGG-LZxEIFyZw,714
|
|
41
|
-
beratools/third_party/pyqtlet2/__init__.py,sha256=mR2LtPcjGdqw0KY7oEWl1PlRS4vqVvSZ9nohxEt-2wc,182
|
|
42
|
-
beratools/third_party/pyqtlet2/mapwidget.py,sha256=hvAZ9W8OsHDLgRIUnKi8oE9luYXrbNa9I_Iur9UcNzQ,1491
|
|
43
|
-
beratools/third_party/pyqtlet2/leaflet/__init__.py,sha256=GaYh-S2WOJFqDlTHh5RMO1TUjNx9j74RBsJUZVi-Yt0,718
|
|
44
|
-
beratools/third_party/pyqtlet2/leaflet/control/__init__.py,sha256=Yr10AF1hcztY7w7Y0FLKy1m_bpAiQMrwM7iyeMPJBVc,108
|
|
45
|
-
beratools/third_party/pyqtlet2/leaflet/control/control.py,sha256=8Q0ZBSktwvEHUoQ4JGr3qTh1O0baTHI6uDNpv2TOyjY,1399
|
|
46
|
-
beratools/third_party/pyqtlet2/leaflet/control/draw.py,sha256=LPtjenudPxtoZ1_1-thfR2w5bJT-KRS4JWGrzDu2djg,2134
|
|
47
|
-
beratools/third_party/pyqtlet2/leaflet/control/layers.py,sha256=NkzIXyboi3mCXkAZlXKdkPaSS5ZpvTr7uJp91vdWeJM,719
|
|
48
|
-
beratools/third_party/pyqtlet2/leaflet/core/Parser.py,sha256=1gQhzmK59Ybqloav59ejDFdQYXs-waxyrRmAOgNKFfo,812
|
|
49
|
-
beratools/third_party/pyqtlet2/leaflet/core/__init__.py,sha256=eKSQVBQLCdALnCskMw7nHySUfeJyBR-yXJjTSgvLdWc,32
|
|
50
|
-
beratools/third_party/pyqtlet2/leaflet/core/evented.py,sha256=x5dl1U2iQi2k1IM1HhENjUvSmgCzWKnynpcof_RnqK0,7849
|
|
51
|
-
beratools/third_party/pyqtlet2/leaflet/layer/__init__.py,sha256=iYW7QlvEditZNq23OzsmFO0zphwHRy48_aImus7qLVk,144
|
|
52
|
-
beratools/third_party/pyqtlet2/leaflet/layer/featuregroup.py,sha256=i3zwD3IL_8HRqVTX92UYQPK6YPscNI_zfkKdQYwGAU0,1574
|
|
53
|
-
beratools/third_party/pyqtlet2/leaflet/layer/imageoverlay.py,sha256=l9ojVPZZRzzQLfL7x1BHfsnrNO6CJeg8vnFqWGcwrrk,646
|
|
54
|
-
beratools/third_party/pyqtlet2/leaflet/layer/layer.py,sha256=2VV1d_-aFys-i_mDGRh8imRhWzHNMk3GIlHXCG6XSaA,3096
|
|
55
|
-
beratools/third_party/pyqtlet2/leaflet/layer/layergroup.py,sha256=YtKC1O7i5ahOXHD1TJnZYz07Gek6g7oa_r7CXURVELY,1516
|
|
56
|
-
beratools/third_party/pyqtlet2/leaflet/layer/icon/__init__.py,sha256=03LMcvUW7iid7k6hOEPXv-gNGLToG_jfPUao0lPkxeI,24
|
|
57
|
-
beratools/third_party/pyqtlet2/leaflet/layer/icon/icon.py,sha256=cgHveP7oviPRyZv2XwfK2EQF3yLyzIupb5wrEsjiPqE,1112
|
|
58
|
-
beratools/third_party/pyqtlet2/leaflet/layer/marker/__init__.py,sha256=zTuAEWkPqKkqUeuPiT288tnkniBfBjKJxy0TesAkVYk,28
|
|
59
|
-
beratools/third_party/pyqtlet2/leaflet/layer/marker/marker.py,sha256=8ij9p0oguTW2AGR0njSLr4bCNsfirYcOoX7s4YBYL6I,3603
|
|
60
|
-
beratools/third_party/pyqtlet2/leaflet/layer/tile/__init__.py,sha256=v5tHQOCNYd3i5YO_kxWYjAYvSCPher1VRw-8pdPqqEs,68
|
|
61
|
-
beratools/third_party/pyqtlet2/leaflet/layer/tile/gridlayer.py,sha256=sApbbdvr0TaWsGzPHqrg2p4jYBrpLQ4Et5vunTWDEEo,59
|
|
62
|
-
beratools/third_party/pyqtlet2/leaflet/layer/tile/tilelayer.py,sha256=zf1_dWtSsVyVQObyHZywIpsXzVPuId2IspMxcNnmIvM,591
|
|
63
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/__init__.py,sha256=QNV7dn3uA9ESystGi82QeWMpzuyZr4Ih6Hk5ROZ4fV0,164
|
|
64
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/circle.py,sha256=pwitI8CxuviM5U07zXYMpT6bl6mZp_3KJMI6ZlvZEbg,553
|
|
65
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/circlemarker.py,sha256=xSJ61n4YsDe5-dUPRs4uYtFW0AI2lRYtxF7iRS9tMZg,557
|
|
66
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/path.py,sha256=1NQhilews59597RueOk1sIa9TRJZAny8nCIPGAPTJEc,61
|
|
67
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/polygon.py,sha256=V1ZFhJ7fsStJWM3qld1NnR_dhvxdghXSrhAfd4vQmfA,466
|
|
68
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/polyline.py,sha256=9pMhYD-kRiEUXxy67BtjQMjhvgK1UivY9I7newyIn9U,555
|
|
69
|
-
beratools/third_party/pyqtlet2/leaflet/layer/vector/rectangle.py,sha256=Owmvh87CXHLiHlBN6SCgDskQAC1aEQCy2bk6dMha--s,467
|
|
70
|
-
beratools/third_party/pyqtlet2/leaflet/map/__init__.py,sha256=jIbj-ae5jBYBq9vpyTVDOkXxkZvmOSEQQX3FGpHmGl4,22
|
|
71
|
-
beratools/third_party/pyqtlet2/leaflet/map/map.py,sha256=OtxbT9U3WMtdeUJK8kPA_Wl-5sVK56pbrPY2Q_DOsE0,7230
|
|
72
|
-
beratools/third_party/pyqtlet2/web/custom.js,sha256=vBwzclmI2x8XxyVWlBXoIhaSIyjw5kSTUt9uQKN0NbE,1457
|
|
73
|
-
beratools/third_party/pyqtlet2/web/map.html,sha256=nPHkM6wfziCLPR7xcmAUK6Xw_djWAWHXRFOIWNDqRZE,929
|
|
74
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/leaflet.css,sha256=kLaT2GOSpHechhsozzB-flnD-zUyjE2LlfWPgU04xyI,14657
|
|
75
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/leaflet.js,sha256=3kGmSkWR0G-_9osA8KbBi4Bi1Y4ihdgE7m4r1hBkpwI,146720
|
|
76
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/layers-2x.png,sha256=Bm2sqFDY_77wB68AsG6sABVyje4nnFHzy2xxbffELt8,1259
|
|
77
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/layers.png,sha256=Hbvp0CjikvNvy6j4s6KNXokydU_CIVuaxp5M3s9RB8Y,696
|
|
78
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/marker-icon-2x.png,sha256=ABecTB7oMNOhCEEq4NKU9Vd2z-sIXGASmjmqb8SuJSg,2464
|
|
79
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/marker-icon.png,sha256=V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy_owHesdxDc,1466
|
|
80
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_193/images/marker-shadow.png,sha256=Jk9cZAM58ELdcpBiz8BMF_jqDymIK1OOOEjtjxDttNo,618
|
|
81
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.codeclimate.yml,sha256=RLo1MRpx_xRa_qAdakq_GSUlgqZqksMr5YW8WSH_a2o,193
|
|
82
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.editorconfig,sha256=GnD8aKGdgevmGUcqysH30yyFzS6h7DVkOQFaHop_Cpc,71
|
|
83
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.gitattributes,sha256=EsqBtDVEqtEZmZiiJuAyqf_SeoJ0N_uz6e218vciO8w,505
|
|
84
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/.travis.yml,sha256=_25qE0x7ZUeb1iDLGu4a1b4DPnvIJx6aTHLFNOmrXOQ,610
|
|
85
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/LICENSE,sha256=OqYNSsNUnU4ng7y2ymgo6As60DThMoproemTE-Ck8RA,1087
|
|
86
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/leaflet.draw.css,sha256=RHpHxm5Pfl9EEY1k8sbjmH8jz3Fo2_OA2yn_VUVct68,5276
|
|
87
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/leaflet.draw.js,sha256=3vOnsazrCJNRAuvJn2RLMkCu4YDWOQmm7oqLCddOlWE,67551
|
|
88
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/layers-2x.png,sha256=Bm2sqFDY_77wB68AsG6sABVyje4nnFHzy2xxbffELt8,1259
|
|
89
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/layers.png,sha256=Hbvp0CjikvNvy6j4s6KNXokydU_CIVuaxp5M3s9RB8Y,696
|
|
90
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/marker-icon-2x.png,sha256=LXei5MLwi7rEGAgyTvlGuaL-YbYVBIDQEbcrN5w7I40,2586
|
|
91
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/marker-icon.png,sha256=V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy_owHesdxDc,1466
|
|
92
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/marker-shadow.png,sha256=Jk9cZAM58ELdcpBiz8BMF_jqDymIK1OOOEjtjxDttNo,618
|
|
93
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/spritesheet-2x.png,sha256=-iyV4GEPN4fIeWReQrhq0BDDBfgxLhFoQXMNANSrcrc,3581
|
|
94
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/spritesheet.png,sha256=qJeKHT0h2O5vFszjQv9n_EfEJB9SFh8FuviPFeEFgZk,1906
|
|
95
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_draw_414/images/spritesheet.svg,sha256=syHuBl86Q0UK6EultBTqfvpXPT-tU220nTP6fNW-9ro,5707
|
|
96
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_rotatedMarker_020/LICENSE,sha256=2lrm0tOM87tDunjtxsCQsNdqB13mY8GMiNJte3Fbk3k,1106
|
|
97
|
-
beratools/third_party/pyqtlet2/web/modules/leaflet_rotatedMarker_020/leaflet.rotatedMarker.js,sha256=rB8Qd1EdZGUIrGfuoY_SaCnf-hWpTjkaWHunKPRg9kU,2088
|
|
98
|
-
beratools/tools/Beratools_r_script.r,sha256=5GXWwrezSNwPMDkf720yHjn3fQoWS9OZRv8xtCGtLXw,43622
|
|
99
|
-
beratools/tools/Ht_metrics.py,sha256=t_qWEEeNbO9S59eAloJQ4-Qv_sMhNLcWAYsNp_bHHkY,4185
|
|
100
|
-
beratools/tools/__init__.py,sha256=ia265AucXSQS5yFy5jz4q3wQYPUCLrdsAvTOhgn0QyU,130
|
|
101
|
-
beratools/tools/batch_processing.py,sha256=tYQrQ0NBXGOXaZZGYJU6PVbBcYIXQzmDhBeza7wR3a8,5009
|
|
102
|
-
beratools/tools/canopy_threshold_relative.py,sha256=cD_MuimoTLlvpoRLy3XaLNFwMUMoiqfdXgmiLQtCXOk,29715
|
|
103
|
-
beratools/tools/canopycostraster.py,sha256=wKCNc-a_1ND6vbFMdMAWRWBv4a3kyGZ9yrDntG852Ds,8301
|
|
104
|
-
beratools/tools/centerline.py,sha256=MAnT4GEU7CUi48bEbQPU-2UMOXsb2b1A2nlrN1FhONc,6391
|
|
105
|
-
beratools/tools/common.py,sha256=nDwybFMTxmGiTN-CXZrGceuWLQDYWGBX551jUQnmDC4,29799
|
|
106
|
-
beratools/tools/fl_regen_csf.py,sha256=Hi7I8EjzxDRYlDeVW-1MrHJtKd2evo8g64r7zWOdCLk,16490
|
|
107
|
-
beratools/tools/forest_line_attributes.py,sha256=FlJ2n8qUE4KpBq37Po7w53YvcMNZaMinZbMs20ZBBpA,14966
|
|
108
|
-
beratools/tools/forest_line_ecosite.py,sha256=kshmeTbfn6sIJIze1SFD2TgKR7Da-m16zdymFDztW4k,7439
|
|
109
|
-
beratools/tools/lapis_all.py,sha256=B7QG7Dw7ylbLKUCRGH1LI3VVZxPv8tpkCGedWHpgRBQ,3220
|
|
110
|
-
beratools/tools/least_cost_path_from_chm.py,sha256=nIPMp7Mf4g4WvT8x17xPcdrBDIBIVPJjCrf9wOFcZkc,5892
|
|
111
|
-
beratools/tools/line_footprint_absolute.py,sha256=RtA_t2G8eErzpPVRCVjItUGzegOJG0TbFk6qbB21Twg,13830
|
|
112
|
-
beratools/tools/line_footprint_fixed.py,sha256=9AsHvYIjpaAz0iq6gWhQQC6X9vf79qp0G7wHBsSt0Ag,9584
|
|
113
|
-
beratools/tools/line_footprint_functions.py,sha256=MJ3yMtA6hHhpLaYBz9Q-Y3stGeDahrYJHr-nPjSRuQk,30905
|
|
114
|
-
beratools/tools/line_footprint_relative.py,sha256=7tqXKP5gWSpqScuPnFHBl36_1-0UbMr58Obcyq0AL1A,2998
|
|
115
|
-
beratools/tools/ln_relative_metrics.py,sha256=eJOBJp37KH2IOhm291-s_yPFP5PKTlWYAw_azKdKvK8,25489
|
|
116
|
-
beratools/tools/r_cal_lpi_elai.r,sha256=7Htnuqcz88nEIH9xBaMjvEAjZCSoebLk9t05iqs28fs,700
|
|
117
|
-
beratools/tools/r_generate_pd_focalraster.r,sha256=LSRnc5gUUcjZnURYt3MnXScUtjMwO8D7FFNaRJ04wbc,3691
|
|
118
|
-
beratools/tools/r_interface.py,sha256=4XNmkPa49F-4QIk_aoOhkXDRwsMpSg_IV6dcOiNIDlk,2552
|
|
119
|
-
beratools/tools/r_point_density.r,sha256=QmeBb6kS1AU7-GvlmSgeFWoNsRTWipxzHPMXQ_hDdQU,214
|
|
120
|
-
beratools/tools/rpy_chm2trees.py,sha256=g8D2EDqpFojiByUI4lUFy3Y9skNoWLCu9zmOWbPJdIc,3150
|
|
121
|
-
beratools/tools/rpy_dsm_chm_by.py,sha256=PvtLqEGUXqVcY-5ZXE3b9UEyWW-7pYJvARmteIglvBk,2900
|
|
122
|
-
beratools/tools/rpy_dtm_by.py,sha256=zw-SKUOu3rpaL8-7Q8p4tNNYz-xPjI7JefUzTGUNSqA,2355
|
|
123
|
-
beratools/tools/rpy_find_cellsize.py,sha256=M15a25c3UmRqwe65FLGBt22yw9Ov82rVjapw_KyQJvk,1577
|
|
124
|
-
beratools/tools/rpy_gnd_csf.py,sha256=Nwhp-_7_scAJLz4__IfSL4KsER8rSHk_OM_BMmRJDNw,2905
|
|
125
|
-
beratools/tools/rpy_hummock_hollow.py,sha256=jqP_bN4KkIUmRBGR5VTXMopeLn_CPGQWxHjFOccXIXY,3111
|
|
126
|
-
beratools/tools/rpy_hummock_hollow_raster.py,sha256=OI-6_aZpF-VOuAWP9at51HD8Zlq1gu9mKhGtB-Rf4Jk,2718
|
|
127
|
-
beratools/tools/rpy_las_info.py,sha256=Yi-y0AubrXls782csr9wTq_fHoy0q2JFZ722AaLQ6Rc,1782
|
|
128
|
-
beratools/tools/rpy_laz2las.py,sha256=ZEC6l9dkxC2YJATmSlXDR-UvAuemCtzFPufKfbG3syA,1432
|
|
129
|
-
beratools/tools/rpy_lpi_elai_lascat.py,sha256=6129Wj6juGxsSGBWMiZwxCcioOKujBpZD0GPiC-J0cQ,19671
|
|
130
|
-
beratools/tools/rpy_normalized_lidar_by.py,sha256=8n3NCc6hPKCsNsKhFPBg0Gt2OZ6K80z4l36JKYzZLGM,2136
|
|
131
|
-
beratools/tools/rpy_percent_above_dbh.py,sha256=4qRtTRXJwdpx-KVgKIMfqZC8J10XRQd6DIxtDPP-klM,2934
|
|
132
|
-
beratools/tools/rpy_points2trees.py,sha256=aslQntancn3Gc_T3DdubdgZi64Xm9c3Cxrw5A5rMYGw,3434
|
|
133
|
-
beratools/tools/rpy_vegcoverage.py,sha256=iR2a5J8E0Tdh9GYvetxep2m39JOlZ-vMPCGhkyY_rqI,3402
|
|
134
|
-
beratools/tools/tiler.py,sha256=0mSO8BF7-70mhIN1-jDJOhnC06ueDls-L6VMPI30ws4,7619
|
|
135
|
-
beratools/tools/tool_template.py,sha256=Gh3gfRs8CbqSpvWfUxQqyizLR1WR2qDkuP5mGmS4QcA,1579
|
|
136
|
-
beratools/tools/vertex_optimization.py,sha256=0Ypbq3EzNeCRQ69_TainmkcMxwB0nhQ-rPbe8gIQ9vM,21673
|
|
137
|
-
beratools/tools/zonal_threshold.py,sha256=AYwoBEXAzEs4uN5R9t1RhibFoyZz17o2bretqNrrN94,5505
|
|
138
|
-
beratools-0.2.0.dist-info/METADATA,sha256=HwGFxCxK11Q8rz9Op8qcC1kEKL2SF065bUrG0vQoONQ,2615
|
|
139
|
-
beratools-0.2.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
140
|
-
beratools-0.2.0.dist-info/entry_points.txt,sha256=ph47-gzMqhlWmHogQd9HTl4l8dWQUV8FhSOL2FaRrIM,53
|
|
141
|
-
beratools-0.2.0.dist-info/licenses/LICENSE,sha256=iWkddJP7OUHpdZhXc5iaHbDrctVGVDWCqhFSmVD3iNY,1091
|
|
142
|
-
beratools-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|