Starting DEM Ascii format output routine.
This commit is contained in:
parent
f0ff68edba
commit
524ec03927
1 changed files with 140 additions and 2 deletions
|
@ -205,6 +205,141 @@ void rawConvertCenter2Edge( fgRAWDEM *raw ) {
|
|||
|
||||
/* Dump out the ascii format DEM file */
|
||||
void rawDumpAsciiDEM( fgRAWDEM *raw ) {
|
||||
char outfile[256];
|
||||
/* Generate output file name */
|
||||
|
||||
|
||||
/* Dump the "A" record */
|
||||
|
||||
/* get the name field (144 characters) */
|
||||
for ( i = 0; i < 144; i++ ) {
|
||||
name[i] = fgetc(fd);
|
||||
}
|
||||
name[i+1] = '\0';
|
||||
|
||||
/* clean off the whitespace at the end */
|
||||
for ( i = strlen(name)-2; i > 0; i-- ) {
|
||||
if ( !isspace(name[i]) ) {
|
||||
i=0;
|
||||
} else {
|
||||
name[i] = '\0';
|
||||
}
|
||||
}
|
||||
printf(" Quad name field: %s\n", name);
|
||||
|
||||
/* get quadrangle id (now part of previous section */
|
||||
/* next_token(fd, dem_quadrangle); */
|
||||
/* printf(" Quadrangle = %s\n", dem_quadrangle); */
|
||||
|
||||
/* DEM level code, 3 reflects processing by DMA */
|
||||
inum = next_int(fd);
|
||||
printf(" DEM level code = %d\n", inum);
|
||||
|
||||
/* Pattern code, 1 indicates a regular elevation pattern */
|
||||
inum = next_int(fd);
|
||||
printf(" Pattern code = %d\n", inum);
|
||||
|
||||
/* Planimetric reference system code, 0 indicates geographic
|
||||
* coordinate system. */
|
||||
inum = next_int(fd);
|
||||
printf(" Planimetric reference code = %d\n", inum);
|
||||
|
||||
/* Zone code */
|
||||
inum = next_int(fd);
|
||||
printf(" Zone code = %d\n", inum);
|
||||
|
||||
/* Map projection parameters (ignored) */
|
||||
for ( i = 0; i < 15; i++ ) {
|
||||
dnum = next_double(fd);
|
||||
/* printf("%d: %f\n",i,dnum); */
|
||||
}
|
||||
|
||||
/* Units code, 3 represents arc-seconds as the unit of measure for
|
||||
* ground planimetric coordinates throughout the file. */
|
||||
inum = next_int(fd);
|
||||
if ( inum != 3 ) {
|
||||
printf(" Unknown (X,Y) units code = %d!\n", inum);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
/* Units code; 2 represents meters as the unit of measure for
|
||||
* elevation coordinates throughout the file. */
|
||||
inum = next_int(fd);
|
||||
if ( inum != 2 ) {
|
||||
printf(" Unknown (Z) units code = %d!\n", inum);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
/* Number (n) of sides in the polygon which defines the coverage of
|
||||
* the DEM file (usually equal to 4). */
|
||||
inum = next_int(fd);
|
||||
if ( inum != 4 ) {
|
||||
printf(" Unknown polygon dimension = %d!\n", inum);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
/* Ground coordinates of bounding box in arc-seconds */
|
||||
dem_x1 = m->originx = next_exp(fd);
|
||||
dem_y1 = m->originy = next_exp(fd);
|
||||
printf(" Origin = (%.2f,%.2f)\n", m->originx, m->originy);
|
||||
|
||||
dem_x2 = next_exp(fd);
|
||||
dem_y2 = next_exp(fd);
|
||||
|
||||
dem_x3 = next_exp(fd);
|
||||
dem_y3 = next_exp(fd);
|
||||
|
||||
dem_x4 = next_exp(fd);
|
||||
dem_y4 = next_exp(fd);
|
||||
|
||||
/* Minimum/maximum elevations in meters */
|
||||
dem_z1 = next_exp(fd);
|
||||
dem_z2 = next_exp(fd);
|
||||
printf(" Elevation range %.4f %.4f\n", dem_z1, dem_z2);
|
||||
|
||||
/* Counterclockwise angle from the primary axis of ground
|
||||
* planimetric referenced to the primary axis of the DEM local
|
||||
* reference system. */
|
||||
next_token(fd, token);
|
||||
|
||||
/* Accuracy code; 0 indicates that a record of accuracy does not
|
||||
* exist and that no record type C will follow. */
|
||||
/* DEM spacial resolution. Usually (3,3,1) (3,6,1) or (3,9,1)
|
||||
* depending on latitude */
|
||||
/* I will eventually have to do something with this for data at
|
||||
* higher latitudes */
|
||||
next_token(fd, token);
|
||||
printf(" accuracy & spacial resolution string = %s\n", token);
|
||||
i = strlen(token);
|
||||
printf(" length = %d\n", i);
|
||||
|
||||
ptr = token + i - 12;
|
||||
printf(" last field = %s = %.2f\n", ptr, atof(ptr));
|
||||
ptr[0] = '\0';
|
||||
|
||||
ptr = ptr - 12;
|
||||
m->col_step = atof(ptr);
|
||||
printf(" last field = %s = %.2f\n", ptr, m->row_step);
|
||||
ptr[0] = '\0';
|
||||
|
||||
ptr = ptr - 12;
|
||||
m->row_step = atof(ptr);
|
||||
printf(" last field = %s = %.2f\n", ptr, m->col_step);
|
||||
ptr[0] = '\0';
|
||||
|
||||
/* accuracy code = atod(token) */
|
||||
inum = atoi(token);
|
||||
printf(" Accuracy code = %d\n", inum);
|
||||
|
||||
printf(" column step = %.2f row step = %.2f\n",
|
||||
m->col_step, m->row_step);
|
||||
/* dimension of arrays to follow (1)*/
|
||||
next_token(fd, token);
|
||||
|
||||
/* number of profiles */
|
||||
dem_num_profiles = m->cols = m->rows = next_int(fd);
|
||||
printf(" Expecting %d profiles\n", dem_num_profiles);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -291,7 +426,10 @@ void rawReadStrip( fgRAWDEM *raw, int lat_degrees ) {
|
|||
|
||||
|
||||
/* $Log$
|
||||
/* Revision 1.1 1998/03/02 23:31:01 curt
|
||||
/* Initial revision.
|
||||
/* Revision 1.2 1998/03/03 02:04:01 curt
|
||||
/* Starting DEM Ascii format output routine.
|
||||
/*
|
||||
* Revision 1.1 1998/03/02 23:31:01 curt
|
||||
* Initial revision.
|
||||
*
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue