diff --git a/media/naturals/us-interstates/I-10.svg b/media/naturals/us-interstates/I-10.svg
new file mode 100644
index 00000000..157c3301
--- /dev/null
+++ b/media/naturals/us-interstates/I-10.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-12.svg b/media/naturals/us-interstates/I-12.svg
new file mode 100644
index 00000000..2c2b3ac0
--- /dev/null
+++ b/media/naturals/us-interstates/I-12.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-15.svg b/media/naturals/us-interstates/I-15.svg
new file mode 100644
index 00000000..2da0281e
--- /dev/null
+++ b/media/naturals/us-interstates/I-15.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-16.svg b/media/naturals/us-interstates/I-16.svg
new file mode 100644
index 00000000..127e5db5
--- /dev/null
+++ b/media/naturals/us-interstates/I-16.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-17.svg b/media/naturals/us-interstates/I-17.svg
new file mode 100644
index 00000000..fdf02bf4
--- /dev/null
+++ b/media/naturals/us-interstates/I-17.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-19.svg b/media/naturals/us-interstates/I-19.svg
new file mode 100644
index 00000000..a89953aa
--- /dev/null
+++ b/media/naturals/us-interstates/I-19.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-20.svg b/media/naturals/us-interstates/I-20.svg
new file mode 100644
index 00000000..d2b03bf7
--- /dev/null
+++ b/media/naturals/us-interstates/I-20.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-24.svg b/media/naturals/us-interstates/I-24.svg
new file mode 100644
index 00000000..09b58bf7
--- /dev/null
+++ b/media/naturals/us-interstates/I-24.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-27.svg b/media/naturals/us-interstates/I-27.svg
new file mode 100644
index 00000000..b100de5e
--- /dev/null
+++ b/media/naturals/us-interstates/I-27.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-29.svg b/media/naturals/us-interstates/I-29.svg
new file mode 100644
index 00000000..6691e340
--- /dev/null
+++ b/media/naturals/us-interstates/I-29.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-30.svg b/media/naturals/us-interstates/I-30.svg
new file mode 100644
index 00000000..68ded050
--- /dev/null
+++ b/media/naturals/us-interstates/I-30.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-35.svg b/media/naturals/us-interstates/I-35.svg
new file mode 100644
index 00000000..799148da
--- /dev/null
+++ b/media/naturals/us-interstates/I-35.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-37.svg b/media/naturals/us-interstates/I-37.svg
new file mode 100644
index 00000000..b15fcc13
--- /dev/null
+++ b/media/naturals/us-interstates/I-37.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-39.svg b/media/naturals/us-interstates/I-39.svg
new file mode 100644
index 00000000..b2ac5839
--- /dev/null
+++ b/media/naturals/us-interstates/I-39.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-4.svg b/media/naturals/us-interstates/I-4.svg
new file mode 100644
index 00000000..e730b8a8
--- /dev/null
+++ b/media/naturals/us-interstates/I-4.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-40.svg b/media/naturals/us-interstates/I-40.svg
new file mode 100644
index 00000000..5f155a98
--- /dev/null
+++ b/media/naturals/us-interstates/I-40.svg
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-43.svg b/media/naturals/us-interstates/I-43.svg
new file mode 100644
index 00000000..3e4db61d
--- /dev/null
+++ b/media/naturals/us-interstates/I-43.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-44.svg b/media/naturals/us-interstates/I-44.svg
new file mode 100644
index 00000000..52fae175
--- /dev/null
+++ b/media/naturals/us-interstates/I-44.svg
@@ -0,0 +1,15 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-45.svg b/media/naturals/us-interstates/I-45.svg
new file mode 100644
index 00000000..89095b1f
--- /dev/null
+++ b/media/naturals/us-interstates/I-45.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-49.svg b/media/naturals/us-interstates/I-49.svg
new file mode 100644
index 00000000..0352ef5b
--- /dev/null
+++ b/media/naturals/us-interstates/I-49.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-5.svg b/media/naturals/us-interstates/I-5.svg
new file mode 100644
index 00000000..107e198c
--- /dev/null
+++ b/media/naturals/us-interstates/I-5.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-55.svg b/media/naturals/us-interstates/I-55.svg
new file mode 100644
index 00000000..f2f5999a
--- /dev/null
+++ b/media/naturals/us-interstates/I-55.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-57.svg b/media/naturals/us-interstates/I-57.svg
new file mode 100644
index 00000000..1e35fcff
--- /dev/null
+++ b/media/naturals/us-interstates/I-57.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-59.svg b/media/naturals/us-interstates/I-59.svg
new file mode 100644
index 00000000..1eb16786
--- /dev/null
+++ b/media/naturals/us-interstates/I-59.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-64.svg b/media/naturals/us-interstates/I-64.svg
new file mode 100644
index 00000000..c43c7e5a
--- /dev/null
+++ b/media/naturals/us-interstates/I-64.svg
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-65.svg b/media/naturals/us-interstates/I-65.svg
new file mode 100644
index 00000000..3d46637f
--- /dev/null
+++ b/media/naturals/us-interstates/I-65.svg
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-66.svg b/media/naturals/us-interstates/I-66.svg
new file mode 100644
index 00000000..6c662c12
--- /dev/null
+++ b/media/naturals/us-interstates/I-66.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-68.svg b/media/naturals/us-interstates/I-68.svg
new file mode 100644
index 00000000..576b2b9d
--- /dev/null
+++ b/media/naturals/us-interstates/I-68.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-69.svg b/media/naturals/us-interstates/I-69.svg
new file mode 100644
index 00000000..a1bff738
--- /dev/null
+++ b/media/naturals/us-interstates/I-69.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-70.svg b/media/naturals/us-interstates/I-70.svg
new file mode 100644
index 00000000..c6a05cb5
--- /dev/null
+++ b/media/naturals/us-interstates/I-70.svg
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-71.svg b/media/naturals/us-interstates/I-71.svg
new file mode 100644
index 00000000..35123006
--- /dev/null
+++ b/media/naturals/us-interstates/I-71.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-72.svg b/media/naturals/us-interstates/I-72.svg
new file mode 100644
index 00000000..0bb19494
--- /dev/null
+++ b/media/naturals/us-interstates/I-72.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-73.svg b/media/naturals/us-interstates/I-73.svg
new file mode 100644
index 00000000..008f3110
--- /dev/null
+++ b/media/naturals/us-interstates/I-73.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-74.svg b/media/naturals/us-interstates/I-74.svg
new file mode 100644
index 00000000..a4fdc667
--- /dev/null
+++ b/media/naturals/us-interstates/I-74.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-75.svg b/media/naturals/us-interstates/I-75.svg
new file mode 100644
index 00000000..f721ff4c
--- /dev/null
+++ b/media/naturals/us-interstates/I-75.svg
@@ -0,0 +1,26 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-76.svg b/media/naturals/us-interstates/I-76.svg
new file mode 100644
index 00000000..a73647ad
--- /dev/null
+++ b/media/naturals/us-interstates/I-76.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-77.svg b/media/naturals/us-interstates/I-77.svg
new file mode 100644
index 00000000..9b6e11e9
--- /dev/null
+++ b/media/naturals/us-interstates/I-77.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-78.svg b/media/naturals/us-interstates/I-78.svg
new file mode 100644
index 00000000..08acc612
--- /dev/null
+++ b/media/naturals/us-interstates/I-78.svg
@@ -0,0 +1,11 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-79.svg b/media/naturals/us-interstates/I-79.svg
new file mode 100644
index 00000000..fb18d56c
--- /dev/null
+++ b/media/naturals/us-interstates/I-79.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-8.svg b/media/naturals/us-interstates/I-8.svg
new file mode 100644
index 00000000..644e6f5f
--- /dev/null
+++ b/media/naturals/us-interstates/I-8.svg
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-80.svg b/media/naturals/us-interstates/I-80.svg
new file mode 100644
index 00000000..10080600
--- /dev/null
+++ b/media/naturals/us-interstates/I-80.svg
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-81.svg b/media/naturals/us-interstates/I-81.svg
new file mode 100644
index 00000000..7e5282c9
--- /dev/null
+++ b/media/naturals/us-interstates/I-81.svg
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-82.svg b/media/naturals/us-interstates/I-82.svg
new file mode 100644
index 00000000..f23c5e53
--- /dev/null
+++ b/media/naturals/us-interstates/I-82.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-83.svg b/media/naturals/us-interstates/I-83.svg
new file mode 100644
index 00000000..e4b04187
--- /dev/null
+++ b/media/naturals/us-interstates/I-83.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-84.svg b/media/naturals/us-interstates/I-84.svg
new file mode 100644
index 00000000..0396e672
--- /dev/null
+++ b/media/naturals/us-interstates/I-84.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-85.svg b/media/naturals/us-interstates/I-85.svg
new file mode 100644
index 00000000..7a67166d
--- /dev/null
+++ b/media/naturals/us-interstates/I-85.svg
@@ -0,0 +1,13 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-86.svg b/media/naturals/us-interstates/I-86.svg
new file mode 100644
index 00000000..009297ff
--- /dev/null
+++ b/media/naturals/us-interstates/I-86.svg
@@ -0,0 +1,9 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-87.svg b/media/naturals/us-interstates/I-87.svg
new file mode 100644
index 00000000..ba93ba6f
--- /dev/null
+++ b/media/naturals/us-interstates/I-87.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-88.svg b/media/naturals/us-interstates/I-88.svg
new file mode 100644
index 00000000..05e0b9d9
--- /dev/null
+++ b/media/naturals/us-interstates/I-88.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-89.svg b/media/naturals/us-interstates/I-89.svg
new file mode 100644
index 00000000..c4fcd36c
--- /dev/null
+++ b/media/naturals/us-interstates/I-89.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-90.svg b/media/naturals/us-interstates/I-90.svg
new file mode 100644
index 00000000..18f72d0a
--- /dev/null
+++ b/media/naturals/us-interstates/I-90.svg
@@ -0,0 +1,38 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-91.svg b/media/naturals/us-interstates/I-91.svg
new file mode 100644
index 00000000..18f7e7bb
--- /dev/null
+++ b/media/naturals/us-interstates/I-91.svg
@@ -0,0 +1,10 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-93.svg b/media/naturals/us-interstates/I-93.svg
new file mode 100644
index 00000000..a83d2114
--- /dev/null
+++ b/media/naturals/us-interstates/I-93.svg
@@ -0,0 +1,14 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-94.svg b/media/naturals/us-interstates/I-94.svg
new file mode 100644
index 00000000..abb52d66
--- /dev/null
+++ b/media/naturals/us-interstates/I-94.svg
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-95.svg b/media/naturals/us-interstates/I-95.svg
new file mode 100644
index 00000000..e9c230ea
--- /dev/null
+++ b/media/naturals/us-interstates/I-95.svg
@@ -0,0 +1,44 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-96.svg b/media/naturals/us-interstates/I-96.svg
new file mode 100644
index 00000000..a62aa01d
--- /dev/null
+++ b/media/naturals/us-interstates/I-96.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-97.svg b/media/naturals/us-interstates/I-97.svg
new file mode 100644
index 00000000..f8bf96e3
--- /dev/null
+++ b/media/naturals/us-interstates/I-97.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/media/naturals/us-interstates/I-99.svg b/media/naturals/us-interstates/I-99.svg
new file mode 100644
index 00000000..247b50d0
--- /dev/null
+++ b/media/naturals/us-interstates/I-99.svg
@@ -0,0 +1,6 @@
+
+
\ No newline at end of file
diff --git a/presets/naturals.js b/presets/naturals.js
index 114da455..63984ac2 100644
--- a/presets/naturals.js
+++ b/presets/naturals.js
@@ -895,7 +895,7 @@ const globalCityData = [
]
const straitData = [["Strait of Dover", 31174983454.928658, 222577.01735751258], ["Strait of Gibraltar", 4012438156.156927, 55658.19643643095], ["Strait of Hormuz", 25574748008.534893, 122431.35146918982], ["Strait of Messina", 97316549.67370307, 11131.941670965367], ["Strait of Otranto", 30353100830.64735, 189202.32829987607], ["Strait of Juan de Fuca", 36469939347.95791, 178049.49203886717], ["Bering Strait", 49612154086.2841, 211274.1384794921], ["Bass Strait", 278145181872.9597, 477687.07599560975], ["Palk Strait", 36632925592.65483, 166948.86982564948], ["Hudson Strait", 235671965415.1174, 353978.9165560771], ["Cook Strait", 14519643084.23072, 133569.43807438243], ["Sunda Strait", 2465200363.833765, 44527.260899000394], ["Taiwan Strait", 166569712655.73682, 411498.3631607854], ["Dardanelles Strait", 11897169147.76046, 100178.63730052409]]
-
+const usInterstateData = [['I-4', 133860.30238806643], ['I-5', 1841743.6685230015], ['I-8', 34419.884328052016], ['I-10', 662879.3942106421], ['I-12', 19601.661536140884], ['I-15', 1816556.2052351916], ['I-16', 88682.21453954442], ['I-17', 196173.201019035], ['I-19', 96426.05795676696], ['I-20', 347517.6947013905], ['I-24', 422558.98468291573], ['I-27', 617402.3082503016], ['I-29', 1111036.612182809], ['I-30', 231405.98002341753], ['I-35', 2158534.7689142646], ['I-37', 184231.0220610815], ['I-39', 489892.86533484043], ['I-40', 284554.8659969368], ['I-43', 228844.0768209733], ['I-44', 529117.6640772996], ['I-45', 394580.1764593749], ['I-49', 251521.75720683142], ['I-55', 1320388.2525614214], ['I-57', 544229.4386494028], ['I-59', 524278.150028191], ['I-64', 211843.6849640966], ['I-65', 1231049.0138181376], ['I-66', 24025.370784500737], ['I-66', 24025.370784500737], ['I-68', 15236.945179002872], ['I-69', 919351.2585854017], ['I-70', 277234.499188129], ['I-71', 361487.36346668913], ['I-72', 51460.97992201334], ['I-73', 97266.49617697322], ['I-74', 787056.102051467], ['I-75', 2278563.590324183], ['I-76', 118573.83898121146], ['I-76', 118573.83898121146], ['I-77', 850346.766475037], ['I-78', 34308.43505956534], ['I-79', 419586.7946081714], ['I-80', 335341.92972237605], ['I-81', 928130.9026841171], ['I-82', 132340.54932080585], ['I-83', 114410.28676654567], ['I-84', 709596.756786839], ['I-84', 709596.756786839], ['I-85', 546086.7051157606], ['I-86', 136716.7078032001], ['I-86', 136716.7078032001], ['I-87', 472844.76602409093], ['I-87', 472844.76602409093], ['I-88', 140816.2124300237], ['I-88', 140816.2124300237], ['I-89', 207356.9330399862], ['I-90', 930313.3415125563], ['I-91', 416438.4476691138], ['I-93', 250192.56712266232], ['I-94', 632131.6607593653], ['I-95', 2284530.2371507674], ['I-96', 96262.96337466157], ['I-97', 27501.47734637078], ['I-99', 96624.23888346303]]
function makePlanet(name, diameter, mass, image) {
return {
name: name,
@@ -943,6 +943,7 @@ function makeMountains() {
};
}
+// TODO area should come second, not first
function makeGIS(data, category, rename=true) {
const baseLength = math.unit(1, "meters");
const baseArea = math.unit(1, "meters^2");
@@ -951,11 +952,15 @@ function makeGIS(data, category, rename=true) {
constructor: () => {
views = {};
data.forEach(entry => {
- name = entry[0]
+ name = entry[0];
length = baseLength.clone();
area = baseArea.clone();
- length.value = entry[2];
- area.value = entry[1];
+ if (entry.length == 2) {
+ length.value = entry[1];
+ } else {
+ length.value = entry[2];
+ area.value = entry[1];
+ }
views[entry[0]] = {
attributes: {
@@ -965,12 +970,6 @@ function makeGIS(data, category, rename=true) {
type: "length",
base: length
},
- area: {
- name: "Area",
- power: 2,
- type: "area",
- base: area
- },
},
name: name,
rename: true,
@@ -978,6 +977,15 @@ function makeGIS(data, category, rename=true) {
source: "./media/naturals/" + category.toLowerCase().replace(/ /g, "-") + "/" + (rename ? name.toLowerCase().replace(/ /g, "-") + ".svg" : name + ".svg")
}
}
+
+ if (entry.length != 2) {
+ views[entry[0]].attributes.area = {
+ name: "Area",
+ power: 2,
+ type: "area",
+ base: area
+ }
+ }
});
return makeEntity({ name: category }, views);
@@ -1119,6 +1127,13 @@ function makeNaturals() {
false
));
+ results.push(makeGIS(
+ usInterstateData.sort((c1, c2) => {
+ return c1[0].localeCompare(c2[0])
+ }),
+ "US Interstates"
+ ));
+
results.sort((b1, b2) => {
e1 = b1.constructor();
e2 = b2.constructor();
diff --git a/scripts/mapshaper/map-coords.py b/scripts/mapshaper/map-coords.py
index 4837cd0e..ee02bfb5 100644
--- a/scripts/mapshaper/map-coords.py
+++ b/scripts/mapshaper/map-coords.py
@@ -3,40 +3,112 @@ import sys
import subprocess
config = json.load(open(sys.argv[1]))
-results = []
-
-for item in config["items"]:
- lon0 = item["lon0"]
- lat0 = item["lat0"]
- lon1 = item["lon1"]
- lat1 = item["lat1"]
-
- center_lat = (lat0 + lat1) / 2
- center_lon = (lon0 + lon1) / 2
-
- path = "../../" + config["directory"] + "/" + item["name"] + ".svg"
-
- CMD = """\
- mapshaper -i {7} \
- -rectangle bbox={0},{1},{2},{3} name=rect \
- -clip rect target=ne_10m_land \
- -proj crs="+proj=nsper +h=10000000 +lon_0={4} +lat_0={5}" target=ne_10m_land,rect \
- -each 'console.log(this.bounds.concat([this.area]))' target=rect \
- -o "{6}" target=ne_10m_land
- """
-
- prepared = CMD.format(lon0, lat0, lon1, lat1, center_lon, center_lat, path, config["shapefile"])
- print(prepared)
+
+if config["mode"] == "bounding-boxes":
+ results = []
+
+ for item in config["items"]:
+ lon0 = item["lon0"]
+ lat0 = item["lat0"]
+ lon1 = item["lon1"]
+ lat1 = item["lat1"]
+
+ center_lat = (lat0 + lat1) / 2
+ center_lon = (lon0 + lon1) / 2
+
+ path = "../../" + config["directory"] + "/" + item["name"] + ".svg"
+
+ CMD = """\
+ mapshaper -i {7} \
+ -rectangle bbox={0},{1},{2},{3} name=rect \
+ -clip rect target=ne_10m_land \
+ -proj crs="+proj=nsper +h=10000000 +lon_0={4} +lat_0={5}" target=ne_10m_land,rect \
+ -each 'console.log(this.bounds.concat([this.area]))' target=rect \
+ -o "{6}" target=ne_10m_land
+ """
+
+ prepared = CMD.format(lon0, lat0, lon1, lat1, center_lon, center_lat, path, config["shapefile"])
+ result = subprocess.check_output(
+ prepared,
+ shell=True
+ )
+
+ data = json.loads(result.decode("utf-8"))
+
+ height = data[3] - data[1]
+ area = data[4]
+
+ results.append([item["name"], area, height])
+
+ print(json.dumps(results))
+elif config["mode"] == "filter":
+ results = []
+
+ CMD = (
+ f"""mapshaper -i {config["shapefile"]} """
+ f"""-filter "{config["base-filter"]}" """
+ f"""-o temp.shp"""
+ )
+
result = subprocess.check_output(
- prepared,
- shell=True
+ CMD,
+ shell=True,
+ stderr=subprocess.STDOUT
)
- data = json.loads(result.decode("utf-8"))
+ for item in config["items"]:
+ CMD = (
+ f"""mapshaper -i temp.shp """
+ f"""-filter "{config["base-filter"]}" """
+ f"""-filter "{item["filter"]}" """
+ f"""-simplify interval=1000 """
+ f"""-info """
+ )
+
+ result = subprocess.check_output(
+ CMD,
+ shell=True,
+ stderr=subprocess.STDOUT
+ )
+
+ found = False
+ for line in result.decode("utf-8").split("\n"):
+ if "Bounds:" in line:
+ coords = list(map(float, line[7:].strip().split(",")))
+ lat = coords[1] + coords[3]
+ lat /= 2
+ lon = coords[0] + coords[2]
+ lon /= 2
+ found = True
+ break
- height = data[3] - data[1]
- area = data[4]
+ if not found:
+ print("Did not find ", item["name"])
+ continue
- results.append([item["name"], area, height])
+ CMD = (
+ f"""mapshaper -i temp.shp """
+ f"""-filter "{config["base-filter"]}" """
+ f"""-filter "{item["filter"]}" """
+ f"""-simplify interval=1000 """
+ f"""-proj "+proj=ortho +lat_0={lat} +lon_0={lon}" """
+ f"""-info """ +
+ f"""-style stroke-width={config["stroke-width"]} """
+ f"""-o ../../{config["directory"]}/{item["name"]}.svg margin={config["stroke-width"]/2} height=1000 """
+ )
-print(json.dumps(results))
\ No newline at end of file
+ result = subprocess.check_output(
+ CMD,
+ shell=True,
+ stderr=subprocess.STDOUT
+ )
+
+ for line in result.decode("utf-8").split("\n"):
+ if "Bounds:" in line:
+ coords = list(map(float, line[7:].strip().split(",")))
+ print(coords)
+ height = coords[3] - coords[1]
+ height *= 1000 / (1000 - config["stroke-width"]) # accounts for the margin
+ results.append([item["name"], height])
+
+ print(results)
diff --git a/scripts/mapshaper/straits.json b/scripts/mapshaper/straits.json
index 25ed9685..07bbc70f 100644
--- a/scripts/mapshaper/straits.json
+++ b/scripts/mapshaper/straits.json
@@ -2,6 +2,7 @@
"name": "Straits",
"directory": "/media/naturals/straits/",
"shapefile": "E:/macrovision/mapshaper/straits/ne_10m_land.shp",
+ "mode": "bounding-boxes",
"items": [
{
"name": "Strait of Dover",
diff --git a/scripts/mapshaper/us-interstates.json b/scripts/mapshaper/us-interstates.json
new file mode 100644
index 00000000..b8572f07
--- /dev/null
+++ b/scripts/mapshaper/us-interstates.json
@@ -0,0 +1,9 @@
+{
+ "name": "US Interstates",
+ "directory": "/media/naturals/us-interstates",
+ "shapefile": "E:/macrovision/mapshaper/us-roads/ne_10m_roads_north_america.shp",
+ "mode": "filter",
+ "base-filter": "this.properties.prefix == 'I' && this.properties.class == 'Interstate'",
+ "stroke-width": 10,
+ "items": [{"name": "I-2", "filter": "this.properties.number == 2"}, {"name": "I-4", "filter": "this.properties.number == 4"}, {"name": "I-5", "filter": "this.properties.number == 5"}, {"name": "I-8", "filter": "this.properties.number == 8"}, {"name": "I-10", "filter": "this.properties.number == 10"}, {"name": "I-11", "filter": "this.properties.number == 11"}, {"name": "I-12", "filter": "this.properties.number == 12"}, {"name": "I-14", "filter": "this.properties.number == 14"}, {"name": "I-15", "filter": "this.properties.number == 15"}, {"name": "I-16", "filter": "this.properties.number == 16"}, {"name": "I-17", "filter": "this.properties.number == 17"}, {"name": "I-19", "filter": "this.properties.number == 19"}, {"name": "I-20", "filter": "this.properties.number == 20"}, {"name": "I-22", "filter": "this.properties.number == 22"}, {"name": "I-24", "filter": "this.properties.number == 26"}, {"name": "I-27", "filter": "this.properties.number == 27"}, {"name": "I-29", "filter": "this.properties.number == 29"}, {"name": "I-30", "filter": "this.properties.number == 30"}, {"name": "I-31", "filter": "this.properties.number == 31"}, {"name": "I-35", "filter": "this.properties.number == 35"}, {"name": "I-37", "filter": "this.properties.number == 37"}, {"name": "I-39", "filter": "this.properties.number == 39"}, {"name": "I-40", "filter": "this.properties.number == 40"}, {"name": "I-41", "filter": "this.properties.number == 41"}, {"name": "I-43", "filter": "this.properties.number == 43"}, {"name": "I-44", "filter": "this.properties.number == 44"}, {"name": "I-45", "filter": "this.properties.number == 45"}, {"name": "I-49", "filter": "this.properties.number == 49"}, {"name": "I-55", "filter": "this.properties.number == 55"}, {"name": "I-57", "filter": "this.properties.number == 57"}, {"name": "I-59", "filter": "this.properties.number == 59"}, {"name": "I-64", "filter": "this.properties.number == 64"}, {"name": "I-65", "filter": "this.properties.number == 65"}, {"name": "I-66", "filter": "this.properties.number == 66"}, {"name": "I-66", "filter": "this.properties.number == 66"}, {"name": "I-68", "filter": "this.properties.number == 68"}, {"name": "I-69", "filter": "this.properties.number == 69"}, {"name": "I-70", "filter": "this.properties.number == 70"}, {"name": "I-71", "filter": "this.properties.number == 71"}, {"name": "I-72", "filter": "this.properties.number == 72"}, {"name": "I-73", "filter": "this.properties.number == 73"}, {"name": "I-74", "filter": "this.properties.number == 74"}, {"name": "I-75", "filter": "this.properties.number == 75"}, {"name": "I-76", "filter": "this.properties.number == 76"}, {"name": "I-76", "filter": "this.properties.number == 76"}, {"name": "I-77", "filter": "this.properties.number == 77"}, {"name": "I-78", "filter": "this.properties.number == 78"}, {"name": "I-79", "filter": "this.properties.number == 79"}, {"name": "I-80", "filter": "this.properties.number == 80"}, {"name": "I-81", "filter": "this.properties.number == 81"}, {"name": "I-82", "filter": "this.properties.number == 82"}, {"name": "I-83", "filter": "this.properties.number == 83"}, {"name": "I-84", "filter": "this.properties.number == 84"}, {"name": "I-84", "filter": "this.properties.number == 84"}, {"name": "I-85", "filter": "this.properties.number == 85"}, {"name": "I-86", "filter": "this.properties.number == 86"}, {"name": "I-86", "filter": "this.properties.number == 86"}, {"name": "I-87", "filter": "this.properties.number == 87"}, {"name": "I-87", "filter": "this.properties.number == 87"}, {"name": "I-88", "filter": "this.properties.number == 88"}, {"name": "I-88", "filter": "this.properties.number == 88"}, {"name": "I-89", "filter": "this.properties.number == 89"}, {"name": "I-90", "filter": "this.properties.number == 90"}, {"name": "I-91", "filter": "this.properties.number == 91"}, {"name": "I-93", "filter": "this.properties.number == 93"}, {"name": "I-94", "filter": "this.properties.number == 94"}, {"name": "I-95", "filter": "this.properties.number == 95"}, {"name": "I-96", "filter": "this.properties.number == 96"}, {"name": "I-97", "filter": "this.properties.number == 97"}, {"name": "I-99", "filter": "this.properties.number == 99"}]
+}
\ No newline at end of file