Calculate gradient and azimuth of a profile.
I maintainer di solito rispondono entro 1 giorno
@Esteban82 ci sta già lavorando.
Dal 12/8/2024.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
For the work I am going to present at the AGU I made a small software (in C) that from a profile (with XYZ data) calculates the intermediate position between two successive data (Xm, Ym), and gradient and azimuth (Xm, Ym, Az, Grad). This way I can use it as input for greenspline (-A+f2). I think it would be nice to add it as a feature for GMT.
What do you think? My idea is to do it but I probably need help.
I think it should be added as a new argument for mapproject? Do you agree? What letter should I use?
This is the code:
#include <math.h>
#include <stdio.h>
int main() {
// Definir los nombres de los archivos de entrada y salida
const char* trackFileName = "Bad_Track";
const char* outFileName = "Track_Gradient.txt";
// Abrir los archivos de entrada y salida
FILE *trackFile = fopen(trackFileName, "r");
FILE *outFile = fopen(outFileName, "w");
if (trackFile == NULL || outFile == NULL) {
perror("Error al abrir archivos");
return 1;
}
// Variables para almacenar los puntos medios
double Xm, Ym, DX, DY, DZ, Distance, Gradient, Azimuth, Radianes;
// Variables para leer las coordenadas de cada línea
double x1, y1, z1, x2, y2, z2;
// Leer las coordenadas de la primera línea
if (fscanf(trackFile, "%lf %lf %lf", &x1, &y1, &z1 ) != 3) {
perror("Error al leer el archivo de entrada");
return 1;
}
// Loop para procesar cada línea
while (fscanf(trackFile, "%lf %lf %lf" , &x2, &y2, &z2) == 3) {
// 1. Calcular el punto medio
Xm = (x1 + x2) / 2.0;
Ym = (y1 + y2) / 2.0;
// 2. Gradiente
DX= (x2-x1);
DY= (y2-y1);
Distance= sqrt(pow(DX, 2) + pow(DY, 2));
DZ = (z2-z1);
Gradient= (DZ / Distance);
// 3. Azimuth
Radianes = atan2 (DX, DY);
Azimuth = fmod ((Radianes * (180/M_PI)+360),360);
//Azimuth = fmod (Azimuth * (180 / M_PI) + 180, 360);
// Escribir el punto medio en el archivo de salida
fprintf(outFile, "%.2f %.2f %.5f %.4f\n", Xm, Ym, Gradient, Azimuth);
// Actualizar las coordenadas anteriores
x1 = x2;
y1 = y2;
z1 = z2;
}
// Cerrar los archivos
fclose(trackFile);
fclose(outFile);
printf("Proceso completado con éxito.\n");
return 0;
}
- Lingua principale
- C
- Stelle
- 984
- Fork
- 413
- Merge medio
- 21h 18m
- PR unite (30g)
- 39
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di GenericMappingTools/gmt
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
GenericMappingTools/gmt#5767 · 15 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
feature request
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
GenericMappingTools/gmt#9225 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
inset: Specifing the region using -Dxmin/xmax/ymin/ymax doesn't workForse già presa @Esteban82 l’ha presa 16 giorni fa. Apertabug
GenericMappingTools/gmt#9224 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
histogram: Support density histograms and moreForse già presa @Esteban82 l’ha presa 24 giorni fa. Apertafeature request
GenericMappingTools/gmt#9212 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Release GMT 6.7.1Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
GenericMappingTools/gmt#9202 · 7 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di GenericMappingTools/gmt
Issue simili
-
backlog
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
EchoTools/nevr-runtime#454 ·
I maintainer di solito rispondono entro 1 giorno
-
initramfs: -type f (#18686) skips the libcurl.so.4 symlink, libcurl no longer copied into initramfsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 62/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
UNIVERSE-HPC/course-material#283 ·
-
bug C/C++ code
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
webarkit/WebARKitLib#85 ·
I maintainer di solito rispondono entro 1 giorno