-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathcreateBuildingBoundingBoxes.py
71 lines (50 loc) · 1.88 KB
/
createBuildingBoundingBoxes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import geopandas as gpd
import argparse
import os
import glob
import progressbar
def load_file(file_path):
shape = gpd.GeoDataFrame(gpd.read_file(file_path))
return shape
def create_bounding_box(file, new_name):
affected_structures = load_file(file)
polygons = gpd.GeoSeries(affected_structures.geometry)
bounding_boxes = gpd.GeoSeries(polygons.envelope)
bounding_boxes.to_file(new_name)
return bounding_boxes
def create_list_of_files(directory, file_extension):
files = glob.glob(directory + "/*." + file_extension)
return files
def pull_names_from_directory(directory, file_extension):
def pull_name_from_file(string):
string = string.split('_')[-1]
string = string.split('.')[0]
return string
names = []
files = glob.glob(directory + "/*." + file_extension)
for file in files:
names.append(pull_name_from_file(file))
return names
def zip_together_file_lists(directory, file_names):
files = list(zip(directory, file_names))
return files
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('path')
parser.add_argument('directory')
parser.add_argument('new_directory')
arguments = parser.parse_args()
path = arguments.path
directory = arguments.directory
new_directory = arguments.new_directory
files = glob.glob(directory + "/*.shp")
names = pull_names_from_directory(directory, "/*.shp")
files_list = zip_together_file_lists(files, names)
new_directory = path + "/" + new_directory
os.system("mkdir " + new_directory)
bar = progressbar.ProgressBar(max_value=len(names))
for file_number, file in enumerate(files_list):
new_name = "boundingbox_" + file[1] + ".shp"
create_bounding_box(file[0], new_name)
os.system("mv boundingbox_" + file[1] + ".* " + new_directory)
bar.update(file_number)