/*********************************************** * Add thematic props from vector atts ***********************************************/ gboolean vis_load_vector_point_thematic(gchar *name, gint pnt_id, gint marker_id, float color, gchar *thematic_col_lab, gdouble thematic_scale) { geopoint *gpt; geosite *gp; dbDriver *Driver; dbCatValArray cvarr; int nrec; struct Map_info Map; struct field_info *Fi; double dval; gchar err[80]; int i; Vect_set_open_level (1); Vect_open_old (&Map, name, ""); db_CatValArray_init ( &cvarr ); Fi = Vect_get_field( &Map, 1); if ( Fi == NULL ) { sprintf(err, "Cannot get layer info for vector map <%s>", name); show_error(err); return FALSE; } else { Driver = db_start_driver_open_database ( Fi->driver, Fi->database ); if (Driver == NULL) { sprintf(err, "Failed to open database %s by driver %s\n", Fi->database, Fi->driver); show_error(err); return FALSE; } else { nrec = db_select_CatValArray ( Driver, Fi->table, Fi->key, thematic_col_lab, NULL, &cvarr ); db_close_database_shutdown_driver(Driver); gp = gp_get_site(pnt_id); /* init */ for (i=0; iuse_attr[i]=ST_ATT_NONE; gp->use_attr[0] |= ST_ATT_SIZE; gp->use_attr[0] |= ST_ATT_COLOR; gp->use_attr[0] |= ST_ATT_MARKER; for (gpt = gp->points; gpt; gpt = gpt->next) { db_CatValArray_get_value_double (&cvarr, gpt->cat, &dval); gpt->size[0] = (float)(dval*thematic_scale); gpt->color[0] = color; gpt->marker[0] = marker_id; } Vect_close (&Map); } } return TRUE; }