int main(){ int xsize, ysize; unsigned char * imgbuf; double inFluxScale; #ifdef _WIN32 if (!loadBitmap("G:\\sources2\\__BR\\RC\\crocodile\\reprojection-pseudocode\\lovell.bmp", &xsize, &ysize, &imgbuf, &inFluxScale)){ #else if (!loadBitmap("/home/awson/data/Work/crocodile/reprojection-pseudocode/lovell.bmp", &xsize, &ysize, &imgbuf, &inFluxScale)){ #endif printf("Can't load the input!"); return -1; } CoordinateSystem inCS = { {0, 0} , {500, 500} , { {-0.000027778, 0} , { 0, 0.000027778} } }; inCS.prepare(); CoordinateSystem outCS = { {0, 0} , {500, 500} , { {-0.00002, -0.00002} , {-0.00002, 0.00002} } }; outCS.prepare(); vector<double> inp(xsize * ysize); vector<double> outp(xsize * ysize); unsigned char * it = imgbuf; for (double & v : inp) v = double(*it++); printf("Start repro ...\n"); reprojection( inCS , outCS , {xsize, ysize} , {xsize, ysize} , inp.data() , outp.data() ); printf("Done repro!\n"); // Dirty! Reuse imgbuf. it = imgbuf; for (double v : outp) *it++ = (unsigned char)(min(255.0, v)); saveBitmap("image.bmp", xsize, ysize, imgbuf, inFluxScale * pixelAreaRatio(inCS, outCS)); free(imgbuf); }
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; }