• Domingo 15 de Diciembre de 2024, 17:35

Autor Tema:  Extraer Rectangulo De Malla De Elevaciones  (Leído 751 veces)

pinsu

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Extraer Rectangulo De Malla De Elevaciones
« en: Jueves 19 de Julio de 2007, 17:24 »
0
Hola a todos! me llamo Alex y tengo problemas con un programa que quiero hacer en C. Resulta que tengo que extraer para posteriores operaciones, de un archivo de 700mb q contiene números reales en formato ASCII de ESRI un pequeño rectangulo que corresponde a una zona en concreto de la comarca del Empordà. Este archivo es un modelo de elevaciones del terreno.
Dicho archivo funciona por coordenadas, el extremo inferior izquierdo tiene x= 257995 y y=4484975. Se trata de una malla 30 por 30, cada casilla que avanzamos nos movemos 30 metros.
Yo he supuesto que empiezo por el valor de arriba a la izqda con lo que ir hacia abajo represnta -30 y moverse en x a las casillas de la drcha representa +30.
Y quiero escribir en otro archivo, emporda.txt, aquellos valores en z y sus coordenadas x e y correspondientes, al rectangulo que a mi me interesa.Éste tiene como extremos la siguiente pareja de coordenadas;
x=484000
y=4680000
 y la pareja de puntos
x=500000
y=4696000

He intentado realizar un programa en C, aprovechando los pocos conocimientos de este lenguaje que tengo. Utilizando archivos FST y unas funciones que he encontrado en la pagina del departamento de informatica de la escuela.
utilizando el emacs y el gcc como compilador, compila bien, pero al darle al exe, se abre el archivo de emproda.txt pero no escribe nada.
en Dos da el siguiente mensaje :
 Assertion failed: feof((FILE *) f) || (ret == 1 && !ferror((FILE *) f)), file ma
lla30.c, line 77
La verdad es q voy bastante perdido, aver si me podeis orientar un poco. Muchas gracias!

Aquí os dejo el programa en C

fichero mallado30.c[/size]

#include <assert.h>
#include <entsort.h>
#include <stdio.h>
#include "fst1.h"



#define XMIN 484000
#define XMAX 500000
#define YMIN 4680000
#define YMAX 4696000
#define YFIN 4484975
#define XFIN 535015

#define FST_H


  /*Inicio Programa*/

int main(void) {

  float z;
  FST f2,f1;
  int m,i,j;

  m==5;
  z==0.0;
  f1=AbrirFST(lectura,"mallapeque.txt");
  f2=AbrirFST(escritura,"emporda.txt");
  EscribirRealFST(f2,z);
 

  for (i==0;i<=m-1;i++){
    LeerRealFST(f1,&z);
   
    for (i==4752005; i<=YFIN; i-30){
     
      for (j==257995; j<=XFIN; j+30){
   
   while ((i>=YMIN)&& (i<=YMAX)){
     
     while((j>=XMIN) && (j<=XMAX)){
       EscribirRealFST(f2,i);
       EscribirRealFST(f2,j);
       EscribirRealFST(f2,z);
     }
   }
      }
    }
  }
 
    CerrarFST(f1);
    CerrarFST(f2);
    }



/*definicion de los FST*/


FST AbrirFST(ModeFST m, const char *nom)
{
  FST f;

  if(m==lectura){
    f=(FST)fopen(nom,"r");
  }else if (m==escritura) {
    f=(FST)fopen(nom,"w");
  } else assert(0);
  assert(f!=NULL);
  return f;
  }

  void LeerRealFST(FST f, float *const z)
{
  int ret;

  ret=fscanf((FILE *) f, "%mallaque.txt",z);
  assert(feof((FILE *) f) || (ret == 1 && !ferror((FILE *) f)));
}
  void EscribirRealFST(FST f,float z)
   {
     int ret;
     ret= fprintf((FILE *)f, "%g",z);
     assert(ret>=0 && !ferror((FILE *)f));
   }
  void CerrarFST(FST f)
   {
     int ret;
     ret=fclose((FILE *)f);
     assert(ret ==0);
   }


fichero fst1.h[/size]

/*
 * Implementacion de las operaciones sobre FST
 */

#ifndef FST_H
#define FST_H

/* Inclusiones: libreriass estandard */

#include <stdio.h>

typedef enum {
    lectura,
    escritura
} ModeFST;

typedef FILE *FST;


FST AbrirFST(ModeFST m, const char *nom);
void LeerEnteroFST(FST f, int *const e);
void LeerRealFST(FST f, float *const r);
void LeerCaracterFST(FST f, char *const c);
void EscribirEnterFST(FST f, int e);
void EscribirRealFST(FST f, float r);
void EscribirCaracterFST(FST f, char c);
int FdFST(FST f);
void CerrarFST(FST f);

#endif

muchas gracias y siento el coñazo ;)
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

pinsu

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Extraer Rectangulo De Malla De Elevaciones
« Respuesta #1 en: Lunes 23 de Julio de 2007, 09:35 »
0
Alguien me puede dar algun consejo por favor??
gracias!