@yangyongtao/gaea 1.0.3 → 1.1.0

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.
Files changed (137) hide show
  1. package/README.md +158 -67
  2. package/package.json +28 -7
  3. package/public/Gaea.apple-touch-icon.png +0 -0
  4. package/public/Gaea.apple-touch-icon.png.import +35 -0
  5. package/public/Gaea.audio.worklet.js +211 -0
  6. package/public/Gaea.html +245 -0
  7. package/public/Gaea.icon.png +0 -0
  8. package/public/Gaea.icon.png.import +35 -0
  9. package/public/Gaea.js +782 -0
  10. package/public/Gaea.png +0 -0
  11. package/public/Gaea.png.import +35 -0
  12. package/public/Gaea.worker.js +1 -0
  13. package/public/GaeaApp.html +275 -0
  14. package/public/GaeaMethods.js +4342 -0
  15. package/public/GaeaModule.html +276 -0
  16. package/public/config.js +76 -0
  17. package/public/constants.js +185 -0
  18. package/public/favicon.ico +0 -0
  19. package/public/image/1.png +0 -0
  20. package/public/image/12-min-min.gif +0 -0
  21. package/public/image/3.png +0 -0
  22. package/public/image/labelImg//345/217/263/350/276/271.png +0 -0
  23. package/public/image/labelImg//345/267/246/350/276/271.png +0 -0
  24. package/public/image/labelImg//346/260/264/344/275/215.png +0 -0
  25. package/public/image/screenIcon//345/205/266/344/273/226.png +0 -0
  26. package/public/image/screenIcon//345/256/211/345/205/250/347/233/221/346/265/213/350/201/232/345/220/210-/347/272/242.png +0 -0
  27. package/public/image/screenIcon//345/256/211/345/205/250/347/233/221/346/265/213/350/201/232/345/220/210-/347/273/277.png +0 -0
  28. package/public/image/screenIcon//346/212/242/351/231/251/345/215/225/344/275/215.png +0 -0
  29. package/public/image/screenIcon//346/226/255/351/235/242.png +0 -0
  30. package/public/image/screenIcon//346/227/240/344/272/272/346/234/272.png +0 -0
  31. package/public/image/screenIcon//346/227/240/344/272/272/346/234/272/345/237/272/345/234/260.png +0 -0
  32. package/public/image/screenIcon//346/260/264/345/272/223/347/253/231.png +0 -0
  33. package/public/image/screenIcon//346/260/264/346/226/207/346/265/213/347/253/231.png +0 -0
  34. package/public/image/screenIcon//346/260/264/351/227/270.png +0 -0
  35. package/public/image/screenIcon//346/262/263/351/201/223/347/253/231-/346/227/240/346/225/260/346/215/256.png +0 -0
  36. package/public/image/screenIcon//346/262/263/351/201/223/347/253/231-/346/255/243/345/270/270.png +0 -0
  37. package/public/image/screenIcon//346/262/263/351/201/223/347/253/231-/350/266/205/344/277/235.png +0 -0
  38. package/public/image/screenIcon//346/262/263/351/201/223/347/253/231-/350/266/205/350/255/246.png +0 -0
  39. package/public/image/screenIcon//346/263/265/347/253/231-/347/201/260.png +0 -0
  40. package/public/image/screenIcon//346/263/265/347/253/231-/347/273/277.png +0 -0
  41. package/public/image/screenIcon//346/265/201/351/207/217/346/265/213/347/253/231.png +0 -0
  42. package/public/image/screenIcon//346/265/267/345/241/230-1/347/272/247.png +0 -0
  43. package/public/image/screenIcon//346/265/267/345/241/230-2/347/272/247.png +0 -0
  44. package/public/image/screenIcon//346/265/267/345/241/230-3/347/272/247.png +0 -0
  45. package/public/image/screenIcon//346/265/267/345/241/230-4/347/272/247.png +0 -0
  46. package/public/image/screenIcon//346/265/267/345/241/230-5/347/272/247.png +0 -0
  47. package/public/image/screenIcon//346/265/267/345/241/230-/346/251/231.png +0 -0
  48. package/public/image/screenIcon//346/265/267/345/241/230-/347/272/242.png +0 -0
  49. package/public/image/screenIcon//346/265/267/345/241/230-/347/273/277.png +0 -0
  50. package/public/image/screenIcon//346/265/267/345/241/230-/350/247/204/346/250/241/344/273/245/344/270/213.png +0 -0
  51. package/public/image/screenIcon//346/265/267/345/241/230-/351/273/204.png +0 -0
  52. package/public/image/screenIcon//346/265/267/345/241/230.png +0 -0
  53. package/public/image/screenIcon//346/275/256/344/275/215.png +0 -0
  54. package/public/image/screenIcon//346/275/256/344/275/215/347/253/231-/346/227/240/346/225/260/346/215/256.png +0 -0
  55. package/public/image/screenIcon//346/275/256/344/275/215/347/253/231-/346/255/243/345/270/270.png +0 -0
  56. package/public/image/screenIcon//346/275/256/344/275/215/347/253/231-/350/266/205/344/277/235.png +0 -0
  57. package/public/image/screenIcon//346/275/256/344/275/215/347/253/231-/350/266/205/350/255/246.png +0 -0
  58. package/public/image/screenIcon//347/211/251/350/265/204/344/273/223/345/272/223.png +0 -0
  59. package/public/image/screenIcon//347/220/203/346/234/272-/345/205/263.png +0 -0
  60. package/public/image/screenIcon//347/220/203/346/234/272-/345/274/200.png +0 -0
  61. package/public/image/screenIcon//347/220/203/346/234/272-/347/272/242.png +0 -0
  62. package/public/image/screenIcon//350/247/206/351/242/221/347/233/221/346/216/247.png +0 -0
  63. package/public/image/screenIcon//351/227/270/351/227/250-/347/201/260.png +0 -0
  64. package/public/image/screenIcon//351/227/270/351/227/250-/347/273/277.png +0 -0
  65. package/public/image/screenIcon//351/230/262/346/264/252/344/273/223/345/272/223.png +0 -0
  66. package/public/image/screenIcon//351/232/220/346/202/243.png +0 -0
  67. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/346/265/205/350/223/235.png +0 -0
  68. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/347/201/260.png +0 -0
  69. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/347/262/211.png +0 -0
  70. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/347/272/242.png +0 -0
  71. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/347/273/277.png +0 -0
  72. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/350/223/235.png +0 -0
  73. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/351/273/204.png +0 -0
  74. package/public/image/screenIcon//351/233/250/351/207/217/347/253/231-/351/273/221.png +0 -0
  75. package/public/image/screenIcon//351/243/216/351/200/237.png +0 -0
  76. package/public/image/screenIcon//351/243/216/351/200/237/346/265/213/347/253/231.png +0 -0
  77. package/public/image//346/260/264/346/226/207.gif +0 -0
  78. package/public/image//350/211/262/345/270/246.png +0 -0
  79. package/public/index.html +22 -0
  80. package/public/index.js +185662 -0
  81. package/public/jsWebControl-1.0.0.min.js +31 -0
  82. package/public/jsencrypt.min.js +1 -0
  83. package/public/math/Box2.js +203 -0
  84. package/public/math/Box3.js +532 -0
  85. package/public/math/Color.js +605 -0
  86. package/public/math/ColorManagement.js +74 -0
  87. package/public/math/Cylindrical.js +61 -0
  88. package/public/math/EngineUtils.js +81 -0
  89. package/public/math/Euler.js +315 -0
  90. package/public/math/Frustum.js +162 -0
  91. package/public/math/Interpolant.js +241 -0
  92. package/public/math/Line3.js +115 -0
  93. package/public/math/MathUtils.js +345 -0
  94. package/public/math/Matrix3.js +365 -0
  95. package/public/math/Matrix4.js +858 -0
  96. package/public/math/Plane.js +205 -0
  97. package/public/math/Quaternion.js +724 -0
  98. package/public/math/Ray.js +493 -0
  99. package/public/math/Sphere.js +243 -0
  100. package/public/math/Spherical.js +86 -0
  101. package/public/math/SphericalHarmonics3.js +243 -0
  102. package/public/math/Triangle.js +299 -0
  103. package/public/math/Vector2.js +464 -0
  104. package/public/math/Vector3.js +715 -0
  105. package/public/math/Vector4.js +644 -0
  106. package/public/math/interpolants/CubicInterpolant.js +151 -0
  107. package/public/math/interpolants/DiscreteInterpolant.js +26 -0
  108. package/public/math/interpolants/LinearInterpolant.js +38 -0
  109. package/public/math/interpolants/QuaternionLinearInterpolant.js +39 -0
  110. package/public/static/Cloud.png +0 -0
  111. package/public/static/Global2.jpg +0 -0
  112. package/public/static/css/main.css +170 -0
  113. package/public/static/geojson//346/265/267/345/241/230.geojson +99 -0
  114. package/public/static/img/loading.gif +0 -0
  115. package/public/static/js/app.js +359 -0
  116. package/public/static/js/appcontroller.js +207 -0
  117. package/public/static/js/dist/game.dev.js +137 -0
  118. package/public/static/js/env.js +74 -0
  119. package/public/static/js/event/event.js +107 -0
  120. package/public/static/js/init.js +8 -0
  121. package/public/static/js/initcloudmorph.js +1 -0
  122. package/public/static/js/log.js +35 -0
  123. package/public/static/js/network/ajax.js +29 -0
  124. package/public/static/js/network/rtcp.js +172 -0
  125. package/public/static/js/network/socket.js +106 -0
  126. package/public/web-control.min.js +2 -0
  127. package/scripts/postinstall.mjs +127 -0
  128. package/src/GaeaMethods.js +68 -405
  129. package/src/components/FlyAlongRoute.vue +1 -0
  130. package/src/components/WeatherControl.vue +2 -0
  131. package/src/directives/vDrag.js +70 -0
  132. package/src/index.js +1 -8
  133. package/src/plugin.js +16 -0
  134. package/src/utils.js +10 -21
  135. package/src/vite-plugin.js +117 -0
  136. package/public/static/1111.res +0 -0
  137. package/src/config.js +0 -40
@@ -0,0 +1,151 @@
1
+ import { ZeroCurvatureEnding } from '../../constants.js';
2
+ import { Interpolant } from '../Interpolant.js';
3
+ import { WrapAroundEnding, ZeroSlopeEnding } from '../../constants.js';
4
+
5
+ /**
6
+ * Fast and simple cubic spline interpolant.
7
+ *
8
+ * It was derived from a Hermitian construction setting the first derivative
9
+ * at each sample position to the linear slope between neighboring positions
10
+ * over their parameter interval.
11
+ */
12
+
13
+ class CubicInterpolant extends Interpolant {
14
+
15
+ constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
16
+
17
+ super( parameterPositions, sampleValues, sampleSize, resultBuffer );
18
+
19
+ this._weightPrev = - 0;
20
+ this._offsetPrev = - 0;
21
+ this._weightNext = - 0;
22
+ this._offsetNext = - 0;
23
+
24
+ this.DefaultSettings_ = {
25
+
26
+ endingStart: ZeroCurvatureEnding,
27
+ endingEnd: ZeroCurvatureEnding
28
+
29
+ };
30
+
31
+ }
32
+
33
+ intervalChanged_( i1, t0, t1 ) {
34
+
35
+ const pp = this.parameterPositions;
36
+ let iPrev = i1 - 2,
37
+ iNext = i1 + 1,
38
+
39
+ tPrev = pp[ iPrev ],
40
+ tNext = pp[ iNext ];
41
+
42
+ if ( tPrev === undefined ) {
43
+
44
+ switch ( this.getSettings_().endingStart ) {
45
+
46
+ case ZeroSlopeEnding:
47
+
48
+ // f'(t0) = 0
49
+ iPrev = i1;
50
+ tPrev = 2 * t0 - t1;
51
+
52
+ break;
53
+
54
+ case WrapAroundEnding:
55
+
56
+ // use the other end of the curve
57
+ iPrev = pp.length - 2;
58
+ tPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];
59
+
60
+ break;
61
+
62
+ default: // ZeroCurvatureEnding
63
+
64
+ // f''(t0) = 0 a.k.a. Natural Spline
65
+ iPrev = i1;
66
+ tPrev = t1;
67
+
68
+ }
69
+
70
+ }
71
+
72
+ if ( tNext === undefined ) {
73
+
74
+ switch ( this.getSettings_().endingEnd ) {
75
+
76
+ case ZeroSlopeEnding:
77
+
78
+ // f'(tN) = 0
79
+ iNext = i1;
80
+ tNext = 2 * t1 - t0;
81
+
82
+ break;
83
+
84
+ case WrapAroundEnding:
85
+
86
+ // use the other end of the curve
87
+ iNext = 1;
88
+ tNext = t1 + pp[ 1 ] - pp[ 0 ];
89
+
90
+ break;
91
+
92
+ default: // ZeroCurvatureEnding
93
+
94
+ // f''(tN) = 0, a.k.a. Natural Spline
95
+ iNext = i1 - 1;
96
+ tNext = t0;
97
+
98
+ }
99
+
100
+ }
101
+
102
+ const halfDt = ( t1 - t0 ) * 0.5,
103
+ stride = this.valueSize;
104
+
105
+ this._weightPrev = halfDt / ( t0 - tPrev );
106
+ this._weightNext = halfDt / ( tNext - t1 );
107
+ this._offsetPrev = iPrev * stride;
108
+ this._offsetNext = iNext * stride;
109
+
110
+ }
111
+
112
+ interpolate_( i1, t0, t, t1 ) {
113
+
114
+ const result = this.resultBuffer,
115
+ values = this.sampleValues,
116
+ stride = this.valueSize,
117
+
118
+ o1 = i1 * stride, o0 = o1 - stride,
119
+ oP = this._offsetPrev, oN = this._offsetNext,
120
+ wP = this._weightPrev, wN = this._weightNext,
121
+
122
+ p = ( t - t0 ) / ( t1 - t0 ),
123
+ pp = p * p,
124
+ ppp = pp * p;
125
+
126
+ // evaluate polynomials
127
+
128
+ const sP = - wP * ppp + 2 * wP * pp - wP * p;
129
+ const s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;
130
+ const s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;
131
+ const sN = wN * ppp - wN * pp;
132
+
133
+ // combine data linearly
134
+
135
+ for ( let i = 0; i !== stride; ++ i ) {
136
+
137
+ result[ i ] =
138
+ sP * values[ oP + i ] +
139
+ s0 * values[ o0 + i ] +
140
+ s1 * values[ o1 + i ] +
141
+ sN * values[ oN + i ];
142
+
143
+ }
144
+
145
+ return result;
146
+
147
+ }
148
+
149
+ }
150
+
151
+ export { CubicInterpolant };
@@ -0,0 +1,26 @@
1
+ import { Interpolant } from '../Interpolant.js';
2
+
3
+ /**
4
+ *
5
+ * Interpolant that evaluates to the sample value at the position preceding
6
+ * the parameter.
7
+ */
8
+
9
+ class DiscreteInterpolant extends Interpolant {
10
+
11
+ constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
12
+
13
+ super( parameterPositions, sampleValues, sampleSize, resultBuffer );
14
+
15
+ }
16
+
17
+ interpolate_( i1 /*, t0, t, t1 */ ) {
18
+
19
+ return this.copySampleValue_( i1 - 1 );
20
+
21
+ }
22
+
23
+ }
24
+
25
+
26
+ export { DiscreteInterpolant };
@@ -0,0 +1,38 @@
1
+ import { Interpolant } from '../Interpolant.js';
2
+
3
+ class LinearInterpolant extends Interpolant {
4
+
5
+ constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
6
+
7
+ super( parameterPositions, sampleValues, sampleSize, resultBuffer );
8
+
9
+ }
10
+
11
+ interpolate_( i1, t0, t, t1 ) {
12
+
13
+ const result = this.resultBuffer,
14
+ values = this.sampleValues,
15
+ stride = this.valueSize,
16
+
17
+ offset1 = i1 * stride,
18
+ offset0 = offset1 - stride,
19
+
20
+ weight1 = ( t - t0 ) / ( t1 - t0 ),
21
+ weight0 = 1 - weight1;
22
+
23
+ for ( let i = 0; i !== stride; ++ i ) {
24
+
25
+ result[ i ] =
26
+ values[ offset0 + i ] * weight0 +
27
+ values[ offset1 + i ] * weight1;
28
+
29
+ }
30
+
31
+ return result;
32
+
33
+ }
34
+
35
+ }
36
+
37
+
38
+ export { LinearInterpolant };
@@ -0,0 +1,39 @@
1
+ import { Interpolant } from '../Interpolant.js';
2
+ import { Quaternion } from '../Quaternion.js';
3
+
4
+ /**
5
+ * Spherical linear unit quaternion interpolant.
6
+ */
7
+
8
+ class QuaternionLinearInterpolant extends Interpolant {
9
+
10
+ constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
11
+
12
+ super( parameterPositions, sampleValues, sampleSize, resultBuffer );
13
+
14
+ }
15
+
16
+ interpolate_( i1, t0, t, t1 ) {
17
+
18
+ const result = this.resultBuffer,
19
+ values = this.sampleValues,
20
+ stride = this.valueSize,
21
+
22
+ alpha = ( t - t0 ) / ( t1 - t0 );
23
+
24
+ let offset = i1 * stride;
25
+
26
+ for ( let end = offset + stride; offset !== end; offset += 4 ) {
27
+
28
+ Quaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );
29
+
30
+ }
31
+
32
+ return result;
33
+
34
+ }
35
+
36
+ }
37
+
38
+
39
+ export { QuaternionLinearInterpolant };
Binary file
Binary file
@@ -0,0 +1,170 @@
1
+ html, body {
2
+ height: 100%;
3
+ }
4
+
5
+ body {
6
+ display: flex;
7
+ flex-direction: column;
8
+ }
9
+
10
+ #app-body {
11
+ /* position: fixed; */
12
+ overflow: hidden;
13
+ display: flex;
14
+ height: 100%;
15
+ width: 100%;
16
+ justify-content: space-between;
17
+ flex-grow: 1;
18
+ }
19
+
20
+ #app {
21
+ flex-grow: 1;
22
+ }
23
+
24
+ #app-container {
25
+ height: 100%;
26
+ width: 100%;
27
+ border-radius: 5px 5px 5px 5px;
28
+ background-color: #102a43;
29
+
30
+ -webkit-box-shadow: 0px 0px 2px 2px rgba(219, 222, 222, 1);
31
+ -moz-box-shadow: 0px 0px 2px 2px rgba(219, 222, 222, 1);
32
+ box-shadow: 0px 0px 2px 2px rgba(25, 25, 25, 1);
33
+
34
+ -webkit-box-shadow: 0px 0px 2px 2px rgba(219, 222, 222, 1);
35
+ -moz-box-shadow: 0px 0px 2px 2px rgba(219, 222, 222, 1);
36
+ box-shadow: 0px 0px 2px 2px rgba(25, 25, 25, 1);
37
+ }
38
+
39
+ #app-screen {
40
+ }
41
+
42
+ #discovery {
43
+ width: 12%;
44
+ flex-grow: 0;
45
+ margin-right: 5px;
46
+ }
47
+
48
+ #app-meta {
49
+ display: block;
50
+ padding-bottom: 10px;
51
+ flex-grow: 0;
52
+ align-items: center;
53
+ flex-shrink: 1;
54
+ }
55
+
56
+ #chat {
57
+ margin-left: 5px;
58
+ width: 25%;
59
+ display: flex;
60
+ flex-direction: column;
61
+ flex-grow: 0;
62
+ }
63
+
64
+ #discoverydropdown {
65
+ width: 100%;
66
+ border: 0px;
67
+ outline: 0px;
68
+ overflow: auto;
69
+ overflow-wrap: break-word;
70
+ background-color: #616e7c;
71
+ color: #eeeeee;
72
+ }
73
+
74
+ /* #chatoutput {
75
+ flex-grow: 1;
76
+ margin-top: 0px;
77
+ margin-bottom: 5px;
78
+ border-radius: 2px;
79
+ } */
80
+
81
+ #chatoutput {
82
+ max-height: 100%;
83
+ overflow: auto;
84
+ overflow-wrap: break-word;
85
+ background-color: #616e7c;
86
+ color: #eeeeee;
87
+ flex-grow: 1;
88
+ margin-top: 0px;
89
+ margin-bottom: 5px;
90
+ border-radius: 2px;
91
+ }
92
+
93
+ #chatinput {
94
+ width: 100%;
95
+ display: flex;
96
+ flex-direction: row;
97
+ }
98
+
99
+ #usernamelabel {
100
+ width: 100px;
101
+ }
102
+
103
+ input[type="text"] {
104
+ width: 100%;
105
+ display: flex;
106
+ flex-direction: row;
107
+ color: #f0f4f8;
108
+ box-sizing: border-box;
109
+ background-color: #616e7c;
110
+ border: none;
111
+ border-radius: 2px;
112
+ margin: 5px auto;
113
+ transition: background-color 0.5s ease;
114
+ }
115
+
116
+ #messagelabel {
117
+ width: 100px;
118
+ }
119
+
120
+ #chatmessage {
121
+ width: 100%;
122
+ display: flex;
123
+ flex-direction: row;
124
+ background-color: #616e7c;
125
+ margin: 5px auto;
126
+ color: #f0f4f8;
127
+ border-radius: 2px;
128
+ }
129
+
130
+ .output-row {
131
+ display: flex;
132
+ flex-direction: row;
133
+ }
134
+
135
+ .output-user-label {
136
+ width: 80px;
137
+ flex: 0 0 33.33%;
138
+ }
139
+
140
+ .output-message-label {
141
+ width: 80px;
142
+ }
143
+
144
+ label {
145
+ color: #f0f4f8;
146
+ }
147
+
148
+ body {
149
+ /* background-color: #121212; */
150
+ background-color: #102a43;
151
+ }
152
+
153
+ * {
154
+ /* font-family: Arial, Helvetica, sans-serif; */
155
+ font-family: "Josefin Sans", sans-serif;
156
+ }
157
+
158
+ input {
159
+ color: #121212;
160
+ }
161
+
162
+ ::placeholder {
163
+ /* Chrome, Firefox, Opera, Safari 10.1+ */
164
+ color: #fcdab7;
165
+ opacity: 0.5; /* Firefox */
166
+ }
167
+
168
+ a {
169
+ color: #fcdab7;
170
+ }
@@ -0,0 +1,99 @@
1
+ {
2
+ "type": "FeatureCollection",
3
+ "name": "海塘_tamp",
4
+ "crs": {
5
+ "type": "name",
6
+ "properties": {
7
+ "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
8
+ }
9
+ },
10
+ "features": [
11
+ {
12
+ "type": "Feature",
13
+ "properties": {
14
+ "FID_": 0,
15
+ "Entity": "LWPolyline",
16
+ "Layer": "02辅线",
17
+ "Color": 190,
18
+ "Linetype": "CONTINUOUS",
19
+ "Elevation": 0.0,
20
+ "LineWt": 25,
21
+ "RefName": null,
22
+ "height": 0.0,
23
+ "GC": 0.0,
24
+ "GCK": 0.0
25
+ },
26
+ "geometry": {
27
+ "type": "MultiLineString",
28
+ "coordinates": [
29
+ [
30
+ [
31
+ 120.462982899356916,
32
+ 27.216464200119404
33
+ ],
34
+ [
35
+ 120.46269492530125,
36
+ 27.216436549974826
37
+ ],
38
+ [
39
+ 120.462541816720318,
40
+ 27.216851342841846
41
+ ],
42
+ [
43
+ 120.46233882985473,
44
+ 27.217260417183489
45
+ ],
46
+ [
47
+ 120.460928315979658,
48
+ 27.21945100134317
49
+ ],
50
+ [
51
+ 120.460739276807431,
52
+ 27.219715706444365
53
+ ],
54
+ [
55
+ 120.460524594947529,
56
+ 27.219964292216719
57
+ ],
58
+ [
59
+ 120.460158283702327,
60
+ 27.220302656152327
61
+ ],
62
+ [
63
+ 120.45974472401339,
64
+ 27.220594274514955
65
+ ],
66
+ [
67
+ 120.45804817100759,
68
+ 27.221629531892258
69
+ ],
70
+ [
71
+ 120.457576848155412,
72
+ 27.221853118539915
73
+ ],
74
+ [
75
+ 120.455646944346682,
76
+ 27.222623649714439
77
+ ],
78
+ [
79
+ 120.455395889756105,
80
+ 27.222735263119674
81
+ ],
82
+ [
83
+ 120.455040835835419,
84
+ 27.222936549629328
85
+ ],
86
+ [
87
+ 120.45421546673326,
88
+ 27.223469957614515
89
+ ],
90
+ [
91
+ 120.453746464811616,
92
+ 27.223687884007713
93
+ ]
94
+ ]
95
+ ]
96
+ }
97
+ }
98
+ ]
99
+ }
Binary file