-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtransformCOS.sh
More file actions
executable file
·95 lines (83 loc) · 3.24 KB
/
transformCOS.sh
File metadata and controls
executable file
·95 lines (83 loc) · 3.24 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/sh
s=5 # simplification level
FILES=$1
DROP_FIELDS="CURRENT_AREA,CURRENT_USE,CURRENT_USE_N4,CURRENT_PCT"
echo $FILES
for f in $@
do
real=$(realpath $f)
json=${real%.json}.json
box0=${json%.json}_b.json
simplified=${json%.json}_s$s.json
box=${simplified%.json}_b.json
dissolved=${box%.json}_d.json
joined=${dissolved%.json}_j.json
simplified2=${joined%.json}_s$s.json
box2=${simplified2%.json}_b.json
calculations=${box2%.json}_c.json
echo "---------------------------------"
echo "Processing file: $f"
echo "*** Exporting to JSON *** $(date) ***"
mapshaper $f -proj +proj=longlat +datum=WGS84 +no_defs -clean -each 'AREA2=this.area/10000,POLYGON=this.id' -o format=geojson precision=0.000001 $json
echo "*** Adding bounding box to original layer *** $(date) ***"
mapshaper $json -each 'BBOX=this.bounds' -o $box0
echo "*** Simplifying original layer *** $(date) ***"
mapshaper $json -simplify $s% -clean -o $simplified
echo "*** Adding bounding box to simplified layer *** $(date) ***"
mapshaper $simplified -each 'BBOX=this.bounds' -o $box
echo "*** Aggregating polygons by use *** $(date) ***"
mapshaper $box -dissolve COS2018_n1 -explode -o $dissolved
echo "*** Adding subpoligons to superpolygons *** $(date) ***"
mapshaper $dissolved -join $box calc='SUBPOLYGONS=collect(this.properties)' -o $joined
echo "*** Simplifying merged layer *** $(date) ***"
mapshaper $joined -simplify $s% -clean -o $simplified2
echo "*** Adding bounding box to merged layer *** $(date) ***"
mapshaper $simplified2 -each 'BBOX=this.bounds' -o $box2
echo "*** Adding superpolygons ID and calculating merged areas*** $(date) ***"
mapshaper -i $box2 -each \
'if (SUBPOLYGONS != null) {
var POLYGON=this.id;
var AREA=0;
var CURRENT_AREA=0;
var CURRENT_PCT=0;
var MAX_PCT=0;
var MAX_PCT_N4=0;
var N1_MAX_PCT="";
var N4_MAX_PCT="";
var LG_MAX_PCT="";
var PCT_N1 = {};
var PCT_N4 = {};
for (var polygon in SUBPOLYGONS) {
AREA+=Math.max(SUBPOLYGONS[polygon].AREA,SUBPOLYGONS[polygon].AREA2);
}
for (var polygon in SUBPOLYGONS) {
CURRENT_AREA = Math.max(SUBPOLYGONS[polygon].AREA,SUBPOLYGONS[polygon].AREA2);
CURRENT_PCT = CURRENT_AREA / AREA;
CURRENT_USE = SUBPOLYGONS[polygon].COS2018_n1.substr(0,1);;
if (PCT_N1[CURRENT_USE] == null) {
PCT_N1[CURRENT_USE] = 0;
}
PCT_N1[CURRENT_USE] += CURRENT_PCT;
if (PCT_N1[CURRENT_USE] > MAX_PCT) {
MAX_PCT = PCT_N1[CURRENT_USE];
N1_MAX_PCT = CURRENT_USE;
}
CURRENT_USE_N4 = SUBPOLYGONS[polygon].COS2018_n4
for (var i=0; i < 10; i++) {
CURRENT_USE_N4 = CURRENT_USE_N4.replace(".","");
}
if (PCT_N4[CURRENT_USE_N4] == null) {
PCT_N4[CURRENT_USE_N4] = 0;
}
PCT_N4[CURRENT_USE_N4] += CURRENT_PCT;
if (PCT_N4[CURRENT_USE_N4] > MAX_PCT_N4) {
MAX_PCT_N4 = PCT_N4[CURRENT_USE_N4];
N4_MAX_PCT = CURRENT_USE_N4;
LG_MAX_PCT = SUBPOLYGONS[polygon].COS2018_Lg;
}
}
COS2018_n1=N1_MAX_PCT;
COS2018_n4=N4_MAX_PCT;
COS2018_Lg=LG_MAX_PCT;
}' -drop fields=$DROP_FIELDS -o $calculations
done