@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.
Files changed (34) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/index.ts +1 -0
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/drone-power-analyzer/i18n/de.ts +1 -1
  7. package/src/tool/drone-power-analyzer/i18n/es.ts +1 -1
  8. package/src/tool/drone-power-analyzer/i18n/fr.ts +1 -1
  9. package/src/tool/gsd-flight-planner/InputsColumn.astro +108 -0
  10. package/src/tool/gsd-flight-planner/ResultsColumn.astro +90 -0
  11. package/src/tool/gsd-flight-planner/bibliography.astro +6 -0
  12. package/src/tool/gsd-flight-planner/bibliography.ts +7 -0
  13. package/src/tool/gsd-flight-planner/component.astro +22 -0
  14. package/src/tool/gsd-flight-planner/entry.ts +29 -0
  15. package/src/tool/gsd-flight-planner/gsd-flight-planner.css +515 -0
  16. package/src/tool/gsd-flight-planner/i18n/de.ts +214 -0
  17. package/src/tool/gsd-flight-planner/i18n/en.ts +214 -0
  18. package/src/tool/gsd-flight-planner/i18n/es.ts +221 -0
  19. package/src/tool/gsd-flight-planner/i18n/fr.ts +214 -0
  20. package/src/tool/gsd-flight-planner/i18n/id.ts +214 -0
  21. package/src/tool/gsd-flight-planner/i18n/it.ts +214 -0
  22. package/src/tool/gsd-flight-planner/i18n/ja.ts +214 -0
  23. package/src/tool/gsd-flight-planner/i18n/ko.ts +214 -0
  24. package/src/tool/gsd-flight-planner/i18n/nl.ts +214 -0
  25. package/src/tool/gsd-flight-planner/i18n/pl.ts +214 -0
  26. package/src/tool/gsd-flight-planner/i18n/pt.ts +214 -0
  27. package/src/tool/gsd-flight-planner/i18n/ru.ts +214 -0
  28. package/src/tool/gsd-flight-planner/i18n/sv.ts +214 -0
  29. package/src/tool/gsd-flight-planner/i18n/tr.ts +214 -0
  30. package/src/tool/gsd-flight-planner/i18n/zh.ts +214 -0
  31. package/src/tool/gsd-flight-planner/index.ts +8 -0
  32. package/src/tool/gsd-flight-planner/logic.js +326 -0
  33. package/src/tool/gsd-flight-planner/seo.astro +15 -0
  34. 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-flugplaner';
