static GhtErr l2g_build_schema(const Las2GhtConfig *config, Las2GhtState *state) { int i = 0; GhtSchemaPtr schema; GhtDimensionPtr dim; GHT_TRY(ght_schema_new(&schema)); /* Add 'X' dimension (position 0) */ GHT_TRY(ght_dimension_new_from_parameters("X", "", GHT_DOUBLE, 1.0, 0.0, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); /* Add 'Y' dimension (position 1) */ GHT_TRY(ght_dimension_new_from_parameters("Y", "", GHT_DOUBLE, 1.0, 0.0, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); /* Add 'Z' dimension (position 2) */ GHT_TRY(ght_dimension_new_from_parameters("Z", "", GHT_DOUBLE, 1.0, 0.0, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); /* Add optional attributes (positions 3+) */ for ( i = 0; i < config->num_attrs; i++ ) { LasDimension ld = LasAttributes[config->attrs[i]]; GHT_TRY(ght_dimension_new_from_parameters(ld.name, "", ld.type, ld.scale, ld.offset, &dim)); GHT_TRY(ght_schema_add_dimension(schema, dim)); } state->schema = schema; return GHT_OK; }
static GhtDimensionPtr ght_dimension_from_pc_dimension(const PCDIMENSION *d) { GhtDimensionPtr dim; GhtType type = ght_type_from_pc_type(d->interpretation); ght_dimension_new_from_parameters(d->name, d->description, type, d->scale, d->offset, &dim); return dim; }