Hi,

I want to write some georeferenced informations into a GridCoverage2D. To do
this, I create a Writable Raster, like this :

final int width  = 5000;
final int height = 5000;
WritableRaster raster =
RasterFactory.createBandedRaster(DataBuffer.TYPE_FLOAT,width, height, 1,
null);

I perform some calculation on my datas and then want to write some points
into the raster, just created. So I suppose I need a MathTransform, from my
Envelope2D, describing my geograhic area, to my raster coordinates...?
I am doing something like this :

DirectPosition2D leftdown = new DirectPosition2D(102.0,23.0);
DirectPosition2D rightup = new DirectPosition2D(103.0,24.0);
DirectPosition2D inter = new DirectPosition2D(102.5,23.5);
Envelope2D env = new Envelope2D(leftdown, rightup);

List<MappedPosition> list = new ArrayList<MappedPosition>(2);

MappedPosition mp1 = new MappedPosition(new DirectPosition2D(0,0),
leftdown);
MappedPosition mp2 = new MappedPosition(new
DirectPosition2D(width,height),rightup);
MappedPosition mp3 = new MappedPosition(new
DirectPosition2D(width/2,height/2), inter);

list.add(mp1);
list.add(mp2);
list.add(mp3);

AffineTransformBuilder mtb = new AffineTransformBuilder(list);
MathTransform mt = null;

try {
        mt = mtb.getMathTransform();
} catch (FactoryException ex) {
        Logger.getLogger(_2_WriteRaster.class.getName()).log(Level.SEVERE,
null, ex);
}

But I always get this error, when trying to get the MathTransform :

Exception in thread "main" javax.vecmath.SingularMatrixException: cannot
invert matrix
        at javax.vecmath.GMatrix.invertGeneral(GMatrix.java:1711)
        at javax.vecmath.GMatrix.invert(GMatrix.java:397)
        at
org.geotools.referencing.operation.builder.ProjectiveTransformBuilder.calculateLSM(ProjectiveTransformBuilder.java:243)
        at
org.geotools.referencing.operation.builder.AffineTransformBuilder.getProjectiveMatrix(AffineTransformBuilder.java:99)
        at
org.geotools.referencing.operation.builder.ProjectiveTransformBuilder.computeMathTransform(ProjectiveTransformBuilder.java:280)
        at
org.geotools.referencing.operation.builder.MathTransformBuilder.getMathTransform(MathTransformBuilder.java:687)
        at
org.geotools.referencing.operation.builder.MathTransformBuilder.getErrorStatistics(MathTransformBuilder.java:645)
        at
org.geotools.referencing.operation.builder.MathTransformBuilder.getTransformation(MathTransformBuilder.java:733)
        at
geotools_tests.rasters._2_WriteRaster.main(_2_WriteRaster.java:117)

Is there something wrong in my code ?
Thomas
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to