@jjlmoya/utils-drones 1.16.0 → 1.17.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.
- package/package.json +1 -1
- package/src/entries.ts +4 -1
- package/src/index.ts +1 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/drone-power-analyzer/i18n/de.ts +1 -1
- package/src/tool/drone-power-analyzer/i18n/es.ts +1 -1
- package/src/tool/drone-power-analyzer/i18n/fr.ts +1 -1
- package/src/tool/gsd-flight-planner/InputsColumn.astro +108 -0
- package/src/tool/gsd-flight-planner/ResultsColumn.astro +90 -0
- package/src/tool/gsd-flight-planner/bibliography.astro +6 -0
- package/src/tool/gsd-flight-planner/bibliography.ts +7 -0
- package/src/tool/gsd-flight-planner/component.astro +22 -0
- package/src/tool/gsd-flight-planner/entry.ts +29 -0
- package/src/tool/gsd-flight-planner/gsd-flight-planner.css +515 -0
- package/src/tool/gsd-flight-planner/i18n/de.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/en.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/es.ts +221 -0
- package/src/tool/gsd-flight-planner/i18n/fr.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/id.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/it.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/ja.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/ko.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/nl.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/pl.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/pt.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/ru.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/sv.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/tr.ts +214 -0
- package/src/tool/gsd-flight-planner/i18n/zh.ts +214 -0
- package/src/tool/gsd-flight-planner/index.ts +8 -0
- package/src/tool/gsd-flight-planner/logic.js +326 -0
- package/src/tool/gsd-flight-planner/seo.astro +15 -0
- package/src/tools.ts +3 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { GsdFlightPlannerLocaleContent } from '../index';
|
|
2
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
const slug = 'gsd-flygplanerare';
|
|
6
|
+
const title = 'GSD Flygplanerare: Markupplösnings kalkylator för drönare';
|
|
7
|
+
const description = 'Beräkna markupplösningsavstånd (GSD) för fotogrammetriuppdrag. Stöd för DJI, Autel och anpassade kameror. Flygplanering i realtid med visuella kvalitetsindikatorer.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Vad är Ground Sample Distance (GSD)?',
|
|
12
|
+
answer: 'GSD är avståndet på marken som representeras av en pixel i din bild. En lägre GSD innebär högre upplösning och detaljrikedom. Till exempel gör en GSD på 1 cm/px att du kan urskilja detaljer så små som 1 centimeter, vilket är kritiskt för mätningar.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Hur hittar jag min drönares kameraspecifikationer?',
|
|
16
|
+
answer: 'Se din drönares manual för sensorstorlek och brännvidd. Alternativt kan du använda våra kameraförinställningar för populära modeller som DJI Mavic 3E eller Autel EVO II. För anpassade kameror, mät sensorstorleken från dina linsspecifikationer.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Vilken GSD behöver jag för olika typer av uppdrag?',
|
|
20
|
+
answer: 'Högprecisions-topografi: 1-2 cm/px. Standardkartering: 2-5 cm/px. Inspektion och övervakning: 5-10 cm/px. Visuella undersökningar: 10+ cm/px. Välj baserat på ditt projekts precisionskrav.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Vad är bildöverlappning och varför är det viktigt?',
|
|
24
|
+
answer: 'Överlappning är procentandelen av ytan som visas i på varandra följande foton. Hög överlappning (60-80%) säkerställer fullständig täckning och förbättrar 3D-modellens kvalitet. Framåtöverlappning påverkar fotoavståndet; sidoöverlappning påverkar antalet flyglinjer.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Hur beräknar jag den ideala flyghöjden?',
|
|
28
|
+
answer: 'Använd denna kalkylator: Önskad GSD × brännvidd ÷ sensorbredd = höjd. Kalkylatorn gör detta automatiskt och visar den maximala säkra höjden för att bibehålla din målprecision och undvika rörelseoskärpa.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToSteps = [
|
|
33
|
+
{
|
|
34
|
+
name: 'Välj eller konfigurera kamera',
|
|
35
|
+
text: 'Välj bland förkonfigurerade modeller (DJI Mavic 3E, Autel EVO II etc.) eller ange sensorstorlek och brännvidd manuellt. Förinställningar laddar alla parametrar direkt.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Ställ in flyghöjd',
|
|
39
|
+
text: 'Använd höjdreglaget för att justera höjden över marken (AGL). Se GSD-uppdateringen i realtid för att se hur höjden påverkar bildupplösningen.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Definiera överlappningskrav',
|
|
43
|
+
text: 'Ställ in procentandelen för framåt- och sidoöverlappning. Högre överlappning säkerställer fullständig täckning men ökar uppdragstiden och antalet bilder.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Granska resultat och exportera',
|
|
47
|
+
text: 'Kontrollera GSD, täckningsområde och precisionsklassificering. Generera en snabb rapport att bifoga till din officiella flygplan.',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const schemas: GsdFlightPlannerLocaleContent['schemas'] = [
|
|
52
|
+
{
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqItems.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
} as WithContext<FAQPage>,
|
|
61
|
+
{
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'HowTo',
|
|
64
|
+
name: title,
|
|
65
|
+
description: description,
|
|
66
|
+
step: howToSteps.map((step, i) => ({
|
|
67
|
+
'@type': 'HowToStep',
|
|
68
|
+
position: i + 1,
|
|
69
|
+
name: step.name,
|
|
70
|
+
text: step.text,
|
|
71
|
+
})),
|
|
72
|
+
} as WithContext<HowTo>,
|
|
73
|
+
{
|
|
74
|
+
'@context': 'https://schema.org',
|
|
75
|
+
'@type': 'SoftwareApplication',
|
|
76
|
+
name: title,
|
|
77
|
+
description: description,
|
|
78
|
+
applicationCategory: 'OtherApplication',
|
|
79
|
+
operatingSystem: 'Web',
|
|
80
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'SEK' },
|
|
81
|
+
} as WithContext<SoftwareApplication>,
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
export const content: GsdFlightPlannerLocaleContent = {
|
|
85
|
+
slug,
|
|
86
|
+
title,
|
|
87
|
+
description,
|
|
88
|
+
ui: {
|
|
89
|
+
configuration: 'Konfiguration',
|
|
90
|
+
cameraSelection: 'Kameraval',
|
|
91
|
+
manualMode: 'Manuellt läge',
|
|
92
|
+
sensorConfig: 'Sensorkonfiguration',
|
|
93
|
+
width: 'Bredd',
|
|
94
|
+
height: 'Höjd',
|
|
95
|
+
focalLength: 'Brännvidd',
|
|
96
|
+
imageResolution: 'Bildupplösning',
|
|
97
|
+
w: 'B',
|
|
98
|
+
h: 'H',
|
|
99
|
+
px: 'px',
|
|
100
|
+
altitudeAgl: 'Höjd (AGL)',
|
|
101
|
+
overlapSettings: 'Överlappningskonfiguration',
|
|
102
|
+
forward: 'Framåt',
|
|
103
|
+
lateral: 'Sida',
|
|
104
|
+
missionArea: 'Uppdragsområde',
|
|
105
|
+
totalAreaToSurvey: 'Total yta att mäta',
|
|
106
|
+
hectareHint: '1 ha = 10 000 m²',
|
|
107
|
+
inverseCalc: 'Omvänd beräkning',
|
|
108
|
+
targetGsd: 'Mål-GSD',
|
|
109
|
+
maxAltitude: 'Max höjd',
|
|
110
|
+
reset: 'Återställ',
|
|
111
|
+
results: 'Resultat',
|
|
112
|
+
gsdResult: 'Markupplösning (GSD)',
|
|
113
|
+
gsdValue: 'GSD',
|
|
114
|
+
gsdUnit: 'cm/px',
|
|
115
|
+
highPrec: 'Hög prec.',
|
|
116
|
+
standard: 'Standard',
|
|
117
|
+
inspection: 'Inspektion',
|
|
118
|
+
visual: 'Visuell',
|
|
119
|
+
coveragePerImage: 'Täckning per bild',
|
|
120
|
+
area: 'Yta',
|
|
121
|
+
spacing: 'Avstånd',
|
|
122
|
+
flightDir: 'Flyg →',
|
|
123
|
+
missionMetrics: 'Uppdragsdata',
|
|
124
|
+
images: 'Bilder',
|
|
125
|
+
shots: 'foton',
|
|
126
|
+
flightLines: 'Flyglinjer',
|
|
127
|
+
lines: 'linjer',
|
|
128
|
+
flightTime: 'Flygtid',
|
|
129
|
+
min: 'min',
|
|
130
|
+
dataVolume: 'Datamängd',
|
|
131
|
+
gb: 'GB',
|
|
132
|
+
copyShareLink: 'Kopiera länk',
|
|
133
|
+
downloadReport: 'Ladda ner rapport',
|
|
134
|
+
copiedToClipboard: 'Kopierat!',
|
|
135
|
+
metric: 'Metrisk',
|
|
136
|
+
imperial: 'Imperial',
|
|
137
|
+
classHighPrecision: 'Högprecisions-topografi',
|
|
138
|
+
classStandard: 'Standardkartering',
|
|
139
|
+
classInspection: 'Inspektion och övervakning',
|
|
140
|
+
classVisual: 'Visuell undersökning',
|
|
141
|
+
ultraHighResAlert: 'Ultrahög upplösning: säkerställ tillräckligt med lagring och processorkraft',
|
|
142
|
+
lowOverlapAlert: 'Framåtöverlappning under 60%: kan påverka 3D-modellens kvalitet',
|
|
143
|
+
largeDatasetAlert: 'Mycket stor datamängd: överväg att dela upp i flera flygningar',
|
|
144
|
+
presetDjiMavic3e: 'DJI Mavic 3E',
|
|
145
|
+
presetDjiMatrice300: 'DJI Matrice 300 RTK',
|
|
146
|
+
presetAutelEvoII: 'Autel EVO II',
|
|
147
|
+
presetDjiAir3s: 'DJI Air 3S',
|
|
148
|
+
},
|
|
149
|
+
seo: [
|
|
150
|
+
{
|
|
151
|
+
type: 'title',
|
|
152
|
+
text: 'GSD Flygplanerare: Den kompletta fotogrammetri-kalkylatorn',
|
|
153
|
+
level: 2,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
type: 'paragraph',
|
|
157
|
+
html: '<strong>Markupplösning (GSD)</strong> är det viktigaste måttet inom drönarfotogrammetri. Ett beräkningsfel kan slösa bort en hel flygdag och kosta tusentals kronor i förlorad produktivitet. Denna kalkylator eliminerar den risken.',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'title',
|
|
161
|
+
text: 'Varför GSD är avgörande för proffs',
|
|
162
|
+
level: 3,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'paragraph',
|
|
166
|
+
html: 'Oavsett om du mäter land, skapar 3D-modeller eller övervakar infrastruktur, avgör GSD detaljnivån du kan fånga. Ett uppdrag med 1 cm/px fångar detaljer som ett uppdrag med 5 cm/px missar. Men att flyga för lågt slösar batteri och förlänger uppdragstiden i onödan.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'title',
|
|
170
|
+
text: 'GSD efter uppdragstyp',
|
|
171
|
+
level: 3,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'list',
|
|
175
|
+
items: [
|
|
176
|
+
'<strong>Högprecisions-topografi (1-2 cm/px):</strong> Topografisk noggrannhet för tomter, gruvområden och ingenjörsprojekt.',
|
|
177
|
+
'<strong>Standardkartering (2-5 cm/px):</strong> Ortomosaiker, jordbruksövervakning och allmänna kartor.',
|
|
178
|
+
'<strong>Inspektion och övervakning (5-10 cm/px):</strong> Byggnadsinpektioner, kontroll av elledningar och förändringsdetektion.',
|
|
179
|
+
'<strong>Visuella undersökningar (10+ cm/px):</strong> Rekognosering av stora områden och visuell bedömning.',
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'title',
|
|
184
|
+
text: 'GSD-formeln',
|
|
185
|
+
level: 3,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'paragraph',
|
|
189
|
+
html: '<code>GSD (cm/px) = (Höjd × Sensorbredd) / (Brännvidd × Bildbredd) × 100</code><br/>Denna kalkylator sköter matematiken. Du fokuserar på uppdraget.',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'title',
|
|
193
|
+
text: 'Överlappning: Varför 60-80% är den ideala nivån',
|
|
194
|
+
level: 3,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'paragraph',
|
|
198
|
+
html: 'Låg överlappning (20-40%) sparar batteri men riskerar glapp i täckningen. Hög överlappning (80%+) garanterar fullständig täckning men förlänger uppdragstiden. <strong>Intervallet 60-80%</strong> är professionell standard: det säkerställer fullständig 3D-rekonstruktion utan onödig redundans.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'title',
|
|
202
|
+
text: 'Planera bättre uppdrag med verkliga data',
|
|
203
|
+
level: 3,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
type: 'paragraph',
|
|
207
|
+
html: 'Före varje flygning, använd denna kalkylator för att bestämma: den exakta höjden för din önskade GSD, hur många foton du behöver, total uppdragstid och om rörelseoskärpa är en risk. Med dessa data kommer du att utföra exakta uppdrag och undvika kostsamma misstag.',
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
faq: faqItems,
|
|
211
|
+
bibliography,
|
|
212
|
+
howTo: howToSteps,
|
|
213
|
+
schemas,
|
|
214
|
+
};
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { GsdFlightPlannerLocaleContent } from '../index';
|
|
2
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
const slug = 'gsd-ucus-planlayici';
|
|
6
|
+
const title = 'GSD Uçuş Planlayıcı: Yer Örnekleme Mesafesi Hesaplayıcı';
|
|
7
|
+
const description = 'Fotogrametri görevleri için Yer Örnekleme Mesafesini (GSD) hesaplayın. DJI, Autel ve özel kameralar için destek. Görsel kalite göstergeleriyle gerçek zamanlı uçuş planlama.';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Yer Örnekleme Mesafesi (GSD) nedir?',
|
|
12
|
+
answer: 'GSD, görüntünüzdeki bir pikselin yerdeki karşılığı olan mesafedir. Daha düşük bir GSD, daha yüksek çözünürlük ve detay anlamına gelir. Örneğin, 1 cm/px GSD, haritacılık için kritik olan 1 santimetre kadar küçük detayları ayırt etmenizi sağlar.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Dronumun kamera özelliklerini nasıl bulabilirim?',
|
|
16
|
+
answer: 'Sensör boyutları ve odak uzaklığı için dronunuzun kılavuzuna bakın. Alternatif olarak, DJI Mavic 3E veya Autel EVO II gibi popüler modeller için kamera ön ayarlarımızı kullanın. Özel kameralar için sensör boyutunu lens özelliklerinizden ölçün.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Farklı görev türleri için hangi GSD\'ye ihtiyacım var?',
|
|
20
|
+
answer: 'Yüksek hassasiyetli topografya: 1-2 cm/px. Standart haritalama: 2-5 cm/px. Denetim ve izleme: 5-10 cm/px. Görsel incelemeler: 10+ cm/px. Projenizin doğruluk gereksinimlerine göre seçim yapın.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Görüntü bindirmesi nedir ve neden önemlidir?',
|
|
24
|
+
answer: 'Bindirme (overlap), birbirini takip eden fotoğraflarda görünen alanın yüzdesidir. Yüksek bindirme (%60-80), tam kapsama sağlar ve 3D model kalitesini artırır. Boyuna bindirme fotoğraf aralığını etkiler; enine bindirme uçuş hattı sayısını etkiler.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'İdeal uçuş irtifasını nasıl hesaplarım?',
|
|
28
|
+
answer: 'Bu hesaplayıcıyı kullanın: İstenen GSD × odak uzaklığı ÷ sensör genişliği = irtifa. Hesaplayıcı bunu otomatik olarak yapar ve hedef hassasiyetinizi korumak ve hareket bulanıklığını önlemek için maksimum güvenli irtifayı gösterir.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToSteps = [
|
|
33
|
+
{
|
|
34
|
+
name: 'Kamerayı Seçin veya Yapılandırın',
|
|
35
|
+
text: 'Önceden yapılandırılmış modellerden (DJI Mavic 3E, Autel EVO II vb.) seçin veya sensör boyutlarını ve odak uzaklığını manuel olarak girin. Ön ayarlar tüm parametreleri anında yükler.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Uçuş İrtifasını Ayarlayın',
|
|
39
|
+
text: 'Yerden yüksekliği (AGL) ayarlamak için irtifa sürgüsünü kullanın. İrtifanın görüntü çözünürlüğünü nasıl etkilediğini görmek için GSD güncellemesini gerçek zamanlı izleyin.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Bindirme Gereksinimlerini Tanımlayın',
|
|
43
|
+
text: 'Boyuna ve enine bindirme yüzdelerini ayarlayın. Daha yüksek bindirme tam kapsama sağlar ancak görev süresini ve görüntü sayısını artırır.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Sonuçları İnceleyin ve Dışa Aktarın',
|
|
47
|
+
text: 'GSD, kapsama alanı ve hassasiyet sınıflandırmasını kontrol edin. Resmi uçuş planınıza eklemek için hızlı bir rapor oluşturun.',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const schemas: GsdFlightPlannerLocaleContent['schemas'] = [
|
|
52
|
+
{
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqItems.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
} as WithContext<FAQPage>,
|
|
61
|
+
{
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'HowTo',
|
|
64
|
+
name: title,
|
|
65
|
+
description: description,
|
|
66
|
+
step: howToSteps.map((step, i) => ({
|
|
67
|
+
'@type': 'HowToStep',
|
|
68
|
+
position: i + 1,
|
|
69
|
+
name: step.name,
|
|
70
|
+
text: step.text,
|
|
71
|
+
})),
|
|
72
|
+
} as WithContext<HowTo>,
|
|
73
|
+
{
|
|
74
|
+
'@context': 'https://schema.org',
|
|
75
|
+
'@type': 'SoftwareApplication',
|
|
76
|
+
name: title,
|
|
77
|
+
description: description,
|
|
78
|
+
applicationCategory: 'OtherApplication',
|
|
79
|
+
operatingSystem: 'Web',
|
|
80
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'TRY' },
|
|
81
|
+
} as WithContext<SoftwareApplication>,
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
export const content: GsdFlightPlannerLocaleContent = {
|
|
85
|
+
slug,
|
|
86
|
+
title,
|
|
87
|
+
description,
|
|
88
|
+
ui: {
|
|
89
|
+
configuration: 'Yapılandırma',
|
|
90
|
+
cameraSelection: 'Kamera Seçimi',
|
|
91
|
+
manualMode: 'Manuel Mod',
|
|
92
|
+
sensorConfig: 'Sensör Yapılandırması',
|
|
93
|
+
width: 'Genişlik',
|
|
94
|
+
height: 'Yükseklik',
|
|
95
|
+
focalLength: 'Odak Uzaklığı',
|
|
96
|
+
imageResolution: 'Görüntü Çözünürlüğü',
|
|
97
|
+
w: 'G',
|
|
98
|
+
h: 'Y',
|
|
99
|
+
px: 'px',
|
|
100
|
+
altitudeAgl: 'İrtifa (AGL)',
|
|
101
|
+
overlapSettings: 'Bindirme Yapılandırması',
|
|
102
|
+
forward: 'Boyuna',
|
|
103
|
+
lateral: 'Enine',
|
|
104
|
+
missionArea: 'Görev Alanı',
|
|
105
|
+
totalAreaToSurvey: 'Toplam Ölçüm Alanı',
|
|
106
|
+
hectareHint: '1 ha = 10.000 m²',
|
|
107
|
+
inverseCalc: 'Ters Hesaplama',
|
|
108
|
+
targetGsd: 'Hedef GSD',
|
|
109
|
+
maxAltitude: 'Maks. İrtifa',
|
|
110
|
+
reset: 'Sıfırla',
|
|
111
|
+
results: 'Sonuçlar',
|
|
112
|
+
gsdResult: 'Yer Örnekleme Mesafesi (GSD)',
|
|
113
|
+
gsdValue: 'GSD',
|
|
114
|
+
gsdUnit: 'cm/px',
|
|
115
|
+
highPrec: 'Yüksek Hassas.',
|
|
116
|
+
standard: 'Standart',
|
|
117
|
+
inspection: 'Denetim',
|
|
118
|
+
visual: 'Görsel',
|
|
119
|
+
coveragePerImage: 'Görüntü Başına Kapsama',
|
|
120
|
+
area: 'Alan',
|
|
121
|
+
spacing: 'Aralık',
|
|
122
|
+
flightDir: 'Uçuş →',
|
|
123
|
+
missionMetrics: 'Görev Verileri',
|
|
124
|
+
images: 'Görüntü',
|
|
125
|
+
shots: 'çekim',
|
|
126
|
+
flightLines: 'Uçuş Hattı',
|
|
127
|
+
lines: 'hat',
|
|
128
|
+
flightTime: 'Uçuş Süresi',
|
|
129
|
+
min: 'dk',
|
|
130
|
+
dataVolume: 'Veri Hacmi',
|
|
131
|
+
gb: 'GB',
|
|
132
|
+
copyShareLink: 'Bağlantıyı Kopyala',
|
|
133
|
+
downloadReport: 'Raporu İndir',
|
|
134
|
+
copiedToClipboard: 'Kopyalandı!',
|
|
135
|
+
metric: 'Metrik',
|
|
136
|
+
imperial: 'İmparatorluk',
|
|
137
|
+
classHighPrecision: 'Yüksek Hassasiyetli Topografya',
|
|
138
|
+
classStandard: 'Standart Haritalama',
|
|
139
|
+
classInspection: 'Denetim ve İzleme',
|
|
140
|
+
classVisual: 'Görsel İnceleme',
|
|
141
|
+
ultraHighResAlert: 'Ultra yüksek çözünürlük: Yeterli depolama ve işlem gücü olduğundan emin olun',
|
|
142
|
+
lowOverlapAlert: 'Boyuna bindirme %60\'ın altında: 3D model kalitesini etkileyebilir',
|
|
143
|
+
largeDatasetAlert: 'Çok büyük veri seti: Birden fazla uçuşa bölmeyi düşünün',
|
|
144
|
+
presetDjiMavic3e: 'DJI Mavic 3E',
|
|
145
|
+
presetDjiMatrice300: 'DJI Matrice 300 RTK',
|
|
146
|
+
presetAutelEvoII: 'Autel EVO II',
|
|
147
|
+
presetDjiAir3s: 'DJI Air 3S',
|
|
148
|
+
},
|
|
149
|
+
seo: [
|
|
150
|
+
{
|
|
151
|
+
type: 'title',
|
|
152
|
+
text: 'GSD Uçuş Planlayıcı: Tam Fotogrametri Hesaplayıcı',
|
|
153
|
+
level: 2,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
type: 'paragraph',
|
|
157
|
+
html: '<strong>Yer Örnekleme Mesafesi (GSD)</strong>, dron fotogrametrisindeki en önemli ölçüttür. Bir hesaplama hatası tüm bir uçuş gününü boşa harcayabilir ve binlerce liralık verimlilik kaybına neden olabilir. Bu hesaplayıcı bu riski ortadan kaldırır.',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'title',
|
|
161
|
+
text: 'GSD Neden Profesyoneller İçin Kritik?',
|
|
162
|
+
level: 3,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'paragraph',
|
|
166
|
+
html: 'İster arazi ölçümü yapın, ister 3D modeller oluşturun veya altyapı izleyin, GSD yakalayabileceğiniz detay seviyesini belirler. 1 cm/px\'lik bir görev, 5 cm/px\'lik bir görevin kaçırdığı detayları yakalar. Ancak çok alçaktan uçmak pil tüketir ve görev süresini gereksiz yere uzatır.',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'title',
|
|
170
|
+
text: 'Görev Türüne Göre GSD',
|
|
171
|
+
level: 3,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'list',
|
|
175
|
+
items: [
|
|
176
|
+
'<strong>Yüksek Hassasiyetli Topografya (1-2 cm/px):</strong> Parseller, maden sahaları ve mühendislik projeleri için harita kalitesinde doğruluk.',
|
|
177
|
+
'<strong>Standart Haritalama (2-5 cm/px):</strong> Ortopanikler, tarımsal izleme ve genel amaçlı haritalar.',
|
|
178
|
+
'<strong>Denetim ve İzleme (5-10 cm/px):</strong> Bina denetimleri, enerji hattı incelemeleri ve değişim tespiti.',
|
|
179
|
+
'<strong>Görsel İncelemeler (10+ cm/px):</strong> Geniş alan keşfi ve görsel değerlendirme.',
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'title',
|
|
184
|
+
text: 'GSD Formülü',
|
|
185
|
+
level: 3,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'paragraph',
|
|
189
|
+
html: '<code>GSD (cm/px) = (İrtifa × Sensör Genişliği) / (Odak Uzaklığı × Görüntü Genişliği) × 100</code><br/>Bu hesaplayıcı matematiği halleder. Siz göreve odaklanın.',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'title',
|
|
193
|
+
text: 'Bindirme: Neden %60-80 İdeal Noktadır?',
|
|
194
|
+
level: 3,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'paragraph',
|
|
198
|
+
html: 'Düşük bindirme (%20-40) pil tasarrufu sağlar ancak kapsama alanında boşluk riski taşır. Yüksek bindirme (%80+) tam kapsamayı garanti eder ancak görev süresini uzatır. <strong>%60-80 aralığı</strong> profesyonel standarttır: aşırı yedeklilik olmadan tam 3D rekonstrüksiyon sağlar.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'title',
|
|
202
|
+
text: 'Gerçek Verilerle Daha İyi Görevler Planlayın',
|
|
203
|
+
level: 3,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
type: 'paragraph',
|
|
207
|
+
html: 'Her uçuştan önce, bu hesaplayıcıyı kullanarak şunları belirleyin: gerekli GSD için tam irtifa, kaç fotoğrafa ihtiyacınız olacağı, toplam görev süresi ve hareket bulanıklığı riski olup olmadığı. Bu verilerle hassas görevler yürütecek ve maliyetli hatalardan kaçınacaksınız.',
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
faq: faqItems,
|
|
211
|
+
bibliography,
|
|
212
|
+
howTo: howToSteps,
|
|
213
|
+
schemas,
|
|
214
|
+
};
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import type { GsdFlightPlannerLocaleContent } from '../index';
|
|
2
|
+
import type { WithContext, SoftwareApplication, FAQPage, HowTo } from 'schema-dts';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
const slug = 'gsd-flight-planner';
|
|
6
|
+
const title = 'GSD 飞行计划: 无人机地面采样距离计算器';
|
|
7
|
+
const description = '计算摄影测量任务的地面采样距离 (GSD)。支持 DJI、Autel 和自定义相机。通过视觉质量指标进行实时任务规划。';
|
|
8
|
+
|
|
9
|
+
const faqItems = [
|
|
10
|
+
{
|
|
11
|
+
question: '什么是地面采样距离 (GSD)?',
|
|
12
|
+
answer: 'GSD 是图像中一个像素在地面上代表的距离。较低的 GSD 意味着更高的分辨率和细节。例如,1 cm/px 的 GSD 允许您辨别小至 1 厘米的细节,这对于测绘至关重要。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '如何找到我的无人机相机规格?',
|
|
16
|
+
answer: '查看您的无人机手册以获取传感器尺寸 and 焦距。或者,使用我们针对 DJI Mavic 3E 或 Autel EVO II 等流行型号的相机预设。对于自定义相机,请根据镜头规格测量传感器尺寸。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '不同类型的任务需要多少 GSD?',
|
|
20
|
+
answer: '高精度地形测绘:1-2 cm/px。标准测绘:2-5 cm/px。检查 and 监测:5-10 cm/px。视觉调查:10+ cm/px。根据您的项目精度要求进行选择。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '什么是图像重叠,为什么它很重要?',
|
|
24
|
+
answer: '重叠是指在连续照片中出现的区域百分比。高重叠(60-80%)可确保完整覆盖 and 提高 3D 模型质量。航向重叠影响照片间距;旁向重叠影响航线数量。',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: '如何计算理想的飞行高度?',
|
|
28
|
+
answer: '使用此计算器:所需 GSD × 焦距 ÷ 传感器宽度 = 高度。计算器会自动执行此操作, and 显示保持目标精度 and 避免运动模糊的最大安全高度。',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToSteps = [
|
|
33
|
+
{
|
|
34
|
+
name: '选择或配置相机',
|
|
35
|
+
text: '从预配置型号(DJI Mavic 3E、Autel EVO II 等)中选择,或手动输入传感器尺寸 and 焦距。预设会立即加载所有参数。',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '设置飞行高度',
|
|
39
|
+
text: '使用高度滑块调整离地高度 (AGL)。实时观察 GSD 更新,了解高度如何影响图像分辨率。',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: '定义重叠要求',
|
|
43
|
+
text: '设置航向 and 旁向重叠百分比。较高的重叠可确保完整覆盖,但会增加任务时间 and 图像数量。',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '查看结果 and 导出',
|
|
47
|
+
text: '检查 GSD、覆盖区域 and 精度分类。生成快速报告以附加到您的正式飞行计划中。',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const schemas: GsdFlightPlannerLocaleContent['schemas'] = [
|
|
52
|
+
{
|
|
53
|
+
'@context': 'https://schema.org',
|
|
54
|
+
'@type': 'FAQPage',
|
|
55
|
+
mainEntity: faqItems.map((item) => ({
|
|
56
|
+
'@type': 'Question',
|
|
57
|
+
name: item.question,
|
|
58
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
59
|
+
})),
|
|
60
|
+
} as WithContext<FAQPage>,
|
|
61
|
+
{
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'HowTo',
|
|
64
|
+
name: title,
|
|
65
|
+
description: description,
|
|
66
|
+
step: howToSteps.map((step, i) => ({
|
|
67
|
+
'@type': 'HowToStep',
|
|
68
|
+
position: i + 1,
|
|
69
|
+
name: step.name,
|
|
70
|
+
text: step.text,
|
|
71
|
+
})),
|
|
72
|
+
} as WithContext<HowTo>,
|
|
73
|
+
{
|
|
74
|
+
'@context': 'https://schema.org',
|
|
75
|
+
'@type': 'SoftwareApplication',
|
|
76
|
+
name: title,
|
|
77
|
+
description: description,
|
|
78
|
+
applicationCategory: 'OtherApplication',
|
|
79
|
+
operatingSystem: 'Web',
|
|
80
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'CNY' },
|
|
81
|
+
} as WithContext<SoftwareApplication>,
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
export const content: GsdFlightPlannerLocaleContent = {
|
|
85
|
+
slug,
|
|
86
|
+
title,
|
|
87
|
+
description,
|
|
88
|
+
ui: {
|
|
89
|
+
configuration: '配置',
|
|
90
|
+
cameraSelection: '相机选择',
|
|
91
|
+
manualMode: '手动模式',
|
|
92
|
+
sensorConfig: '传感器配置',
|
|
93
|
+
width: '宽度',
|
|
94
|
+
height: '高度',
|
|
95
|
+
focalLength: '焦距',
|
|
96
|
+
imageResolution: '图像分辨率',
|
|
97
|
+
w: '宽',
|
|
98
|
+
h: '高',
|
|
99
|
+
px: 'px',
|
|
100
|
+
altitudeAgl: '高度 (AGL)',
|
|
101
|
+
overlapSettings: '重叠配置',
|
|
102
|
+
forward: '航向',
|
|
103
|
+
lateral: '旁向',
|
|
104
|
+
missionArea: '任务区域',
|
|
105
|
+
totalAreaToSurvey: '总测量面积',
|
|
106
|
+
hectareHint: '1 ha = 10,000 m²',
|
|
107
|
+
inverseCalc: '反向计算',
|
|
108
|
+
targetGsd: '目标 GSD',
|
|
109
|
+
maxAltitude: '最大高度',
|
|
110
|
+
reset: '重置',
|
|
111
|
+
results: '结果',
|
|
112
|
+
gsdResult: '地面采样距离 (GSD)',
|
|
113
|
+
gsdValue: 'GSD',
|
|
114
|
+
gsdUnit: 'cm/px',
|
|
115
|
+
highPrec: '高精度',
|
|
116
|
+
standard: '标准',
|
|
117
|
+
inspection: '检查',
|
|
118
|
+
visual: '视觉',
|
|
119
|
+
coveragePerImage: '单张图像覆盖范围',
|
|
120
|
+
area: '面积',
|
|
121
|
+
spacing: '间距',
|
|
122
|
+
flightDir: '飞行方向 →',
|
|
123
|
+
missionMetrics: '任务指标',
|
|
124
|
+
images: '图像',
|
|
125
|
+
shots: '张',
|
|
126
|
+
flightLines: '航线数量',
|
|
127
|
+
lines: '条',
|
|
128
|
+
flightTime: '飞行时间',
|
|
129
|
+
min: '分钟',
|
|
130
|
+
dataVolume: '数据量',
|
|
131
|
+
gb: 'GB',
|
|
132
|
+
copyShareLink: '复制链接',
|
|
133
|
+
downloadReport: '下载报告',
|
|
134
|
+
copiedToClipboard: '已复制!',
|
|
135
|
+
metric: '公制',
|
|
136
|
+
imperial: '英制',
|
|
137
|
+
classHighPrecision: '高精度地形测绘',
|
|
138
|
+
classStandard: '标准测绘',
|
|
139
|
+
classInspection: '检查 and 监测',
|
|
140
|
+
classVisual: '视觉调查',
|
|
141
|
+
ultraHighResAlert: '超高分辨率:请确保有足够的存储 and 处理能力',
|
|
142
|
+
lowOverlapAlert: '航向重叠低于 60%:可能会影响 3D 模型质量',
|
|
143
|
+
largeDatasetAlert: '数据集非常大:考虑将其分成多次飞行',
|
|
144
|
+
presetDjiMavic3e: 'DJI Mavic 3E',
|
|
145
|
+
presetDjiMatrice300: 'DJI Matrice 300 RTK',
|
|
146
|
+
presetAutelEvoII: 'Autel EVO II',
|
|
147
|
+
presetDjiAir3s: 'DJI Air 3S',
|
|
148
|
+
},
|
|
149
|
+
seo: [
|
|
150
|
+
{
|
|
151
|
+
type: 'title',
|
|
152
|
+
text: 'GSD 飞行计划: 完整的摄影测量计算器',
|
|
153
|
+
level: 2,
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
type: 'paragraph',
|
|
157
|
+
html: '<strong>地面采样距离 (GSD)</strong> 是无人机摄影测量中最重要的指标。计算错误可能会浪费一整天的飞行时间, and 因生产力损失而造成数千美元的损失。此计算器消除了该风险。',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
type: 'title',
|
|
161
|
+
text: '为什么 GSD 对专业人士至关重要',
|
|
162
|
+
level: 3,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
type: 'paragraph',
|
|
166
|
+
html: '无论您是在测绘土地、创建 3D 模型还是监测基础设施,GSD 都决定了您可以捕获的细节水平。1 cm/px 的任务可以捕获 5 cm/px 任务遗漏的细节。但飞得太低会浪费电池 and 毫无必要地延长任务时间。',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: 'title',
|
|
170
|
+
text: '按任务类型划分的 GSD',
|
|
171
|
+
level: 3,
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
type: 'list',
|
|
175
|
+
items: [
|
|
176
|
+
'<strong>高精度地形测绘 (1-2 cm/px):</strong> 针对地块、矿区 and 工程项目的测绘级精度。',
|
|
177
|
+
'<strong>标准测绘 (2-5 cm/px):</strong> 正射影像、农业监测 and 通用地图。',
|
|
178
|
+
'<strong>检查 and 监测 (5-10 cm/px):</strong> 建筑物检查、电力线审查 and 变化检测。',
|
|
179
|
+
'<strong>视觉调查 (10+ cm/px):</strong> 大范围侦察 and 视觉评估。',
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'title',
|
|
184
|
+
text: 'GSD 公式',
|
|
185
|
+
level: 3,
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: 'paragraph',
|
|
189
|
+
html: '<code>GSD (cm/px) = (高度 × 传感器宽度) / (焦距 × 图像宽度) × 100</code><br/>此计算器处理数学运算。您专注于任务。',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'title',
|
|
193
|
+
text: '重叠:为什么 60-80% 是最佳平衡点',
|
|
194
|
+
level: 3,
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
type: 'paragraph',
|
|
198
|
+
html: '低重叠 (20-40%) 可以节省电池,但存在覆盖范围出现间隙的风险。高重叠 (80%+) 可以保证完整覆盖,但会延长任务时间。<strong>60-80% 范围</strong> 是专业标准:它确保了完整的 3D 重建,而没有过多的冗余。',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
type: 'title',
|
|
202
|
+
text: '利用真实数据规划更好的任务',
|
|
203
|
+
level: 3,
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
type: 'paragraph',
|
|
207
|
+
html: '在每次飞行之前,使用此计算器确定:所需 GSD 的确切高度、需要的照片数量、总任务时间 and 是否存在运动模糊风险。有了这些数据,您将执行精确的任务 and 避免代价高昂的错误。',
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
faq: faqItems,
|
|
211
|
+
bibliography,
|
|
212
|
+
howTo: howToSteps,
|
|
213
|
+
schemas,
|
|
214
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { gsdFlightPlanner } from './entry';
|
|
2
|
+
export * from './entry';
|
|
3
|
+
export const GSD_FLIGHT_PLANNER_TOOL = {
|
|
4
|
+
entry: gsdFlightPlanner,
|
|
5
|
+
Component: () => import('./component.astro'),
|
|
6
|
+
SEOComponent: () => import('./seo.astro'),
|
|
7
|
+
BibliographyComponent: () => import('./bibliography.astro'),
|
|
8
|
+
};
|