6
+ const title = 'GSD Flugplaner: Bodenauflösungsrechner für Drohnen';
7
+ const description = 'Berechnen Sie die Bodenauflösung (GSD) für Photogrammetrie-Missionen. Unterstützung für DJI, Autel und benutzerdefinierte Kameras. Echtzeit-Flugplanung mit visuellen Qualitätsindikatoren.';
8
+
9
+ const faqItems = [
10
+ {
11
+ question: 'Was ist Ground Sample Distance (GSD)?',
12
+ answer: 'GSD ist der Abstand auf dem Boden, der durch einen Pixel in Ihrem Bild dargestellt wird. Eine niedrigere GSD bedeutet höhere Auflösung und mehr Details. Zum Beispiel ermöglicht eine GSD von 1 cm/px das Erkennen von Details ab 1 Zentimeter Größe, was für Vermessungen entscheidend ist.',
13
+ },
14
+ {
15
+ question: 'Wo finde ich die Kameraspezifikationen meiner Drohne?',
16
+ answer: 'Überprüfen Sie das Handbuch Ihrer Drohne auf Sensorabmessungen und Brennweite. Alternativ können Sie unsere Kamera-Voreinstellungen für beliebte Modelle wie die DJI Mavic 3E oder Autel EVO II verwenden. Bei benutzerdefinierten Kameras messen Sie die Sensorgröße anhand der Linsenspezifikationen.',
17
+ },
18
+ {
19
+ question: 'Welche GSD benötige ich für verschiedene Missionstypen?',
20
+ answer: 'Hochpräzise Topographie: 1-2 cm/px. Standardkartierung: 2-5 cm/px. Inspektion und Überwachung: 5-10 cm/px. Visuelle Untersuchungen: 10+ cm/px. Wählen Sie basierend auf den Genauigkeitsanforderungen Ihres Projekts.',
21
+ },
22
+ {
23
+ question: 'Was ist Bildüberlappung und warum ist sie wichtig?',
24
+ answer: 'Überlappung ist der Prozentsatz der Fläche, der in aufeinanderfolgenden Fotos erscheint. Eine hohe Überlappung (60-80%) gewährleistet eine vollständige Abdeckung und verbessert die Qualität des 3D-Modells. Die Längsüberlappung beeinflusst den Fotoabstand; die Querüberlappung beeinflusst die Anzahl der Fluglinien.',
25
+ },
26
+ {
27
+ question: 'Wie berechne ich die ideale Flughöhe?',
28
+ answer: 'Verwenden Sie diesen Rechner: Gewünschte GSD × Brennweite ÷ Sensorbreite = Höhe. Der Rechner erledigt dies automatisch und zeigt die maximale sichere Höhe an, um Ihre Zielpräzision beizubehalten und Bewegungsunschärfe zu vermeiden.',
29
+ },
30
+ ];
31
+
32
+ const howToSteps = [
33
+ {
34
+ name: 'Kamera auswählen oder konfigurieren',
35
+ text: 'Wählen Sie aus vorkonfigurierten Modellen (DJI Mavic 3E, Autel EVO II etc.) oder geben Sie Sensorabmessungen und Brennweite manuell ein. Voreinstellungen laden alle Parameter sofort.',
36
+ },
37
+ {
38
+ name: 'Flughöhe einstellen',
39
+ text: 'Verwenden Sie den Höhenschieberegler, um die Höhe über Grund (AGL) anzupassen. Beobachten Sie die GSD-Aktualisierung in Echtzeit, um zu sehen, wie die Höhe die Bildauflösung beeinflusst.',
40
+ },
41
+ {
42
+ name: 'Überlappungsanforderungen definieren',
43
+ text: 'Stellen Sie die Prozentsätze für Längs- und Querüberlappung ein. Eine höhere Überlappung gewährleistet eine vollständige Abdeckung, erhöht jedoch die Missionszeit und die Anzahl der Bilder.',
44
+ },
45
+ {
46
+ name: 'Ergebnisse prüfen und exportieren',
47
+ text: 'Überprüfen Sie GSD, Abdeckungsbereich und Präzisionsklassifizierung. Erstellen Sie einen Kurzbericht als Anlage zu Ihrem offiziellen Flugplan.',
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: 'EUR' },
81
+ } as WithContext<SoftwareApplication>,
82
+ ];
83
+
84
+ export const content: GsdFlightPlannerLocaleContent = {
85
+ slug,
86
+ title,
87
+ description,
88
+ ui: {
89
+ configuration: 'Konfiguration',
90
+ cameraSelection: 'Kameraauswahl',
91
+ manualMode: 'Manueller Modus',
92
+ sensorConfig: 'Sensorkonfiguration',
93
+ width: 'Breite',
94
+ height: 'Höhe',
95
+ focalLength: 'Brennweite',
96
+ imageResolution: 'Bildauflösung',
97
+ w: 'B',
98
+ h: 'H',
99
+ px: 'px',
100
+ altitudeAgl: 'Höhe (AGL)',
101
+ overlapSettings: 'Überlappungskonfiguration',
102
+ forward: 'Längs',
103
+ lateral: 'Quer',
104
+ missionArea: 'Missionsgebiet',
105
+ totalAreaToSurvey: 'Gesamtfläche der Vermessung',
106
+ hectareHint: '1 ha = 10.000 m²',
107
+ inverseCalc: 'Rückwärtsberechnung',
108
+ targetGsd: 'Ziel-GSD',
109
+ maxAltitude: 'Max. Höhe',
110
+ reset: 'Zurücksetzen',
111
+ results: 'Ergebnisse',
112
+ gsdResult: 'Bodenauflösung (GSD)',
113
+ gsdValue: 'GSD',
114
+ gsdUnit: 'cm/px',
115
+ highPrec: 'Hohe Präz.',
116
+ standard: 'Standard',
117
+ inspection: 'Inspektion',
118
+ visual: 'Visuell',
119
+ coveragePerImage: 'Abdeckung pro Bild',
120
+ area: 'Fläche',
121
+ spacing: 'Abstand',
122
+ flightDir: 'Flug →',
123
+ missionMetrics: 'Missionsdaten',
124
+ images: 'Bilder',
125
+ shots: 'Aufnahmen',
126
+ flightLines: 'Fluglinien',
127
+ lines: 'Linien',
128
+ flightTime: 'Flugzeit',
129
+ min: 'Min',
130
+ dataVolume: 'Datenvolumen',
131
+ gb: 'GB',
132
+ copyShareLink: 'Link kopieren',
133
+ downloadReport: 'Bericht herunterladen',
134
+ copiedToClipboard: 'Kopiert!',
135
+ metric: 'Metrisch',
136
+ imperial: 'Imperial',
137
+ classHighPrecision: 'Hochpräzise Topographie',
138
+ classStandard: 'Standardkartierung',
139
+ classInspection: 'Inspektion & Überwachung',
140
+ classVisual: 'Visuelle Untersuchung',
141
+ ultraHighResAlert: 'Ultrahoche Auflösung: Stellen Sie ausreichend Speicher und Rechenleistung sicher',
142
+ lowOverlapAlert: 'Längsüberlappung unter 60%: Kann die Qualität des 3D-Modells beeinträchtigen',
143
+ largeDatasetAlert: 'Sehr großer Datensatz: Erwägen Sie die Aufteilung in mehrere Flüge',
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-Flugplaner: Der vollständige Photogrammetrie-Rechner',
153
+ level: 2,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: 'Die <strong>Bodenauflösung (GSD)</strong> ist die wichtigste Kennzahl in der Drohnenphotogrammetrie. Ein Rechenfehler kann einen ganzen Flugtag verschwenden und Tausende an verlorener Produktivität kosten. Dieser Rechner eliminiert dieses Risiko.',
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: 'Warum GSD für Profis entscheidend ist',
162
+ level: 3,
163
+ },
164
+ {
165
+ type: 'paragraph',
166
+ html: 'Ob Sie Land vermessen, 3D-Modelle erstellen oder Infrastruktur überwachen – die GSD bestimmt den Detailgrad, den Sie erfassen können. Eine Mission mit 1 cm/px erfasst Details, die eine Mission mit 5 cm/px übersieht. Aber zu niedriges Fliegen verschwendet Akku und verlängert die Missionszeit unnötig.',
167
+ },
168
+ {
169
+ type: 'title',
170
+ text: 'GSD nach Missionstyp',
171
+ level: 3,
172
+ },
173
+ {
174
+ type: 'list',
175
+ items: [
176
+ '<strong>Hochpräzise Topographie (1-2 cm/px):</strong> Vermessungsgenauigkeit für Parzellen, Minenstandorte und Ingenieurprojekte.',
177
+ '<strong>Standardkartierung (2-5 cm/px):</strong> Orthomosaike, landwirtschaftliches Monitoring und universelle Karten.',
178
+ '<strong>Inspektion und Überwachung (5-10 cm/px):</strong> Gebäudeinspektionen, Stromleitungsprüfungen und Veränderungserkennung.',
179
+ '<strong>Visuelle Untersuchungen (10+ cm/px):</strong> Großflächige Erkundung und visuelle Bewertung.',
180
+ ],
181
+ },
182
+ {
183
+ type: 'title',
184
+ text: 'Die GSD-Formel',
185
+ level: 3,
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: '<code>GSD (cm/px) = (Höhe × Sensorbreite) / (Brennweite × Bildbreite) × 100</code><br/>Dieser Rechner übernimmt die Mathematik. Sie konzentrieren sich auf die Mission.',
190
+ },
191
+ {
192
+ type: 'title',
193
+ text: 'Überlappung: Warum 60-80% das Optimum sind',
194
+ level: 3,
195
+ },
196
+ {
197
+ type: 'paragraph',
198
+ html: 'Geringe Überlappung (20-40%) spart Akku, birgt aber das Risiko von Lücken in der Abdeckung. Hohe Überlappung (80%+) garantiert vollständige Abdeckung, verlängert aber die Missionszeit. Der <strong>Bereich von 60-80%</strong> ist der professionelle Standard: Er gewährleistet eine vollständige 3D-Rekonstruktion ohne übermäßige Redundanz.',
199
+ },
200
+ {
201
+ type: 'title',
202
+ text: 'Bessere Missionen mit realen Daten planen',
203
+ level: 3,
204
+ },
205
+ {
206
+ type: 'paragraph',
207
+ html: 'Verwenden Sie vor jedem Flug diesen Rechner, um zu bestimmen: die exakte Höhe für Ihre benötigte GSD, wie viele Fotos Sie benötigen, die Gesamtmissionszeit und ob Bewegungsunschärfe ein Risiko darstellt. Mit diesen Daten führen Sie präzise Missionen aus und vermeiden kostspielige Fehler.',
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 Flight Planner: Ground Sample Distance Calculator';
7
+ const description = 'Calculate the Ground Sample Distance (GSD) for photogrammetry missions. Support for DJI, Autel, and custom cameras. Real-time flight planning with visual quality indicators.';
8
+
9
+ const faqItems = [
10
+ {
11
+ question: 'What is Ground Sample Distance (GSD)?',
12
+ answer: 'GSD is the distance on the ground represented by one pixel in your image. A lower GSD means higher resolution and detail. For example, a 1 cm/px GSD allows you to resolve details as small as 1 centimeter, which is critical for surveying.',
13
+ },
14
+ {
15
+ question: 'How do I find my drone\'s camera specifications?',
16
+ answer: 'Check your drone\'s manual for sensor dimensions and focal length. Alternatively, use our camera presets for popular models like the DJI Mavic 3E or Autel EVO II. For custom cameras, measure the sensor size from your lens specifications.',
17
+ },
18
+ {
19
+ question: 'What GSD do I need for different mission types?',
20
+ answer: 'High-precision topography: 1-2 cm/px. Standard mapping: 2-5 cm/px. Inspection and monitoring: 5-10 cm/px. Visual surveys: 10+ cm/px. Choose based on your project\'s accuracy requirements.',
21
+ },
22
+ {
23
+ question: 'What is image overlap and why is it important?',
24
+ answer: 'Overlap is the percentage of area that appears in consecutive photos. High overlap (60-80%) ensures complete coverage and improves 3D model quality. Frontal overlap affects photo spacing; lateral overlap affects the number of flight lines.',
25
+ },
26
+ {
27
+ question: 'How do I calculate the ideal flight altitude?',
28
+ answer: 'Use this calculator: Desired GSD × focal length ÷ sensor width = altitude. The calculator does this automatically and shows the maximum safe altitude to maintain your target precision and avoid motion blur.',
29
+ },
30
+ ];
31
+
32
+ const howToSteps = [
33
+ {
34
+ name: 'Select or Configure Camera',
35
+ text: 'Choose from pre-configured models (DJI Mavic 3E, Autel EVO II, etc.) or enter sensor dimensions and focal length manually. Presets load all parameters instantly.',
36
+ },
37
+ {
38
+ name: 'Set Flight Altitude',
39
+ text: 'Use the altitude slider to adjust the height above ground level (AGL). Watch the GSD update in real-time to see how altitude affects image resolution.',
40
+ },
41
+ {
42
+ name: 'Define Overlap Requirements',
43
+ text: 'Set frontal and lateral overlap percentages. Higher overlap ensures complete coverage but increases mission time and number of images.',
44
+ },
45
+ {
46
+ name: 'Review Results and Export',
47
+ text: 'Check the GSD, coverage area, and precision classification. Generate a quick report to attach to your official flight plan.',
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: 'USD' },
81
+ } as WithContext<SoftwareApplication>,
82
+ ];
83
+
84
+ export const content: GsdFlightPlannerLocaleContent = {
85
+ slug,
86
+ title,
87
+ description,
88
+ ui: {
89
+ configuration: 'Configuration',
90
+ cameraSelection: 'Camera Selection',
91
+ manualMode: 'Manual Mode',
92
+ sensorConfig: 'Sensor Configuration',
93
+ width: 'Width',
94
+ height: 'Height',
95
+ focalLength: 'Focal Length',
96
+ imageResolution: 'Image Resolution',
97
+ w: 'W',
98
+ h: 'H',
99
+ px: 'px',
100
+ altitudeAgl: 'Altitude (AGL)',
101
+ overlapSettings: 'Overlap Configuration',
102
+ forward: 'Forward',
103
+ lateral: 'Lateral',
104
+ missionArea: 'Mission Area',
105
+ totalAreaToSurvey: 'Total Area to Survey',
106
+ hectareHint: '1 ha = 10,000 m²',
107
+ inverseCalc: 'Reverse Calculation',
108
+ targetGsd: 'Target GSD',
109
+ maxAltitude: 'Max Altitude',
110
+ reset: 'Reset',
111
+ results: 'Results',
112
+ gsdResult: 'Ground Sample Distance',
113
+ gsdValue: 'GSD',
114
+ gsdUnit: 'cm/px',
115
+ highPrec: 'High Prec.',
116
+ standard: 'Standard',
117
+ inspection: 'Inspection',
118
+ visual: 'Visual',
119
+ coveragePerImage: 'Coverage per Image',
120
+ area: 'Area',
121
+ spacing: 'Spacing',
122
+ flightDir: 'Flight →',
123
+ missionMetrics: 'Mission Metrics',
124
+ images: 'Images',
125
+ shots: 'shots',
126
+ flightLines: 'Flight Lines',
127
+ lines: 'lines',
128
+ flightTime: 'Flight Time',
129
+ min: 'min',
130
+ dataVolume: 'Data Volume',
131
+ gb: 'GB',
132
+ copyShareLink: 'Copy Share Link',
133
+ downloadReport: 'Download Report',
134
+ copiedToClipboard: 'Copied!',
135
+ metric: 'Metric',
136
+ imperial: 'Imperial',
137
+ classHighPrecision: 'High-Precision Topography',
138
+ classStandard: 'Standard Mapping',
139
+ classInspection: 'Inspection & Monitoring',
140
+ classVisual: 'Visual Survey',
141
+ ultraHighResAlert: 'Ultra-high resolution: Ensure sufficient storage and processing power',
142
+ lowOverlapAlert: 'Forward overlap below 60%: May affect 3D model quality',
143
+ largeDatasetAlert: 'Very large dataset: Consider splitting into multiple flights',
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 Flight Planner: The Complete Photogrammetry Calculator',
153
+ level: 2,
154
+ },
155
+ {
156
+ type: 'paragraph',
157
+ html: '<strong>Ground Sample Distance (GSD)</strong> is the most important metric in drone photogrammetry. A calculation error can waste an entire day of flight and cost thousands in lost productivity. This calculator eliminates that risk.',
158
+ },
159
+ {
160
+ type: 'title',
161
+ text: 'Why GSD Matters for Professionals',
162
+ level: 3,
163
+ },
164
+ {
165
+ type: 'paragraph',
166
+ html: 'Whether you are surveying land, creating 3D models, or monitoring infrastructure, GSD determines the level of detail you can capture. A 1 cm/px mission captures details that a 5 cm/px mission misses. But flying too low wastes battery and extends mission time unnecessarily.',
167
+ },
168
+ {
169
+ type: 'title',
170
+ text: 'GSD by Mission Type',
171
+ level: 3,
172
+ },
173
+ {
174
+ type: 'list',
175
+ items: [
176
+ '<strong>High-Precision Topography (1-2 cm/px):</strong> Survey-grade accuracy for parcels, mine sites, and engineering projects.',
177
+ '<strong>Standard Mapping (2-5 cm/px):</strong> Orthomosaics, agricultural monitoring, and general-purpose maps.',
178
+ '<strong>Inspection and Monitoring (5-10 cm/px):</strong> Building inspections, power line reviews, and change detection.',
179
+ '<strong>Visual Surveys (10+ cm/px):</strong> Large-area reconnaissance and visual assessment.',
180
+ ],
181
+ },
182
+ {
183
+ type: 'title',
184
+ text: 'The GSD Formula',
185
+ level: 3,
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: '<code>GSD (cm/px) = (Altitude × Sensor Width) / (Focal Length × Image Width) × 100</code><br/>This calculator handles the math. You focus on the mission.',
190
+ },
191
+ {
192
+ type: 'title',
193
+ text: 'Overlap: Why 60-80% is the Sweet Spot',
194
+ level: 3,
195
+ },
196
+ {
197
+ type: 'paragraph',
198
+ html: 'Low overlap (20-40%) saves battery but risks gaps in coverage. High overlap (80%+) guarantees complete coverage but extends mission time. The <strong>60-80% range</strong> is the professional standard: it ensures complete 3D reconstruction without excessive redundancy.',
199
+ },
200
+ {
201
+ type: 'title',
202
+ text: 'Plan Better Missions with Real Data',
203
+ level: 3,
204
+ },
205
+ {
206
+ type: 'paragraph',
207
+ html: 'Before every flight, use this calculator to determine: the exact altitude for your required GSD, how many photos you will need, total mission time, and if motion blur is a risk. With this data, you will execute precise missions and avoid costly mistakes.',
208
+ },
209
+ ],
210
+ faq: faqItems,
211
+ bibliography,
212
+ howTo: howToSteps,
213
+ schemas,
214
+ };
@@ -0,0 +1,221 @@
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 = 'planificador-vuelo-gsd';
6
+ const title = 'Planificador de Vuelo GSD: Calculadora de Distancia de Muestreo Terrestre';
7
+ const description = 'Calcula la Distancia de Muestreo Terrestre (GSD) para misiones de fotogrametría. Soporte para DJI, Autel y cámaras personalizadas. Planificación de vuelo con indicadores de calidad visual.';
8
+
9
+ const faqItems = [
10
+ {
11
+ question: '¿Qué es la Distancia de Muestreo Terrestre (GSD)?',
12
+ answer: 'La GSD es la distancia en el suelo representada por un píxel en tu imagen. Una GSD más baja significa mayor resolución y detalle. Por ejemplo, una GSD de 1 cm/px permite resolver detalles de hasta 1 centímetro, lo cual es crítico para levantamientos topográficos.',
13
+ },
14
+ {
15
+ question: '¿Cómo encuentro las especificaciones de la cámara de mi drone?',
16
+ answer: 'Consulta el manual de tu drone para conocer las dimensiones del sensor y la distancia focal. Alternativamente, utiliza nuestros preajustes de cámara para modelos populares como el DJI Mavic 3E o Autel EVO II. Para cámaras personalizadas, mide el tamaño del sensor en las especificaciones de tu lente.',
17
+ },
18
+ {
19
+ question: '¿Qué GSD necesito para diferentes tipos de misiones?',
20
+ answer: 'Topografía de alta precisión: 1-2 cm/px. Cartografía estándar: 2-5 cm/px. Inspección y monitoreo: 5-10 cm/px. Reconocimientos visuales: 10+ cm/px. Elige basándote en los requisitos de precisión de tu proyecto.',
21
+ },
22
+ {
23
+ question: '¿Qué es el solape de imagen y por qué es importante?',
24
+ answer: 'El solape es el porcentaje de área que aparece en fotos consecutivas. Un solape alto (60-80%) asegura una cobertura completa y mejora la calidad del modelo 3D. El solape frontal afecta al espaciado de las fotos en la línea de vuelo; el solape lateral afecta al número de líneas de vuelo necesarias.',
25
+ },
26
+ {
27
+ question: '¿Cómo calculo la altitud de vuelo ideal?',
28
+ answer: 'Utiliza esta calculadora: GSD deseada × distancia focal ÷ ancho del sensor = altitud. La calculadora hace esto automáticamente y muestra la altitud máxima segura para mantener la precisión deseada y evitar el desenfoque por movimiento.',
29
+ },
30
+ ];
31
+
32
+ const howToSteps = [
33
+ {
34
+ name: 'Seleccionar o Configurar Cámara',
35
+ text: 'Elige entre modelos preconfigurados (DJI Mavic 3E, Autel EVO II, etc.) o introduce las dimensiones del sensor y la distancia focal manualmente. Los preajustes cargan todos los parámetros al instante.',
36
+ },
37
+ {
38
+ name: 'Establecer Altitud de Vuelo',
39
+ text: 'Usa el control deslizante de altitud para ajustar la altura sobre el nivel del suelo (AGL). Observa cómo se actualiza la GSD en tiempo real para ver cómo la altitud afecta la resolución de la imagen.',
40
+ },
41
+ {
42
+ name: 'Definir Requisitos de Solape',
43
+ text: 'Establece los porcentajes de solape frontal y lateral. Un solape mayor asegura una cobertura completa pero aumenta el tiempo de la misión y el número de imágenes.',
44
+ },
45
+ {
46
+ name: 'Revisar Resultados y Exportar',
47
+ text: 'Comprueba la GSD, el área de cobertura y la clasificación de precisión. Genera un informe PDF rápido para adjuntarlo a tu plan de vuelo oficial.',
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: 'EUR' },
81
+ } as WithContext<SoftwareApplication>,
82
+ ];
83
+
84
+ export const content: GsdFlightPlannerLocaleContent = {
85
+ slug,
86
+ title,
87
+ description,
88
+ ui: {
89
+
90
+ configuration: 'Configuración',
91
+ cameraSelection: 'Selección de cámara',
92
+ manualMode: 'Configuración manual',
93
+ sensorConfig: 'Configuración del sensor',
94
+ width: 'Ancho',
95
+ height: 'Alto',
96
+ focalLength: 'Distancia focal',
97
+ imageResolution: 'Resolución de imagen',
98
+ w: 'W',
99
+ h: 'H',
100
+ px: 'px',
101
+ altitudeAgl: 'Altitud (AGL)',
102
+ overlapSettings: 'Configuración de solape',
103
+ forward: 'Frontal',
104
+ lateral: 'Lateral',
105
+ missionArea: 'Área de misión',
106
+ totalAreaToSurvey: 'Área total a relevar',
107
+ hectareHint: '1 ha = 10.000 m²',
108
+ inverseCalc: 'Cálculo inverso',
109
+ targetGsd: 'GSD deseada',
110
+ maxAltitude: 'Altitud máxima',
111
+ reset: 'Restablecer',
112
+
113
+
114
+ results: 'Resultados',
115
+ gsdResult: 'Distancia de muestreo terrestre',
116
+ gsdValue: 'GSD',
117
+ gsdUnit: 'cm/px',
118
+ highPrec: 'Alta prec.',
119
+ standard: 'Estándar',
120
+ inspection: 'Inspección',
121
+ visual: 'Visual',
122
+ coveragePerImage: 'Cobertura por imagen',
123
+ area: 'Área',
124
+ spacing: 'Espaciado',
125
+ flightDir: 'Vuelo →',
126
+ missionMetrics: 'Métricas de misión',
127
+ images: 'Imágenes',
128
+ shots: 'fotos',
129
+ flightLines: 'Líneas de vuelo',
130
+ lines: 'líneas',
131
+ flightTime: 'Tiempo de vuelo',
132
+ min: 'min',
133
+ dataVolume: 'Volumen de datos',
134
+ gb: 'GB',
135
+ copyShareLink: 'Copiar enlace',
136
+ downloadReport: 'Descargar informe',
137
+ copiedToClipboard: '¡Copiado!',
138
+ metric: 'Métrica',
139
+ imperial: 'Imperial',
140
+
141
+
142
+ classHighPrecision: 'Topografía de alta precisión',
143
+ classStandard: 'Cartografía estándar',
144
+ classInspection: 'Inspección y monitoreo',
145
+ classVisual: 'Reconocimiento visual',
146
+ ultraHighResAlert: 'Resolución ultra alta: Asegure suficiente almacenamiento y procesamiento',
147
+ lowOverlapAlert: 'Solape frontal inferior al 60%: Puede afectar la calidad del modelo 3D',
148
+ largeDatasetAlert: 'Conjunto de datos muy grande: Considere dividir en varios vuelos',
149
+
150
+
151
+ presetDjiMavic3e: 'DJI Mavic 3E',
152
+ presetDjiMatrice300: 'DJI Matrice 300 RTK',
153
+ presetAutelEvoII: 'Autel EVO II',
154
+ presetDjiAir3s: 'DJI Air 3S',
155
+ },
156
+ seo: [
157
+ {
158
+ type: 'title',
159
+ text: 'Planificador de Vuelo GSD: La Calculadora Completa de Fotogrametría',
160
+ level: 2,
161
+ },
162
+ {
163
+ type: 'paragraph',
164
+ html: 'La <strong>Distancia de Muestreo Terrestre (GSD)</strong> es la métrica más importante en la fotogrametría con drones. Un error de cálculo puede desperdiciar un día entero de vuelo y costar miles en pérdida de productividad. Esta calculadora elimina ese riesgo.',
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Por qué la GSD es Importante para Profesionales',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Ya sea que estés realizando levantamientos de terrenos, creando modelos 3D o monitoreando infraestructuras, la GSD determina el nivel de detalle que puedes captar. Una misión de 1 cm/px captura detalles que una de 5 cm/px pierde. Pero volar demasiado bajo desperdicia batería y extiende el tiempo de misión innecesariamente.',
174
+ },
175
+ {
176
+ type: 'title',
177
+ text: 'GSD según el Tipo de Misión',
178
+ level: 3,
179
+ },
180
+ {
181
+ type: 'list',
182
+ items: [
183
+ '<strong>Topografía de Alta Precisión (1-2 cm/px):</strong> Precisión de grado topográfico para parcelas, sitios mineros y proyectos de ingeniería.',
184
+ '<strong>Cartografía Estándar (2-5 cm/px):</strong> Ortomosaicos, monitoreo agrícola y mapas de propósito general.',
185
+ '<strong>Inspección y Monitoreo (5-10 cm/px):</strong> Inspección de edificios, revisión de líneas eléctricas y detección de cambios.',
186
+ '<strong>Reconocimientos Visuales (10+ cm/px):</strong> Reconocimiento de áreas amplias y evaluación visual.',
187
+ ],
188
+ },
189
+ {
190
+ type: 'title',
191
+ text: 'La Fórmula GSD',
192
+ level: 3,
193
+ },
194
+ {
195
+ type: 'paragraph',
196
+ html: '<code>GSD (cm/px) = (Altitud × Ancho del Sensor) / (Distancia Focal × Ancho de Imagen) × 100</code><br/>Esta calculadora se encarga de las matemáticas. Tú te enfocas en la misión.',
197
+ },
198
+ {
199
+ type: 'title',
200
+ text: 'Solape: Por qué el 60-80% es el Punto Ideal',
201
+ level: 3,
202
+ },
203
+ {
204
+ type: 'paragraph',
205
+ html: 'Un solape bajo (20-40%) ahorra batería pero arriesga huecos en la cobertura. Un solape alto (80%+) garantiza una cobertura completa pero extiende el tiempo de misión. El <strong>rango del 60-80%</strong> es el estándar profesional: asegura una reconstrucción 3D completa sin redundancia excesiva.',
206
+ },
207
+ {
208
+ type: 'title',
209
+ text: 'Planifica Mejores Misiones con Datos Reales',
210
+ level: 3,
211
+ },
212
+ {
213
+ type: 'paragraph',
214
+ html: 'Antes de cada vuelo, utiliza esta calculadora para determinar: la altitud exacta para tu GSD requerida, cuántas fotos necesitarás, el tiempo total de la misión y si el desenfoque por movimiento es un riesgo. Con estos datos, ejecutarás misiones precisas y evitarás errores costosos.',
215
+ },
216
+ ],
217
+ faq: faqItems,
218
+ bibliography,
219
+ howTo: howToSteps,
220
+ schemas,
221
+ };