maomaobj commited on
Commit
6b8464c
·
verified ·
1 Parent(s): aa79e0d

把“果园种植面积AI遥感分析系统”中的“系统”二字去掉 - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +415 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Pingguo1
3
- emoji: 🌍
4
  colorFrom: gray
5
- colorTo: purple
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: pingguo1
3
+ emoji: 🐳
4
  colorFrom: gray
5
+ colorTo: gray
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,415 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>果园种植面积AI遥感分析</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
9
+ <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
11
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
12
+ <style>
13
+ .map-container {
14
+ height: calc(100vh - 220px);
15
+ }
16
+ .sidebar {
17
+ background-color: rgba(255, 255, 255, 0.9);
18
+ backdrop-filter: blur(5px);
19
+ }
20
+ .map-overlay {
21
+ position: absolute;
22
+ z-index: 1000;
23
+ pointer-events: none;
24
+ }
25
+ .progress-bar {
26
+ height: 4px;
27
+ background: linear-gradient(90deg, #4f46e5 0%, #10b981 50%, #f59e0b 100%);
28
+ animation: progress 2s ease-in-out infinite;
29
+ background-size: 200% 100%;
30
+ }
31
+ @keyframes progress {
32
+ 0% { background-position: 0% 50%; }
33
+ 50% { background-position: 100% 50%; }
34
+ 100% { background-position: 0% 50%; }
35
+ }
36
+ .orchard-boundary {
37
+ stroke: #ef4444;
38
+ stroke-width: 2;
39
+ fill: rgba(239, 68, 68, 0.2);
40
+ }
41
+ </style>
42
+ </head>
43
+ <body class="bg-gray-100 font-sans">
44
+ <div class="flex flex-col h-screen">
45
+ <!-- 顶部导航栏 -->
46
+ <header class="bg-white shadow-sm">
47
+ <div class="max-w-7xl mx-auto px-4 py-3 sm:px-6 lg:px-8 flex justify-between items-center">
48
+ <div class="flex items-center">
49
+ <div class="w-10 h-10 rounded-full bg-gradient-to-r from-blue-600 to-green-500 flex items-center justify-center text-white">
50
+ <i class="fas fa-satellite-dish text-xl"></i>
51
+ </div>
52
+ <h1 class="ml-3 text-xl font-bold text-gray-800">果园种植面积AI遥感分析</h1>
53
+ </div>
54
+ <div class="flex items-center space-x-4">
55
+ <div class="text-sm text-gray-600">
56
+ <i class="fas fa-calendar-alt mr-1"></i>
57
+ <span id="current-date">2023年11月15日</span>
58
+ </div>
59
+ <div class="text-sm text-gray-600">
60
+ <i class="fas fa-map-marker-alt mr-1"></i>
61
+ <span>陕西省延安市</span>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </header>
66
+
67
+ <!-- 主内容区 -->
68
+ <main class="flex-1 flex overflow-hidden">
69
+ <!-- 左侧图层控制面板 -->
70
+ <div class="sidebar w-64 p-4 border-r border-gray-200 overflow-y-auto">
71
+ <h2 class="text-lg font-semibold text-gray-800 mb-4 flex items-center">
72
+ <i class="fas fa-layer-group mr-2 text-blue-600"></i>
73
+ 图层控制
74
+ </h2>
75
+
76
+ <div class="space-y-3">
77
+ <div class="bg-gray-50 p-3 rounded-lg">
78
+ <h3 class="text-sm font-medium text-gray-700 mb-2">基础底图</h3>
79
+ <div class="space-y-2">
80
+ <label class="flex items-center space-x-2 cursor-pointer">
81
+ <input type="radio" name="base-map" class="form-radio text-blue-600" checked>
82
+ <span class="text-gray-700">卫星影像</span>
83
+ </label>
84
+ <label class="flex items-center space-x-2 cursor-pointer">
85
+ <input type="radio" name="base-map" class="form-radio text-blue-600">
86
+ <span class="text-gray-700">地形图</span>
87
+ </label>
88
+ <label class="flex items-center space-x-2 cursor-pointer">
89
+ <input type="radio" name="base-map" class="form-radio text-blue-600">
90
+ <span class="text-gray-700">行政区划</span>
91
+ </label>
92
+ </div>
93
+ </div>
94
+
95
+ <div class="bg-gray-50 p-3 rounded-lg">
96
+ <h3 class="text-sm font-medium text-gray-700 mb-2">遥感指数</h3>
97
+ <div class="space-y-2">
98
+ <label class="flex items-center space-x-2 cursor-pointer">
99
+ <input type="checkbox" class="form-checkbox text-green-600" checked>
100
+ <span class="text-gray-700">NDVI植被指数</span>
101
+ </label>
102
+ <label class="flex items-center space-x-2 cursor-pointer">
103
+ <input type="checkbox" class="form-checkbox text-green-600">
104
+ <span class="text-gray-700">EVI增强植被指数</span>
105
+ </label>
106
+ <label class="flex items-center space-x-2 cursor-pointer">
107
+ <input type="checkbox" class="form-checkbox text-green-600">
108
+ <span class="text-gray-700">NDWI水体指数</span>
109
+ </label>
110
+ </div>
111
+ </div>
112
+
113
+ <div class="bg-gray-50 p-3 rounded-lg">
114
+ <h3 class="text-sm font-medium text-gray-700 mb-2">AI识别结果</h3>
115
+ <div class="space-y-2">
116
+ <label class="flex items-center space-x-2 cursor-pointer">
117
+ <input type="checkbox" class="form-checkbox text-red-600" checked>
118
+ <span class="text-gray-700">果园边界</span>
119
+ </label>
120
+ <label class="flex items-center space-x-2 cursor-pointer">
121
+ <input type="checkbox" class="form-checkbox text-red-600">
122
+ <span class="text-gray-700">置信度热图</span>
123
+ </label>
124
+ </div>
125
+ </div>
126
+
127
+ <div class="bg-gray-50 p-3 rounded-lg">
128
+ <h3 class="text-sm font-medium text-gray-700 mb-2">透明度调节</h3>
129
+ <div class="mt-2">
130
+ <input type="range" min="0" max="100" value="50" class="w-full h-2 bg-gray-200 rounded-lg appearance-none cursor-pointer">
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+
136
+ <!-- 中央地图区域 -->
137
+ <div class="flex-1 relative">
138
+ <div id="map" class="map-container w-full h-full"></div>
139
+
140
+ <!-- 地图控件 -->
141
+ <div class="absolute top-4 right-4 z-1000">
142
+ <div class="bg-white rounded-lg shadow-md p-2 flex flex-col space-y-2">
143
+ <button class="p-2 text-gray-700 hover:bg-gray-100 rounded" title="放大">
144
+ <i class="fas fa-plus"></i>
145
+ </button>
146
+ <button class="p-2 text-gray-700 hover:bg-gray-100 rounded" title="缩小">
147
+ <i class="fas fa-minus"></i>
148
+ </button>
149
+ <button class="p-2 text-gray-700 hover:bg-gray-100 rounded" title="全图">
150
+ <i class="fas fa-globe"></i>
151
+ </button>
152
+ </div>
153
+ </div>
154
+
155
+ <!-- 比例尺 -->
156
+ <div class="absolute bottom-4 left-4 z-1000 bg-white p-2 rounded shadow-md">
157
+ <div id="scale" class="text-xs text-gray-700">1:10,000</div>
158
+ </div>
159
+
160
+ <!-- 坐标显示 -->
161
+ <div class="absolute bottom-4 right-4 z-1000 bg-white p-2 rounded shadow-md">
162
+ <div id="coordinates" class="text-xs text-gray-700">经度: 109.48, 纬度: 36.58</div>
163
+ </div>
164
+ </div>
165
+
166
+ <!-- 右侧AI控制面板 -->
167
+ <div class="sidebar w-72 p-4 border-l border-gray-200 overflow-y-auto">
168
+ <h2 class="text-lg font-semibold text-gray-800 mb-4 flex items-center">
169
+ <i class="fas fa-robot mr-2 text-purple-600"></i>
170
+ AI识别控制
171
+ </h2>
172
+
173
+ <div class="space-y-4">
174
+ <div class="bg-gray-50 p-4 rounded-lg">
175
+ <h3 class="text-sm font-medium text-gray-700 mb-3">模型选择</h3>
176
+ <select class="w-full border border-gray-300 rounded-md px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500">
177
+ <option>U-Net v1 (推荐)</option>
178
+ <option>U-Net v2</option>
179
+ <option>DeepLab V2</option>
180
+ <option>DeepLab V3+</option>
181
+ <option>PSPNet</option>
182
+ </select>
183
+ </div>
184
+
185
+ <div class="bg-gray-50 p-4 rounded-lg">
186
+ <h3 class="text-sm font-medium text-gray-700 mb-3">识别参数</h3>
187
+ <div class="space-y-3">
188
+ <div>
189
+ <label class="block text-xs text-gray-500 mb-1">置信度阈值</label>
190
+ <input type="range" min="50" max="95" value="80" class="w-full">
191
+ <div class="text-xs text-gray-500 text-right">80%</div>
192
+ </div>
193
+ <div>
194
+ <label class="block text-xs text-gray-500 mb-1">最小地块面积</label>
195
+ <div class="flex">
196
+ <input type="number" value="0.5" class="w-3/4 border border-gray-300 rounded-l-md px-2 py-1">
197
+ <span class="w-1/4 bg-gray-200 text-center text-xs flex items-center justify-center rounded-r-md">公顷</span>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </div>
202
+
203
+ <div class="bg-gray-50 p-4 rounded-lg">
204
+ <h3 class="text-sm font-medium text-gray-700 mb-3">识别状态</h3>
205
+ <div class="space-y-2">
206
+ <div class="flex items-center justify-between text-sm">
207
+ <span class="text-gray-600">模型加载</span>
208
+ <span class="text-green-600"><i class="fas fa-check-circle"></i> 完成</span>
209
+ </div>
210
+ <div class="flex items-center justify-between text-sm">
211
+ <span class="text-gray-600">图像预处理</span>
212
+ <span class="text-green-600"><i class="fas fa-check-circle"></i> 完成</span>
213
+ </div>
214
+ <div class="flex items-center justify-between text-sm">
215
+ <span class="text-gray-600">AI识别</span>
216
+ <span class="text-blue-600"><i class="fas fa-sync-alt animate-spin"></i> 进行中</span>
217
+ </div>
218
+ <div class="progress-bar rounded-full mt-1"></div>
219
+ </div>
220
+ </div>
221
+
222
+ <button class="w-full bg-blue-600 hover:bg-blue-700 text-white py-2 px-4 rounded-md flex items-center justify-center space-x-2">
223
+ <i class="fas fa-play"></i>
224
+ <span>重新识别</span>
225
+ </button>
226
+
227
+ <div class="bg-gray-50 p-4 rounded-lg">
228
+ <h3 class="text-sm font-medium text-gray-700 mb-3">导出结果</h3>
229
+ <div class="grid grid-cols-2 gap-2">
230
+ <button class="bg-white border border-green-500 text-green-600 py-1 px-2 rounded text-sm flex items-center justify-center space-x-1">
231
+ <i class="fas fa-file-excel"></i>
232
+ <span>Excel</span>
233
+ </button>
234
+ <button class="bg-white border border-blue-500 text-blue-600 py-1 px-2 rounded text-sm flex items-center justify-center space-x-1">
235
+ <i class="fas fa-file-code"></i>
236
+ <span>GeoJSON</span>
237
+ </button>
238
+ <button class="bg-white border border-purple-500 text-purple-600 py-1 px-2 rounded text-sm flex items-center justify-center space-x-1">
239
+ <i class="fas fa-file-pdf"></i>
240
+ <span>PDF报告</span>
241
+ </button>
242
+ <button class="bg-white border border-orange-500 text-orange-600 py-1 px-2 rounded text-sm flex items-center justify-center space-x-1">
243
+ <i class="fas fa-image"></i>
244
+ <span>图片</span>
245
+ </button>
246
+ </div>
247
+ </div>
248
+ </div>
249
+ </div>
250
+ </main>
251
+
252
+ <!-- 底部统计面板 -->
253
+ <footer class="bg-white border-t border-gray-200">
254
+ <div class="max-w-7xl mx-auto px-4 py-3 sm:px-6 lg:px-8">
255
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-4">
256
+ <div class="bg-blue-50 p-3 rounded-lg">
257
+ <div class="text-xs text-blue-600 font-medium">识别总面积</div>
258
+ <div class="text-xl font-bold text-blue-800">1,245.67 <span class="text-sm">公顷</span></div>
259
+ <div class="text-xs text-gray-500 mt-1">较上月 <span class="text-green-600">+2.3%</span></div>
260
+ </div>
261
+ <div class="bg-green-50 p-3 rounded-lg">
262
+ <div class="text-xs text-green-600 font-medium">平均地块面积</div>
263
+ <div class="text-xl font-bold text-green-800">3.45 <span class="text-sm">公顷</span></div>
264
+ <div class="text-xs text-gray-500 mt-1">较上月 <span class="text-red-600">-0.8%</span></div>
265
+ </div>
266
+ <div class="bg-purple-50 p-3 rounded-lg">
267
+ <div class="text-xs text-purple-600 font-medium">识别地块数</div>
268
+ <div class="text-xl font-bold text-purple-800">361 <span class="text-sm">块</span></div>
269
+ <div class="text-xs text-gray-500 mt-1">较上月 <span class="text-green-600">+5.1%</span></div>
270
+ </div>
271
+ <div class="bg-yellow-50 p-3 rounded-lg">
272
+ <div class="text-xs text-yellow-600 font-medium">识别置信度</div>
273
+ <div class="text-xl font-bold text-yellow-800">86.7 <span class="text-sm">%</span></div>
274
+ <div class="text-xs text-gray-500 mt-1">较上月 <span class="text-green-600">+1.2%</span></div>
275
+ </div>
276
+ </div>
277
+
278
+ <div class="mt-4">
279
+ <canvas id="trendChart" height="120"></canvas>
280
+ </div>
281
+ </div>
282
+ </footer>
283
+ </div>
284
+
285
+ <script>
286
+ // 设置当前日期
287
+ const now = new Date();
288
+ document.getElementById('current-date').textContent = `${now.getFullYear()}年${now.getMonth()+1}月${now.getDate()}日`;
289
+
290
+ // 初始化地图
291
+ const map = L.map('map').setView([36.58, 109.48], 12);
292
+
293
+ // 添加底图
294
+ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
295
+ attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
296
+ }).addTo(map);
297
+
298
+ // 模拟果园边界数据 (实际应用中应从API获取)
299
+ const orchardBoundary = {
300
+ "type": "FeatureCollection",
301
+ "features": [
302
+ {
303
+ "type": "Feature",
304
+ "properties": {},
305
+ "geometry": {
306
+ "type": "Polygon",
307
+ "coordinates": [[
308
+ [109.45, 36.56], [109.46, 36.56], [109.46, 36.57],
309
+ [109.45, 36.57], [109.45, 36.56]
310
+ ]]
311
+ }
312
+ },
313
+ {
314
+ "type": "Feature",
315
+ "properties": {},
316
+ "geometry": {
317
+ "type": "Polygon",
318
+ "coordinates": [[
319
+ [109.47, 36.58], [109.48, 36.58], [109.48, 36.59],
320
+ [109.47, 36.59], [109.47, 36.58]
321
+ ]]
322
+ }
323
+ },
324
+ {
325
+ "type": "Feature",
326
+ "properties": {},
327
+ "geometry": {
328
+ "type": "Polygon",
329
+ "coordinates": [[
330
+ [109.49, 36.57], [109.50, 36.57], [109.50, 36.58],
331
+ [109.49, 36.58], [109.49, 36.57]
332
+ ]]
333
+ }
334
+ }
335
+ ]
336
+ };
337
+
338
+ // 添加果园边界到地图
339
+ L.geoJSON(orchardBoundary, {
340
+ style: {
341
+ color: '#ef4444',
342
+ weight: 2,
343
+ opacity: 1,
344
+ fillOpacity: 0.2,
345
+ fillColor: '#ef4444'
346
+ }
347
+ }).addTo(map);
348
+
349
+ // 更新比例尺
350
+ function updateScale() {
351
+ const scale = map.getScale();
352
+ document.getElementById('scale').textContent = `1:${Math.round(scale).toLocaleString()}`;
353
+ }
354
+
355
+ // 更新坐标显示
356
+ function updateCoordinates(e) {
357
+ const lat = e.latlng.lat.toFixed(4);
358
+ const lng = e.latlng.lng.toFixed(4);
359
+ document.getElementById('coordinates').textContent = `经度: ${lng}, 纬度: ${lat}`;
360
+ }
361
+
362
+ map.on('moveend', updateScale);
363
+ map.on('mousemove', updateCoordinates);
364
+ updateScale();
365
+
366
+ // 初始化趋势图表
367
+ const ctx = document.getElementById('trendChart').getContext('2d');
368
+ const trendChart = new Chart(ctx, {
369
+ type: 'line',
370
+ data: {
371
+ labels: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月'],
372
+ datasets: [
373
+ {
374
+ label: '苹果园面积 (公顷)',
375
+ data: [850, 880, 920, 950, 980, 1020, 1080, 1120, 1160, 1210, 1245],
376
+ borderColor: '#3b82f6',
377
+ backgroundColor: 'rgba(59, 130, 246, 0.1)',
378
+ tension: 0.3,
379
+ fill: true
380
+ },
381
+ {
382
+ label: '其他果园面积 (公顷)',
383
+ data: [420, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520],
384
+ borderColor: '#10b981',
385
+ backgroundColor: 'rgba(16, 185, 129, 0.1)',
386
+ tension: 0.3,
387
+ fill: true
388
+ }
389
+ ]
390
+ },
391
+ options: {
392
+ responsive: true,
393
+ plugins: {
394
+ legend: {
395
+ position: 'top',
396
+ },
397
+ tooltip: {
398
+ mode: 'index',
399
+ intersect: false,
400
+ }
401
+ },
402
+ scales: {
403
+ y: {
404
+ beginAtZero: false,
405
+ title: {
406
+ display: true,
407
+ text: '面积 (公顷)'
408
+ }
409
+ }
410
+ }
411
+ }
412
+ });
413
+ </script>
414
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=maomaobj/pingguo1" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
415
+ </html>