⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 landclass_obj.c

📁 CA仿真模型中SLEUTH模型
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <assert.h>#include <stdio.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include "ugm_defines.h"#include "ugm_macros.h"#include "landclass_obj.h"#include "scenario_obj.h"#include "globals.h"#include "grid_obj.h"#include "memory_obj.h"#include "utilities.h"/*****************************************************************************\*********************************************************************************                                                                           ****                                 MACROS                                    ****                                                                           *********************************************************************************\*****************************************************************************//*****************************************************************************\*********************************************************************************                                                                           ****                               SCCS ID                                     ****                                                                           *********************************************************************************\*****************************************************************************/char landclass_obj_c_sccs_id[] = "@(#)landclass_obj.c	1.84	12/4/00";/*****************************************************************************\*********************************************************************************                                                                           ****                      STATIC MEMORY FOR THIS OBJECT                        ****                                                                           *********************************************************************************\*****************************************************************************/static Classes class_indices[MAX_NUM_CLASSES];static int new_indices[MAX_NEW_INDICES];static Classes landuse_classes[MAX_NUM_CLASSES];static int urban_code;static int num_landclasses;static char filename[MAX_FILENAME_LEN];static int max_landclass_num;static int num_reduced_classes;static char annual_prob_filename[MAX_FILENAME_LEN];static BOOLEAN ugm_read;/*****************************************************************************\*********************************************************************************                                                                           ****                        STATIC FUNCTION PROTOTYPES                         ****                                                                           *********************************************************************************\*****************************************************************************/static int landclass_process_user_color (char *string2process);static void landclass_SetMaxLandclassNum ();static void landclass_SetUrbanCode ();static void landclass_MapLandclassNum_2_idx ();static void landclass_CreateReducedClasses ();/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_MemoryLog** PURPOSE:       log memory locations onto FILE* fp** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/void  landclass_MemoryLog (FILE * fp){  LOG_MEM (fp, &class_indices[0], sizeof (Classes), MAX_NUM_CLASSES);  LOG_MEM (fp, &new_indices[0], sizeof (int), MAX_NEW_INDICES);  LOG_MEM (fp, &landuse_classes[0], sizeof (Classes), MAX_NUM_CLASSES);  LOG_MEM (fp, &urban_code, sizeof (int), 1);  LOG_MEM (fp, &num_landclasses, sizeof (int), 1);  LOG_MEM_CHAR_ARRAY (fp, &filename, sizeof (char), MAX_FILENAME_LEN);  LOG_MEM (fp, &max_landclass_num, sizeof (int), 1);  LOG_MEM (fp, &num_reduced_classes, sizeof (int), 1);  LOG_MEM_CHAR_ARRAY (fp, &annual_prob_filename, sizeof (char), MAX_FILENAME_LEN);  LOG_MEM (fp, &ugm_read, sizeof (int), 1);}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetReducedClassesPtr** PURPOSE:       return ptr to class_indices** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/Classes *  landclass_GetReducedClassesPtr (){  return class_indices;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetClassesPtr** PURPOSE:       return ptr to landuse_classes** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/Classes *  landclass_GetClassesPtr (){  return landuse_classes;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetNewIndicesPtr** PURPOSE:       return ptr to new_indices** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int *  landclass_GetNewIndicesPtr (){  return new_indices;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetUrbanCode** PURPOSE:       return the urban code** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetUrbanCode (){  return urban_code;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetNumLandclasses** PURPOSE:       return num_landclasses** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetNumLandclasses (){  return num_landclasses;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetNumReducedclasses** PURPOSE:       return num_reduced_classes** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetNumReducedclasses (){  return num_reduced_classes;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetMaxLandclasses** PURPOSE:       return max_landclass_num** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetMaxLandclasses (){  return max_landclass_num;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetClassNum** PURPOSE:       return landclass num for a given index** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetClassNum (int i){  return landuse_classes[i].num;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_IsAlandclass** PURPOSE:       test if val is a landclass value** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/BOOLEAN  landclass_IsAlandclass (int val){  char func[] = "landclass_IsAlandclass";  BOOLEAN rv = FALSE;  int i;  if (!ugm_read)  {    sprintf (msg_buf, "landclasses file has not been read yet!");    LOG_ERROR (msg_buf);    EXIT (1);  }  for (i = 0; i < num_landclasses; i++)  {    if (landuse_classes[i].num == val)      rv = TRUE;  }  return rv;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetClassIDX** PURPOSE:       return idx for a given index** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetClassIDX (int i){  return landuse_classes[i].idx;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetClassColor** PURPOSE:       return color val for given landclass** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetClassColor (int i){  return landuse_classes[i].red * 256 * 256 +    landuse_classes[i].green * 256 + landuse_classes[i].blue;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetClassEXC** PURPOSE:       is this an excluded class** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/BOOLEAN  landclass_GetClassEXC (int i){  return landuse_classes[i].EXC;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetClassTrans** PURPOSE:       is this a transition class** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/BOOLEAN  landclass_GetClassTrans (int i){  return landuse_classes[i].trans;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetReducedNum** PURPOSE:       return class num for given class_indices index** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetReducedNum (int i){  return class_indices[i].num;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetReducedIDX** PURPOSE:       return idx for a given class_indices index** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetReducedIDX (int i){  return class_indices[i].idx;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetReducedColor** PURPOSE:       return color for given class_indices index** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/int  landclass_GetReducedColor (int i){  return class_indices[i].red * 256 * 256 +    class_indices[i].green * 256 + class_indices[i].blue;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetReducedEXC** PURPOSE:       is class at class_indices[i] excluded** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/BOOLEAN  landclass_GetReducedEXC (int i){  return class_indices[i].EXC;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_GetReducedTrans** PURPOSE:       is this a transition class** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/BOOLEAN  landclass_GetReducedTrans (int i){  return class_indices[i].trans;}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_AnnualProbInit** PURPOSE:       initializes the annual_class_probabilities file with 0's** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/void  landclass_AnnualProbInit (){  char func[] = "landclass_AnnualProbInit";  FILE *fp;  int i;  int num_pixels;  int num_written;  int zero = 0;  sprintf (annual_prob_filename, "%sannual_class_probabilities_%u",           scen_GetOutputDir (), glb_mype);  FILE_OPEN (fp, annual_prob_filename, "wb");  num_pixels = mem_GetTotalPixels () * landclass_GetNumLandclasses ();  for (i = 0; i < num_pixels; i++)  {    num_written = fwrite (&zero, sizeof (PIXEL), 1, fp);    if (num_written != 1)    {      sprintf (msg_buf, "Unable to write to file: %s", annual_prob_filename);      LOG_ERROR (msg_buf);      sprintf (msg_buf, "%s", strerror (errno));      LOG_ERROR (msg_buf);      EXIT (1);    }  }  if (scen_GetLogFlag ())  {    scen_Append2Log ();    if (scen_GetLogWritesFlag ())    {      fprintf (scen_GetLogFP (), "%s %u %u zeroes written to %s\n",               __FILE__, __LINE__, num_pixels, annual_prob_filename);    }    scen_CloseLog ();  }  fclose (fp);}/*************************************************************************************************************************************************************** FUNCTION NAME: landclass_AnnualProbUpdate** PURPOSE:       update the annual_prob_filename** AUTHOR:        Keith Clarke** PROGRAMMER:    Tommy E. Cathey of NESC (919)541-1500** CREATION DATE: 11/11/1999** DESCRIPTION:*****/void  landclass_AnnualProbUpdate (GRID_P land1_ptr){  char func[] = "landclass_AnnualProbUpdate";  FILE *fp;  int total_pixels;  int i;  int cc;  int rc;  int offset;  fpos_t pos_ptr;  GRID_P current_class_ptr;  if (!scen_GetDoingLanduseFlag ())  {    return;  }  current_class_ptr = mem_GetWGridPtr (__FILE__, func, __LINE__);  total_pixels = mem_GetTotalPixels ();  if (scen_GetLogFlag ())  {    scen_Append2Log ();    if (scen_GetLogWritesFlag ())    {      fprintf (scen_GetLogFP (), "%s %u updating file %s\n",               __FILE__, __LINE__, annual_prob_filename);    }    scen_CloseLog ();  }  FILE_OPEN (fp, annual_prob_filename, "r+b");  for (cc = 0; cc < landclass_GetNumLandclasses (); cc++)  {    offset = cc * total_pixels * sizeof (PIXEL);    rc = fseek (fp, offset, SEEK_SET);    if (rc != 0)    {      printf ("%s %u ERROR\n", __FILE__, __LINE__);      EXIT (1);    }    rc = fgetpos (fp, &pos_ptr);    if (rc != 0)    {      printf ("%s %u ERROR\n", __FILE__, __LINE__);      EXIT (1);    }    rc = fread (current_class_ptr, total_pixels * sizeof (PIXEL), 1, fp);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -