[Qgis-developer] Affine transformation code in Georeferencer -- incomplete?
Benjamin Ducke
benducke at fastmail.fm
Mon May 25 14:16:09 PDT 2015
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 <benducke at fastmail.fm
>> <mailto:benducke at 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 at lists.osgeo.org <mailto:Qgis-developer at 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
More information about the Qgis-developer
mailing list