IIlwisObject OperationHelperRaster::initialize(const IIlwisObject &inputObject, IlwisTypes tp, quint64 what) { Resource resource(tp); if (inputObject->ilwisType() & itCOVERAGE) { ICoverage cov = inputObject.as<Coverage>(); if (inputObject->ilwisType() == itRASTER) { IRasterCoverage gcInput = inputObject.as<RasterCoverage>(); if ( what & itRASTERSIZE) { Size<> sz = gcInput->size(); BoundingBox box(sz); resource.addProperty("size", IVARIANT(box.size())); } if ( what & itGEOREF) { resource.addProperty("georeference", IVARIANT(gcInput->georeference())); } if ( what & itDOMAIN) { resource.addProperty("domain", IVARIANT(gcInput->datadef().domain())); } } if ( what & itCOORDSYSTEM) { resource.addProperty("coordinatesystem", IVARIANT(cov->coordinateSystem())); } } resource.prepare(); IIlwisObject obj; obj.prepare(resource); if (inputObject->ilwisType() & itCOVERAGE) { OperationHelper::initialize(inputObject, obj, tp, what); } return obj; }
void domainCase(const IIlwisObject& obj, const QString& condition, int parmIndex, QVariantList& result) { if (hasType(obj->ilwisType(), itRASTER)) { IRasterCoverage raster = obj.as<RasterCoverage>(); QStringList parts = condition.split("="); QVariantMap mp; if ( parts.size() == 2){ if (parts[0] == "domain"){ QString domainType = parts[1]; if ( domainType == "numericdomain"){ mp["parameterIndex"] = parmIndex; mp["result"] = hasType(raster->datadef().domain()->ilwisType(), itNUMERICDOMAIN) ? obj->resource().url().toString() : ""; mp["uielement"] = "textfield"; }else if ( domainType == "itemdomain"){ mp["parameterIndex"] = parmIndex; mp["result"] = hasType(raster->datadef().domain()->ilwisType(), itITEMDOMAIN) ? obj->resource().url().toString() : ""; mp["uielement"] = "textfield"; } } else if ( parts[0] == "valuetype"){ QString valueType = parts[1]; IlwisTypes vt = IlwisObject::name2Type(valueType); mp["parameterIndex"] = parmIndex; mp["result"] = hasType(raster->datadef().domain()->valueType(), vt) ? obj->resource().url().toString() : ""; mp["uielement"] = "textfield"; } } result.append(mp); } }
bool CrosssectionTool::canUse(const IIlwisObject& obj, const QString& name ) const { if (!obj.isValid()) return false; if(!hasType(obj->ilwisType(), itRASTER)) return false; return name == VisualAttribute::LAYER_ONLY; }
bool MouseGotoPixelEditor::canUse(const IIlwisObject& obj, const QString& name) const { if (!obj.isValid()) return false; if (!hasType(obj->ilwisType(), itRASTER)) return false; return name == VisualAttribute::LAYER_ONLY; }
bool ApplyUndefinedValueDefinition::canUse(const IIlwisObject &obj, const QString &name) const { if (!obj.isValid()) return false; if ( obj->ilwisType() == itRASTER) { Ilwis::IRasterCoverage raster = obj.as<RasterCoverage>(); return hasType(raster->datadef().domain()->ilwisType(), itNUMERICDOMAIN); } return false; }
void tableCase(const IIlwisObject &obj, const QString& condition, int parmIndex, QVariantList& result) { ITable tbl ; if (hasType(obj->ilwisType(), itCOVERAGE)){ ICoverage coverage = obj.as<Coverage>(); tbl = coverage->attributeTable(); }else if (hasType(obj->ilwisType(), itTABLE) ){ tbl = obj.as<Table>(); } QVariantMap mp; mp["parameterIndex"] = parmIndex; QStringList names; int index; IlwisTypes domainType = itTEXTDOMAIN | itITEMDOMAIN | itNUMERICDOMAIN; if ( (index = condition.indexOf(" with ")) != -1){ QString domainPart = condition.mid(index + 6); QStringList parts = domainPart.split("="); QVariantMap mp; if ( parts.size() == 2){ QStringList types = parts[1].split(","); IlwisTypes domainType = 0; for(auto tp: types){ domainType |= IlwisObject::name2Type(tp); } } } for(int c=0; c < tbl->columnCount(); ++c){ if ( domainType != itUNKNOWN){ DataDefinition def = tbl->columndefinition(c).datadef(); if ( hasType(def.domain()->ilwisType(), domainType)) names.append(tbl->columndefinition(c).name()); }else { names.append(tbl->columndefinition(c).name()); } } mp["result"] = names; mp["uielement"] = "list"; result.append(mp); }