IlwisObject *InternalIlwisObjectFactory::createCsy(const Resource& resource, const IOOptions &options) const { CoordinateSystem *csy = 0; if ( resource.ilwisType() == itBOUNDSONLYCSY){ // by default to csy unknow but this may be changed later csy = createFromResource<BoundsOnlyCoordinateSystem>(resource, options); csy->name("unknown"); csy->code("unknown"); csy->setDescription(TR("Unknown coordinate system")); }else if ( resource.ilwisType() == itCONVENTIONALCOORDSYSTEM){ csy = createFromResource<ConventionalCoordinateSystem>(resource, options); csy->name(resource.name()); csy->code(resource.code()); } return csy; }
IlwisObject *InternalIlwisObjectFactory::createCsyFromCode(const Resource& resource, const IOOptions &options) const { QString code = resource.code(); bool isUnknown = code == "unknown" || code == "csy:unknown"; QString projParms = code; if ( code.left(6) == "proj4:"){ projParms = code.mid(6); }else if(!isUnknown && code.left(5) == "epsg:"){ QString query = QString("select * from projectedcsy where code='%1'").arg(code); InternalDatabaseConnection db; if ( db.exec(query)) { if (db.next()) { QSqlRecord rec = db.record(); projParms = rec.value("proj_params").toString(); } else { kernel()->issues()->log(TR(ERR_COULDNT_CREATE_OBJECT_FOR_2).arg("coordinatesystem", resource.name())); return 0; } } } CoordinateSystem *csy = 0; if ( isUnknown){ csy = createFromResource<BoundsOnlyCoordinateSystem>(resource, options); csy->name("unknown"); csy->code("unknown"); csy->setDescription(TR("Unknown coordinate system")); }else { csy = createFromResource<ConventionalCoordinateSystem>(resource, options); csy->setDescription(resource.name()); csy->prepare("proj4=" + projParms); } return csy; }