本文整理汇总了C++中G_fatal_error函数的典型用法代码示例。如果您正苦于以下问题:C++ G_fatal_error函数的具体用法?C++ G_fatal_error怎么用?C++ G_fatal_error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了G_fatal_error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
//.........这里部分代码省略.........
method_opt = G_define_option();
method_opt->key = "method";
method_opt->type = TYPE_STRING;
method_opt->required = YES;
method_opt->multiple = NO;
method_opt->options = "weak,strong";
desc = NULL;
G_asprintf(&desc,
"weak;%s;strong;%s",
_("Weakly connected components"),
_("Strongly connected components"));
method_opt->descriptions = desc;
method_opt->description = _("Type of components");
add_f = G_define_flag();
add_f->key = 'a';
add_f->description = _("Add points on nodes");
/* options and flags parser */
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
/* TODO: make an option for this */
mask_type = GV_LINE | GV_BOUNDARY;
Points = Vect_new_line_struct();
Cats = Vect_new_cats_struct();
Vect_check_input_output_name(map_in->answer, map_out->answer,
G_FATAL_EXIT);
Vect_set_open_level(2);
if (1 > Vect_open_old(&In, map_in->answer, ""))
G_fatal_error(_("Unable to open vector map <%s>"), map_in->answer);
with_z = Vect_is_3d(&In);
if (0 > Vect_open_new(&Out, map_out->answer, with_z)) {
Vect_close(&In);
G_fatal_error(_("Unable to create vector map <%s>"), map_out->answer);
}
/* parse filter option and select appropriate lines */
afield = Vect_get_field_number(&In, afield_opt->answer);
nfield = Vect_get_field_number(&In, nfield_opt->answer);
if (0 != Vect_net_build_graph(&In, mask_type, afield, nfield, afcol->answer,
abcol->answer, ncol->answer, 0, 2))
G_fatal_error(_("Unable to build graph for vector map <%s>"), Vect_get_full_name(&In));
graph = Vect_net_get_graph(&In);
nnodes = Vect_get_num_nodes(&In);
component = (int *)G_calloc(nnodes + 1, sizeof(int));
covered = (char *)G_calloc(nnodes + 1, sizeof(char));
if (!component || !covered) {
G_fatal_error(_("Out of memory"));
exit(EXIT_FAILURE);
}
/* Create table */
Fi = Vect_default_field_info(&Out, 1, NULL, GV_1TABLE);
Vect_map_add_dblink(&Out, 1, NULL, Fi->table, GV_KEY_COLUMN, Fi->database,
Fi->driver);
db_init_string(&sql);
driver = db_start_driver_open_database(Fi->driver, Fi->database);
if (driver == NULL)
G_fatal_error(_("Unable to open database <%s> by driver <%s>"),
示例2: main
int main(int argc, char *argv[])
{
int out_fd;
CELL *result, *rp;
int nrows, ncols;
int row, col;
struct GModule *module;
struct Option *in_opt, *out_opt;
struct Option *method_opt, *size_opt;
char *mapset;
struct Map_info In;
double radius;
struct ilist *List;
struct Cell_head region;
BOUND_BOX box;
struct line_pnts *Points;
struct line_cats *Cats;
G_gisinit(argv[0]);
module = G_define_module();
module->keywords = _("vector, raster, aggregation");
module->description = "Makes each cell value a "
"function of the attribute values assigned to the vector points or centroids "
"around it, and stores new cell values in an output raster map layer.";
in_opt = G_define_standard_option(G_OPT_V_INPUT);
out_opt = G_define_standard_option(G_OPT_R_OUTPUT);
method_opt = G_define_option();
method_opt->key = "method";
method_opt->type = TYPE_STRING;
method_opt->required = YES;
method_opt->options = "count";
method_opt->answer = "count";
method_opt->description = "Neighborhood operation";
size_opt = G_define_option();
size_opt->key = "size";
size_opt->type = TYPE_DOUBLE;
size_opt->required = YES;
size_opt->description = "Neighborhood diameter in map units";
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
radius = atof(size_opt->answer) / 2;
/* open input vector */
if ((mapset = G_find_vector2(in_opt->answer, "")) == NULL) {
G_fatal_error(_("Vector map <%s> not found in the current mapset"),
in_opt->answer);
}
Vect_set_open_level(2);
Vect_open_old(&In, in_opt->answer, mapset);
G_get_set_window(®ion);
nrows = G_window_rows();
ncols = G_window_cols();
result = G_allocate_raster_buf(CELL_TYPE);
Points = Vect_new_line_struct();
Cats = Vect_new_cats_struct();
List = Vect_new_list();
/*open the new cellfile */
out_fd = G_open_raster_new(out_opt->answer, CELL_TYPE);
if (out_fd < 0)
G_fatal_error(_("Unable to create raster map <%s>"), out_opt->answer);
box.T = PORT_DOUBLE_MAX;
box.B = -PORT_DOUBLE_MAX;
for (row = 0; row < nrows; row++) {
double x, y;
G_percent(row, nrows, 1);
y = G_row_to_northing(row + 0.5, ®ion);
box.N = y + radius;
box.S = y - radius;
G_set_null_value(result, ncols, CELL_TYPE);
rp = result;
for (col = 0; col < ncols; col++) {
int i, count;
CELL value;
x = G_col_to_easting(col + 0.5, ®ion);
box.E = x + radius;
box.W = x - radius;
Vect_select_lines_by_box(&In, &box, GV_POINTS, List);
G_debug(3, " %d lines in box", List->n_values);
count = 0;
//.........这里部分代码省略.........
示例3: format_l
static off_t format_l()
{
G_fatal_error(_("Requested format is not compiled in this version"));
return 0;
}
示例4: main
int main(int argc, char **argv)
{
struct GModule *module;
struct Option *map_opt, *field_opt, *fs_opt, *vs_opt, *nv_opt, *col_opt,
*where_opt, *file_opt;
struct Flag *c_flag, *v_flag, *r_flag;
dbDriver *driver;
dbString sql, value_string;
dbCursor cursor;
dbTable *table;
dbColumn *column;
dbValue *value;
struct field_info *Fi;
int ncols, col, more;
struct Map_info Map;
char query[1024];
struct ilist *list_lines;
struct bound_box *min_box, *line_box;
int i, line, area, init_box, cat;
module = G_define_module();
G_add_keyword(_("vector"));
G_add_keyword(_("database"));
G_add_keyword(_("attribute table"));
module->description = _("Prints vector map attributes.");
map_opt = G_define_standard_option(G_OPT_V_MAP);
field_opt = G_define_standard_option(G_OPT_V_FIELD);
col_opt = G_define_standard_option(G_OPT_DB_COLUMNS);
where_opt = G_define_standard_option(G_OPT_DB_WHERE);
fs_opt = G_define_standard_option(G_OPT_F_SEP);
fs_opt->description = _("Output field separator");
fs_opt->guisection = _("Format");
vs_opt = G_define_standard_option(G_OPT_F_SEP);
vs_opt->key = "vs";
vs_opt->description = _("Output vertical record separator");
vs_opt->answer = NULL;
vs_opt->guisection = _("Format");
nv_opt = G_define_option();
nv_opt->key = "nv";
nv_opt->type = TYPE_STRING;
nv_opt->required = NO;
nv_opt->description = _("Null value indicator");
nv_opt->guisection = _("Format");
file_opt = G_define_standard_option(G_OPT_F_OUTPUT);
file_opt->key = "file";
file_opt->required = NO;
file_opt->description =
_("Name for output file (if omitted or \"-\" output to stdout)");
r_flag = G_define_flag();
r_flag->key = 'r';
r_flag->description =
_("Print minimal region extent of selected vector features instead of attributes");
c_flag = G_define_flag();
c_flag->key = 'c';
c_flag->description = _("Do not include column names in output");
c_flag->guisection = _("Format");
v_flag = G_define_flag();
v_flag->key = 'v';
v_flag->description = _("Vertical output (instead of horizontal)");
v_flag->guisection = _("Format");
G_gisinit(argv[0]);
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
/* set input vector map name and mapset */
if (file_opt->answer && strcmp(file_opt->answer, "-") != 0) {
if (NULL == freopen(file_opt->answer, "w", stdout)) {
G_fatal_error(_("Unable to open file <%s> for writing"), file_opt->answer);
}
}
if (r_flag->answer) {
min_box = (struct bound_box *) G_malloc(sizeof(struct bound_box));
G_zero((void *)min_box, sizeof(struct bound_box));
line_box = (struct bound_box *) G_malloc(sizeof(struct bound_box));
list_lines = Vect_new_list();
}
else {
min_box = line_box = NULL;
list_lines = NULL;
}
db_init_string(&sql);
db_init_string(&value_string);
/* open input vector */
//.........这里部分代码省略.........
示例5: cell_draw
static int cell_draw( char *name,
char *mapset,
struct Colors *colors,
RASTER_MAP_TYPE data_type,
char *format )
{
int cellfile;
void *xarray;
int row;
int ncols, nrows;
static unsigned char *red, *grn, *blu, *set;
int i;
void *ptr;
int big_endian;
long one = 1;
FILE *fo;
int raster_size;
big_endian = !( *(( char * )( &one ) ) );
ncols = G_window_cols();
nrows = G_window_rows();
/* Make sure map is available */
if (( cellfile = G_open_cell_old( name, mapset ) ) == -1 )
G_fatal_error(( "Unable to open raster map <%s>" ), name );
/* Allocate space for cell buffer */
xarray = G_allocate_raster_buf( data_type );
red = G_malloc( ncols );
grn = G_malloc( ncols );
blu = G_malloc( ncols );
set = G_malloc( ncols );
/* some buggy C libraries require BOTH setmode() and fdopen(bin) */
#ifdef WIN32
if ( _setmode( _fileno( stdout ), _O_BINARY ) == -1 )
G_fatal_error( "Cannot set stdout mode" );
#endif
// Unfortunately this is not sufficient on Windows to switch stdout to binary mode
fo = fdopen( fileno( stdout ), "wb" );
raster_size = G_raster_size( data_type );
//fprintf( fo, "%d %d", data_type, raster_size );
//exit(0);
/* loop for array rows */
for ( row = 0; row < nrows; row++ )
{
G_get_raster_row( cellfile, xarray, row, data_type );
ptr = xarray;
G_lookup_raster_colors( xarray, red, grn, blu, set, ncols, colors,
data_type );
for ( i = 0; i < ncols; i++ )
{
unsigned char alpha = 255;
//G_debug ( 0, "row = %d col = %d", row, i );
if ( G_is_null_value( ptr, data_type ) )
{
alpha = 0;
}
if ( strcmp( format, "color" ) == 0 )
{
// We need data suitable for QImage 32-bpp
// the data are stored in QImage as QRgb which is unsigned int.
// Because it depends on byte order of the platform we have to
// consider byte order (well, middle endian ignored)
if ( big_endian )
{
// I have never tested this
fprintf( fo, "%c%c%c%c", alpha, red[i], grn[i], blu[i] );
}
else
{
fprintf( fo, "%c%c%c%c", blu[i], grn[i], red[i], alpha );
}
}
else
{
if ( data_type == CELL_TYPE )
{
//G_debug ( 0, "valx = %d", *((CELL *) ptr));
}
if ( G_is_null_value( ptr, data_type ) )
{
if ( data_type == CELL_TYPE )
{
int nul = -2147483647;
fwrite( &nul , 4, 1, fo );
}
else if ( data_type == DCELL_TYPE )
{
double nul = 2.2250738585072014e-308;
fwrite( &nul , 8, 1, fo );
}
else if ( data_type == FCELL_TYPE )
{
double nul = 1.17549435e-38F;
//.........这里部分代码省略.........
示例6: main
//.........这里部分代码省略.........
s = method_opt->answer;
if (strcmp(s, "douglas") == 0)
method = DOUGLAS;
else if (strcmp(s, "lang") == 0)
method = LANG;
else if (strcmp(s, "reduction") == 0)
method = VERTEX_REDUCTION;
else if (strcmp(s, "reumann") == 0)
method = REUMANN;
else if (strcmp(s, "boyle") == 0)
method = BOYLE;
else if (strcmp(s, "distance_weighting") == 0)
method = DISTANCE_WEIGHTING;
else if (strcmp(s, "chaiken") == 0)
method = CHAIKEN;
else if (strcmp(s, "hermite") == 0)
method = HERMITE;
else if (strcmp(s, "snakes") == 0)
method = SNAKES;
else if (strcmp(s, "douglas_reduction") == 0)
method = DOUGLAS_REDUCTION;
else if (strcmp(s, "sliding_averaging") == 0)
method = SLIDING_AVERAGING;
else if (strcmp(s, "network") == 0)
method = NETWORK;
else if (strcmp(s, "displacement") == 0) {
method = DISPLACEMENT;
/* we can displace only the lines */
mask_type = GV_LINE;
}
else {
G_fatal_error(_("Unknown method"));
exit(EXIT_FAILURE);
}
/* simplification or smoothing? */
switch (method) {
case DOUGLAS:
case DOUGLAS_REDUCTION:
case LANG:
case VERTEX_REDUCTION:
case REUMANN:
simplification = 1;
break;
default:
simplification = 0;
break;
}
Points = Vect_new_line_struct();
Cats = Vect_new_cats_struct();
Vect_check_input_output_name(map_in->answer, map_out->answer,
G_FATAL_EXIT);
Vect_set_open_level(2);
if (Vect_open_old2(&In, map_in->answer, "", field_opt->answer) < 1)
G_fatal_error(_("Unable to open vector map <%s>"), map_in->answer);
if (Vect_get_num_primitives(&In, mask_type) == 0) {
G_warning(_("No lines found in input map <%s>"), map_in->answer);
示例7: main
int main(int argc, char *argv[])
{
struct GModule *module;
int Out_proj;
int out_stat;
int old_zone, old_proj;
int i;
int stat;
char cmnd2[500];
char proj_out[20], proj_name[50], set_name[20];
char path[1024], buffa[1024], buffb[1024], answer[200], answer1[200];
char answer2[200], buff[1024];
char tmp_buff[20], *buf;
struct Key_Value *old_proj_keys, *out_proj_keys, *in_unit_keys;
double aa, e2;
double f;
FILE *FPROJ;
int exist = 0;
char spheroid[100];
int j, k, sph_check;
struct Cell_head cellhd;
char datum[100], dat_ellps[100], dat_params[100];
struct proj_parm *proj_parms;
G_gisinit(argv[0]);
module = G_define_module();
G_add_keyword(_("general"));
G_add_keyword(_("projection"));
module->description =
_("Interactively reset the location's projection settings.");
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
if (strcmp(G_mapset(), "PERMANENT") != 0)
G_fatal_error(_("You must be in the PERMANENT mapset to run g.setproj"));
/***
* no longer necessary, table is a static struct
* init_unit_table();
***/
sprintf(set_name, "PERMANENT");
G_file_name(path, "", PROJECTION_FILE, set_name);
/* get the output projection parameters, if existing */
/* Check for ownership here */
stat = G__mapset_permissions(set_name);
if (stat == 0) {
G_fatal_error(_("PERMANENT: permission denied"));
}
G_get_default_window(&cellhd);
if (-1 == G_set_window(&cellhd))
G_fatal_error(_("Current region cannot be set"));
if (G_get_set_window(&cellhd) == -1)
G_fatal_error(_("Retrieving and setting region failed"));
Out_proj = cellhd.proj;
old_zone = cellhd.zone;
old_proj = cellhd.proj;
if (access(path, 0) == 0) {
exist = 1;
FPROJ = fopen(path, "r");
old_proj_keys = G_fread_key_value(FPROJ);
fclose(FPROJ);
buf = G_find_key_value("name", old_proj_keys);
fprintf(stderr,
"\nWARNING: A projection file already exists for this location\n(Filename '%s')\n",
path);
fprintf(stderr,
"\nThis file contains all the parameters for the location's projection:\n %s\n",
buf);
fprintf(stderr,
"\n Overriding this information implies that the old projection parameters\n"
" were incorrect. If you change the parameters, all existing data will\n"
" be interpreted differently by the projection software.\n%c%c%c",
7, 7, 7);
fprintf(stderr,
" GRASS will not re-project your data automatically.\n\n");
if (!G_yes
(_("Would you still like to change some of the parameters?"),
0)) {
G_message(_("The projection information will not be updated"));
leave(SP_NOCHANGE);
}
}
out_proj_keys = G_create_key_value();
if (exist) {
buf = G_find_key_value("zone", old_proj_keys);
if (buf != NULL)
sscanf(buf, "%d", &zone);
if (zone != old_zone) {
G_warning(_("Zone in default geographic region definition: %d\n"
" is different from zone in PROJ_INFO file: %d"),
//.........这里部分代码省略.........
示例8: main
int main( int argc, char **argv )
{
struct GModule *module;
struct Option *info_opt, *rast_opt, *vect_opt, *coor_opt, *north_opt, *south_opt, *east_opt, *west_opt, *rows_opt, *cols_opt;
struct Cell_head window;
/* Initialize the GIS calls */
G_gisinit( argv[0] );
module = G_define_module();
module->description = ( "Get info about locations,mapsets,maps" );
info_opt = G_define_option();
info_opt->key = "info";
info_opt->type = TYPE_STRING;
info_opt->description = "info key";
info_opt->options = "proj,window,size,query,info,colors,stats";
rast_opt = G_define_standard_option( G_OPT_R_INPUT );
rast_opt->key = "rast";
rast_opt->required = NO;
vect_opt = G_define_standard_option( G_OPT_V_INPUT );
vect_opt->key = "vect";
vect_opt->required = NO;
coor_opt = G_define_option();
coor_opt->key = "coor";
coor_opt->type = TYPE_DOUBLE;
coor_opt->multiple = YES;
north_opt = G_define_option();
north_opt->key = "north";
north_opt->type = TYPE_STRING;
south_opt = G_define_option();
south_opt->key = "south";
south_opt->type = TYPE_STRING;
east_opt = G_define_option();
east_opt->key = "east";
east_opt->type = TYPE_STRING;
west_opt = G_define_option();
west_opt->key = "west";
west_opt->type = TYPE_STRING;
rows_opt = G_define_option();
rows_opt->key = "rows";
rows_opt->type = TYPE_INTEGER;
cols_opt = G_define_option();
cols_opt->key = "cols";
cols_opt->type = TYPE_INTEGER;
if ( G_parser( argc, argv ) )
exit( EXIT_FAILURE );
if ( strcmp( "proj", info_opt->answer ) == 0 )
{
G_get_window( &window );
/* code from g.proj */
if ( window.proj != PROJECTION_XY )
{
struct Key_Value *projinfo, *projunits;
char *wkt;
projinfo = G_get_projinfo();
projunits = G_get_projunits();
wkt = GPJ_grass_to_wkt( projinfo, projunits, 0, 0 );
fprintf( stdout, "%s", wkt );
}
}
else if ( strcmp( "window", info_opt->answer ) == 0 )
{
if ( rast_opt->answer )
{
G_get_cellhd( rast_opt->answer, "", &window );
fprintf( stdout, "%f,%f,%f,%f", window.west, window.south, window.east, window.north );
}
else if ( vect_opt->answer )
{
G_fatal_error( "Not yet supported" );
}
}
// raster width and height
else if ( strcmp( "size", info_opt->answer ) == 0 )
{
if ( rast_opt->answer )
{
G_get_cellhd( rast_opt->answer, "", &window );
fprintf( stdout, "%d,%d", window.cols, window.rows );
}
else if ( vect_opt->answer )
{
G_fatal_error( "Not yet supported" );
}
}
// raster information
else if ( strcmp( "info", info_opt->answer ) == 0 )
//.........这里部分代码省略.........
示例9: main
int main(int argc, char **argv)
{
struct band B[3];
int row;
int next_row;
int overlay;
struct Cell_head window;
struct GModule *module;
struct Flag *flag_n;
int i;
G_gisinit(argv[0]);
module = G_define_module();
G_add_keyword(_("display"));
G_add_keyword(_("graphics"));
G_add_keyword(_("raster"));
G_add_keyword("RGB");
module->description =
_("Displays three user-specified raster maps "
"as red, green, and blue overlays in the active graphics frame.");
flag_n = G_define_flag();
flag_n->key = 'n';
flag_n->description = _("Make null cells opaque");
flag_n->guisection = _("Null cells");
for (i = 0; i < 3; i++) {
char buff[80];
sprintf(buff, _("Name of raster map to be used for <%s>"),
color_names[i]);
B[i].opt = G_define_standard_option(G_OPT_R_MAP);
B[i].opt->key = G_store(color_names[i]);
B[i].opt->description = G_store(buff);
}
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
/* Do screen initializing stuff */
D_open_driver();
overlay = !flag_n->answer;
D_setup(0);
D_set_overlay_mode(overlay);
for (i = 0; i < 3; i++) {
/* Get name of layer to be used */
char *name = B[i].opt->answer;
/* Make sure map is available */
B[i].file = Rast_open_old(name, "");
B[i].type = Rast_get_map_type(B[i].file);
/* Reading color lookup table */
if (Rast_read_colors(name, "", &B[i].colors) == -1)
G_fatal_error(_("Color file for <%s> not available"), name);
B[i].array = Rast_allocate_buf(B[i].type);
}
/* read in current window */
G_get_window(&window);
D_raster_draw_begin();
next_row = 0;
for (row = 0; row < window.rows;) {
G_percent(row, window.rows, 5);
for (i = 0; i < 3; i++)
Rast_get_row(B[i].file, B[i].array, row, B[i].type);
if (row == next_row)
next_row = D_draw_raster_RGB(next_row,
B[0].array, B[1].array, B[2].array,
&B[0].colors, &B[1].colors,
&B[2].colors, B[0].type, B[1].type,
B[2].type);
else if (next_row > 0)
row = next_row;
else
break;
}
G_percent(window.rows, window.rows, 5);
D_raster_draw_end();
D_save_command(G_recreate_command());
D_close_driver();
/* Close the raster maps */
for (i = 0; i < 3; i++)
Rast_close(B[i].file);
exit(EXIT_SUCCESS);
}
示例10: main
int main(int argc, char **argv)
{
MELEMENT *rowlist;
SHORT nrows, ncols;
SHORT datarows;
int npoints;
struct GModule *module;
struct History history;
struct
{
struct Option *input, *output, *npoints;
} parm;
struct
{
struct Flag *e;
} flag;
int n, fd, maskfd;
/* Initialize the GIS calls */
G_gisinit(argv[0]);
module = G_define_module();
G_add_keyword(_("raster"));
G_add_keyword(_("surface"));
G_add_keyword(_("interpolation"));
G_add_keyword(_("IDW"));
module->description =
_("Surface interpolation utility for raster map.");
parm.input = G_define_standard_option(G_OPT_R_INPUT);
parm.output = G_define_standard_option(G_OPT_R_OUTPUT);
parm.npoints = G_define_option();
parm.npoints->key = "npoints";
parm.npoints->type = TYPE_INTEGER;
parm.npoints->required = NO;
parm.npoints->description = _("Number of interpolation points");
parm.npoints->answer = "12";
flag.e = G_define_flag();
flag.e->key = 'e';
flag.e->description = _("Output is the interpolation error");
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
if (sscanf(parm.npoints->answer, "%d", &n) != 1 || n <= 0)
G_fatal_error(_("Illegal value for '%s' (%s)"), parm.npoints->key,
parm.npoints->answer);
npoints = n;
error_flag = flag.e->answer;
input = parm.input->answer;
output = parm.output->answer;
/* Get database window parameters */
G_get_window(&window);
/* find number of rows and columns in window */
nrows = Rast_window_rows();
ncols = Rast_window_cols();
/* create distance squared or latitude lookup tables */
/* initialize function pointers */
lookup_and_function_ptrs(nrows, ncols);
/* allocate buffers for row i/o */
cell = Rast_allocate_c_buf();
if ((maskfd = Rast_maskfd()) >= 0 || error_flag) { /* apply mask to output */
if (error_flag) /* use input as mask when -e option chosen */
maskfd = Rast_open_old(input, "");
mask = Rast_allocate_c_buf();
}
else
mask = NULL;
/* Open input cell layer for reading */
fd = Rast_open_old(input, "");
/* Store input data in array-indexed doubly-linked lists and close input file */
rowlist = row_lists(nrows, ncols, &datarows, &n, fd, cell);
Rast_close(fd);
if (npoints > n)
npoints = n;
/* open cell layer for writing output */
fd = Rast_open_c_new(output);
/* call the interpolation function */
interpolate(rowlist, nrows, ncols, datarows, npoints, fd, maskfd);
/* free allocated memory */
free_row_lists(rowlist, nrows);
G_free(rowlook);
G_free(collook);
if (ll)
free_dist_params();
Rast_close(fd);
//.........这里部分代码省略.........
示例11: main
int main(int argc, char **argv)
{
struct GModule *module;
struct Option *opt1, *opt2;
struct Flag *mapcoords;
int R, G, B, color = 0;
/* Initialize the GIS calls */
G_gisinit(argv[0]);
module = G_define_module();
G_add_keyword(_("display"));
G_add_keyword(_("cartography"));
module->description =
_("Program for generating and displaying simple graphics on the "
"display monitor.");
opt1 = G_define_option();
opt1->key = "input";
opt1->type = TYPE_STRING;
opt1->required = NO;
opt1->description = _("Name of file containing graphics commands, "
"if not given reads from standard input");
opt1->gisprompt = "old_file,file,input";
opt2 = G_define_option();
opt2->key = "color";
opt2->type = TYPE_STRING;
opt2->required = NO;
opt2->description = _("Color to draw with, either a standard GRASS color "
"or R:G:B triplet");
opt2->answer = DEFAULT_FG_COLOR;
opt2->gisprompt = "old_color,color,color";
mapcoords = G_define_flag();
mapcoords->key = 'm';
mapcoords->description = _("Coordinates are given in map units");
/* Check command line */
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
/* default font scaling: 5% of active frame */
hsize = vsize = 5.;
if (opt1->answer != NULL) {
if ((infile = fopen(opt1->answer, "r")) == NULL)
G_fatal_error(_("Graph file <%s> not found"), opt1->answer);
}
else
infile = stdin;
/* open graphics window */
if (D_open_driver() != 0)
G_fatal_error(_("No graphics device selected. "
"Use d.mon to select graphics device."));
/* Parse and select color */
if (opt2->answer != NULL) {
color = G_str_to_color(opt2->answer, &R, &G, &B);
if (color == 0)
G_fatal_error(_("[%s]: No such color"), opt2->answer);
if (color == 1) {
D_RGB_color(R, G, B);
set_last_color(R, G, B, RGBA_COLOR_OPAQUE);
}
else /* (color==2) is "none" */
set_last_color(0, 0, 0, RGBA_COLOR_NONE);
}
if (mapcoords->answer) {
mapunits = TRUE;
D_setup(0);
}
else {
D_setup2(0, 0, 100, 0, 0, 100);
mapunits = FALSE;
}
/* Do the graphics */
set_graph_stuff();
set_text_size();
graphics(infile);
D_save_command(G_recreate_command());
D_close_driver();
exit(EXIT_SUCCESS);
}
示例12: start_mon
int start_mon(const char *name, const char *output, int select,
const char *width, const char *height, const char *bgcolor,
int truecolor)
{
const char *curr_mon;
char *env_name, *env_value, *cmd_value;
char *tempfile, buf[1024];
int env_fd;
curr_mon = G__getenv("MONITOR");
if (curr_mon && strcmp(curr_mon, name) == 0 && check_mon(curr_mon))
G_fatal_error(_("Monitor <%s> already running"), name);
tempfile = G_tempfile();
env_name = env_value = NULL;
G_asprintf(&env_name, "MONITOR_%s_ENVFILE", name);
G_asprintf(&env_value, "%s.env", tempfile);
G_setenv(env_name, env_value);
env_fd = creat(env_value, 0666);
if (env_fd < 0)
G_fatal_error(_("Unable to create file '%s'"), env_value);
if (width) {
sprintf(buf, "GRASS_WIDTH=%s\n", width);
write(env_fd, buf, strlen(buf));
}
if (height) {
sprintf(buf, "GRASS_HEIGHT=%s\n", height);
write(env_fd, buf, strlen(buf));
}
if (bgcolor) {
if (strcmp(bgcolor, "none") == 0)
sprintf(buf, "GRASS_TRANSPARENT=TRUE\n");
else
sprintf(buf, "GRASS_BACKGROUNDCOLOR=%s\n", bgcolor);
write(env_fd, buf, strlen(buf));
}
if (truecolor) {
sprintf(buf, "GRASS_TRUECOLOR=TRUE\n");
write(env_fd, buf, strlen(buf));
}
close(env_fd);
cmd_value = NULL;
G_asprintf(&env_name, "MONITOR_%s_CMDFILE", name);
G_asprintf(&cmd_value, "%s.cmd", tempfile);
G_setenv(env_name, cmd_value);
close(creat(cmd_value, 0666));
G_verbose_message(_("Staring monitor <%s> with env file '%s'"), name, env_value);
G_debug(1, "start: name=%s ", name);
G_debug(3, " envfile = %s", env_value);
G_debug(3, " cmdfile = %s", cmd_value);
if (select)
G_setenv("MONITOR", name);
if (strncmp(name, "wx", 2) == 0) /* use G_strncasecmp() instead */
start_wx(name, tempfile, env_value, cmd_value,
width, height);
else
start(name, output);
return 0;
}
示例13: main
int main(int argc, char *argv[])
{
char *terrainmap, *seedmap, *lakemap, *mapset;
int rows, cols, in_terran_fd, out_fd, lake_fd, row, col, pases, pass;
int lastcount, curcount, start_col = 0, start_row = 0;
double east, north, area = 0, volume = 0;
FCELL **in_terran, **out_water, water_level, max_depth = 0, min_depth = 0;
FCELL water_window[3][3];
struct Option *tmap_opt, *smap_opt, *wlvl_opt, *lake_opt, *sdxy_opt;
struct Flag *negative_flag, *overwrite_flag;
struct GModule *module;
struct Colors colr;
struct Cell_head window;
struct History history;
G_gisinit(argv[0]);
module = G_define_module();
module->keywords = _("raster, hydrology");
module->description = _("Fills lake at given point to given level.");
tmap_opt = G_define_option();
tmap_opt->key = "dem";
tmap_opt->key_desc = "name";
tmap_opt->description = _("Name of terrain raster map (DEM)");
tmap_opt->type = TYPE_STRING;
tmap_opt->gisprompt = "old,cell,raster";
tmap_opt->required = YES;
wlvl_opt = G_define_option();
wlvl_opt->key = "wl";
wlvl_opt->description = _("Water level");
wlvl_opt->type = TYPE_DOUBLE;
wlvl_opt->required = YES;
lake_opt = G_define_option();
lake_opt->key = "lake";
lake_opt->key_desc = "name";
lake_opt->description = _("Name for output raster map with lake");
lake_opt->type = TYPE_STRING;
lake_opt->gisprompt = "new,cell,raster";
lake_opt->required = NO;
sdxy_opt = G_define_option();
sdxy_opt->key = "xy";
sdxy_opt->description = _("Seed point coordinates");
sdxy_opt->type = TYPE_DOUBLE;
sdxy_opt->key_desc = "east,north";
sdxy_opt->required = NO;
sdxy_opt->multiple = NO;
smap_opt = G_define_option();
smap_opt->key = "seed";
smap_opt->key_desc = "name";
smap_opt->description =
_("Name of raster map with given starting point(s) (at least 1 cell > 0)");
smap_opt->type = TYPE_STRING;
smap_opt->gisprompt = "old,cell,raster";
smap_opt->required = NO;
negative_flag = G_define_flag();
negative_flag->key = 'n';
negative_flag->description =
_("Use negative depth values for lake raster map");
overwrite_flag = G_define_flag();
overwrite_flag->key = 'o';
overwrite_flag->description =
_("Overwrite seed map with result (lake) map");
if (G_parser(argc, argv)) /* Returns 0 if successful, non-zero otherwise */
exit(EXIT_FAILURE);
if (smap_opt->answer && sdxy_opt->answer)
G_fatal_error(_("Both seed map and coordinates cannot be specified"));
if (!smap_opt->answer && !sdxy_opt->answer)
G_fatal_error(_("Seed map or seed coordinates must be set!"));
if (sdxy_opt->answer && !lake_opt->answer)
G_fatal_error(_("Seed coordinates and output map lake= must be set!"));
if (lake_opt->answer && overwrite_flag->answer)
G_fatal_error(_("Both lake and overwrite cannot be specified"));
if (!lake_opt->answer && !overwrite_flag->answer)
G_fatal_error(_("Output lake map or overwrite flag must be set!"));
terrainmap = tmap_opt->answer;
seedmap = smap_opt->answer;
sscanf(wlvl_opt->answer, "%f", &water_level);
lakemap = lake_opt->answer;
/* If lakemap is set, write to it, else is set overwrite flag and we should write to seedmap. */
if (lakemap) {
lake_fd = G_open_raster_new(lakemap, 1);
if (lake_fd < 0)
G_fatal_error(_("Unable to create raster map <%s>"), lakemap);
}
//.........这里部分代码省略.........
示例14: describe
int describe(char *name, char *mapset, int compact, char *no_data_str,
int range, int windowed, int nsteps, int as_int, int skip_nulls)
{
int fd;
struct Cell_stats statf;
CELL *buf, *b;
int nrows, ncols;
int row, col;
struct Cell_head window;
CELL negmin = 0, negmax = 0, zero = 0, posmin = 0, posmax = 0;
CELL null = 0;
RASTER_MAP_TYPE map_type;
struct Quant q;
struct FPRange r;
DCELL dmin, dmax;
int (*get_row) ();
if (windowed) {
get_row = G_get_c_raster_row;
}
else {
char msg[100];
if (G_get_cellhd(name, mapset, &window) < 0) {
sprintf(msg, "can't get cell header for [%s] in [%s]", name,
mapset);
G_fatal_error(msg);
}
G_set_window(&window);
get_row = G_get_c_raster_row_nomask;
}
fd = G_open_cell_old(name, mapset);
if (fd < 0)
return 0;
map_type = G_get_raster_map_type(fd);
if (as_int)
map_type = CELL_TYPE; /* read as int */
/* allocate the cell buffer */
buf = G_allocate_cell_buf();
if (map_type != CELL_TYPE && range)
/* this will make it report fp range */
{
range = 0;
nsteps = 1;
}
/* start the cell stats */
if (!range) {
G_init_cell_stats(&statf);
}
else {
zero = 0;
negmin = 0;
negmax = 0;
posmin = 0;
posmax = 0;
null = 0;
dmin = 0.0;
dmax = 0.0;
}
/* set up quantization rules */
if (map_type != CELL_TYPE) {
G_quant_init(&q);
G_read_fp_range(name, mapset, &r);
G_get_fp_range_min_max(&r, &dmin, &dmax);
G_quant_add_rule(&q, dmin, dmax, 1, nsteps);
G_set_quant_rules(fd, &q);
}
nrows = G_window_rows();
ncols = G_window_cols();
G_verbose_message("Reading [%s in %s] ...", name, mapset);
for (row = 0; row < nrows; row++) {
G_percent(row, nrows, 2);
if ((*get_row) (fd, b = buf, row) < 0)
break;
if (range) {
for (col = ncols; col-- > 0; b++) {
if (G_is_c_null_value(b))
null = 1;
else if (*b == 0)
zero = 1;
else if (*b < 0) {
if (!negmin)
negmin = negmax = *b;
else if (*b > negmax)
negmax = *b;
else if (*b < negmin)
negmin = *b;
}
else {
if (!posmin)
posmin = posmax = *b;
else if (*b > posmax)
posmax = *b;
//.........这里部分代码省略.........
示例15: write_line
int write_line(PAD_ENT_HDR adenhd, int type, int level)
{
int i, l;
double x, y, z, r, ang;
adSeekLayer(dwghandle, adenhd->entlayerobjhandle, Layer);
/* Transformation, go up through all levels of transformation */
/* not sure what is the right order of transformation */
for (l = level; l >= 0; l--) {
for (i = 0; i < Points->n_points; i++) {
/* scale */
x = Points->x[i] * Trans[l].xscale;
y = Points->y[i] * Trans[l].yscale;
z = Points->z[i] * Trans[l].zscale;
/* rotate */
r = sqrt(x * x + y * y);
ang = atan2(y, x) + Trans[l].rotang;
x = r * cos(ang);
y = r * sin(ang);
/* move */
x += Trans[l].dx;
y += Trans[l].dy;
z += Trans[l].dz;
Points->x[i] = x;
Points->y[i] = y;
Points->z[i] = z;
}
}
Vect_reset_cats(Cats);
Vect_cat_set(Cats, 1, cat);
Vect_write_line(&Map, type, Points, Cats);
/* Cat */
sprintf(buf, "insert into %s values ( %d", Fi->table, cat);
db_set_string(&sql, buf);
/* Entity name */
getEntTypeName(adenhd, buf2);
sprintf(buf, ", '%s'", buf2);
db_append_string(&sql, buf);
/* Color */
sprintf(buf, ", %d", adenhd->entcolor);
db_append_string(&sql, buf);
/* Weight */
sprintf(buf, ", %d", adenhd->lineweight);
db_append_string(&sql, buf);
/* Layer name */
if (!Layer->purgedflag && Layer->name != NULL) {
db_set_string(&str, Layer->name);
db_double_quote_string(&str);
sprintf(buf, ", '%s'", db_get_string(&str));
}
else {
sprintf(buf, ", ''");
}
db_append_string(&sql, buf);
/* Block name */
if (Block != NULL) {
db_set_string(&str, Block);
db_double_quote_string(&str);
}
else {
db_set_string(&str, "");
}
sprintf(buf, ", '%s'", db_get_string(&str));
db_append_string(&sql, buf);
/* Text */
if (Txt != NULL) {
db_set_string(&str, Txt);
db_double_quote_string(&str);
}
else {
db_set_string(&str, "");
}
sprintf(buf, ", '%s'", db_get_string(&str));
db_append_string(&sql, buf);
db_append_string(&sql, ")");
G_debug(3, db_get_string(&sql));
if (db_execute_immediate(driver, &sql) != DB_OK) {
db_close_database(driver);
db_shutdown_driver(driver);
G_fatal_error("Cannot insert new row: %s", db_get_string(&sql));
}
cat++;
return 0;
}