FYI, The pure C (+Java bindings) version of the transformation methods in the QGIS georeferencer is now available here:
https://svn.code.sf.net/p/gvsigce/code/trunk/libraries/libCTL I realize that this won't be of immediate interest for QGIS folks, but I would nevertheless like to thank you all for taking the time to answer my questions on this list. If anyone here does find my C/Java conversion useful, then I'd be thankful for any tests/comments. Cheers, Ben On 05/05/15 11:41, Benjamin Ducke wrote: > On 05/05/15 11:20, Olivier Dalang wrote: >> Hi, >> >> If I'm correct, the QgsLeastSquares::affine() method is used when >> creating a worldfile, and it seems it does not account for rotation (at >> least the generated worldfiles don't). > > Ok, that explains a lot. > >> >> Not really sure of what you're trying to do, > > I am trying to extract the transformation methods > to plain C. I find that they are nicely designed and > compact, with GNU Scientific Library (also a plain C > lib) being the only dependency. I am not aware of any > other simple C lib for such transformations and I would > like to make the excellent QGIS implementations of > Helmert and projective transformations available to > C and Java (via JNI bindings) programmers. Granted, > affine transformations are usually easier to find, > but for the sake of completeness... > >> but just in case, here's my >> implementation to compute worldfile parameters with rotation too (I had >> no time to port to core yet) : >> >> https://gist.github.com/olivierdalang/ba97fc986ade4545068d >> > > Thanks! I will take a look. Maybe this already contains > all I am searching for. > > Cheers, > > Ben > >> Best, >> >> Olivier >> >> >> >> >> 2015-05-04 10:35 GMT+02:00 Benjamin Ducke <bendu...@fastmail.fm >> <mailto:bendu...@fastmail.fm>>: >> >> Dear Devs -- >> >> I am currently converting the transformation methods >> in the QGIS Georeferencer to plain C. >> So far, I have been able to extract and convert the >> projective and Helmert transformations. >> >> However, the code for the affine transformation seems >> incomplete. >> >> Looking here: >> >> >> https://github.com/qgis/QGIS/trunk/src/plugins/georeferencer/qgsleastsquares.cpp >> >> I find this method: >> >> void QgsLeastSquares::affine() >> >> It computes a 6x6 transformation matrix but stops there. >> In analogy to "QgsLeastSquares::helmert()", I _think_ >> the next step should be to extract the rotation, scaling, >> translation and shearing vectors using "gsl_vector_get()". >> >> It seems to me that "QgsLeastSquares::affine()" has been >> abandoned code for a while and that the affine transformation >> is now delegated to gdal_warp(?). >> >> Does anyone here still remember how to extract the affine >> components from the 6x6 matrix? I have done some extensive >> searching on the web but came up empty. Any pointers would >> be greatly appreciated. >> >> Cheers, >> >> Ben >> _______________________________________________ >> Qgis-developer mailing list >> Qgis-developer@lists.osgeo.org <mailto:Qgis-developer@lists.osgeo.org> >> http://lists.osgeo.org/mailman/listinfo/qgis-developer >> >> > > > -- Dr. Benjamin Ducke {*} Geospatial Consultant {*} GIS Developer Spatial technology for the masses, not the classes: experience free and open source GIS at http://gvsigce.org _______________________________________________ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer