Thank you for responding.
Here is some sample code. I can't seem to make it work with any non EPSG
CRS. I compiled against 2.3M0.
Code below:
import java.awt.image.RenderedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.geotools.coverage.grid.GridCoverage2D;
import org.geotools.coverage.grid.GridCoverageFactory;
import org.geotools.data.coverage.grid.GridCoverageReader;
import org.geotools.gce.geotiff.GeoTiffFormat;
import org.geotools.gce.geotiff.GeoTiffReader;
import org.geotools.gce.geotiff.GeoTiffWriter;
import org.geotools.geometry.DirectPosition2D;
import org.geotools.geometry.GeneralEnvelope;
import org.geotools.referencing.CRS;
import org.geotools.referencing.crs.DefaultGeographicCRS;
import org.opengis.coverage.grid.GridCoverage;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.crs.CoordinateReferenceSystem;
import org.opengis.referencing.operation.MathTransform;
import org.opengis.referencing.operation.TransformException;
import org.opengis.spatialschema.geometry.MismatchedDimensionException;
import com.vividsolutions.jts.geom.Coordinate;
public class TestGeoTIFF {
private static void testWorks() {
try {
// Pre-requisites
GridCoverageFactory gcf = new GridCoverageFactory();
RenderedImage ri = ImageIO
.read(new
File("/home/chammack/test.tif"));
DirectPosition2D dp1 = new DirectPosition2D(
DefaultGeographicCRS.WGS84, -80, 50);
DirectPosition2D dp2 = new DirectPosition2D(
DefaultGeographicCRS.WGS84, -70, 40);
CoordinateReferenceSystem crs1 =
CRS.decode("EPSG:3033");
MathTransform mt = CRS.findMathTransform(
DefaultGeographicCRS.WGS84, crs1, true);
GeneralEnvelope ge = new GeneralEnvelope(2);
ge.setCoordinateReferenceSystem(crs1);
ge.add(mt.transform(dp1, new DirectPosition2D()));
ge.add(mt.transform(dp2, new DirectPosition2D()));
GridCoverage2D gc1 = gcf.create("test", ri, ge);
File f = new File("/home/chammack/geotiff1.tif");
GeoTiffWriter gtw = new GeoTiffWriter(f);
gtw.write(gc1, null);
GeoTiffReader gr = new GeoTiffReader(f, null);
GridCoverage gc2 = gr.read(null);
System.out.println("Test1: Success!");
} catch (MismatchedDimensionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FactoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void testFails() {
try {
String wkt = "PROJCS[\"Lambert Conformal\",
GEOGCS[\"WGS84\",
DATUM[\"WGS84\", SPHEROID[\"WGS84\", 6378137.0, 298.257223563],
TOWGS84[0,0,0]], PRIMEM[\"Greenwich\", 0.0], UNIT[\"degree\",
0.017453292519943295], AXIS[\"Geodetic longitude\", EAST],
AXIS[\"Geodetic latitude\", NORTH]],
PROJECTION[\"Lambert_Conformal_Conic_2SP\"],
PARAMETER[\"central_meridian\", -95.0],
PARAMETER[\"latitude_of_origin\", 25.0],
PARAMETER[\"standard_parallel_1\", 25.0], PARAMETER[\"false_easting\",
0.0], PARAMETER[\"false_northing\", 0.0],
PARAMETER[\"standard_parallel_2\", 25.0], UNIT[\"m\", 1.0],
AXIS[\"Easting\", EAST], AXIS[\"Northing\", NORTH]]";
// Pre-requisites
GridCoverageFactory gcf = new GridCoverageFactory();
RenderedImage ri = ImageIO
.read(new
File("/home/chammack/test.tif"));
DirectPosition2D dp1 = new DirectPosition2D(
DefaultGeographicCRS.WGS84, -80, 50);
DirectPosition2D dp2 = new DirectPosition2D(
DefaultGeographicCRS.WGS84, -70, 40);
CoordinateReferenceSystem crs1 = CRS.parseWKT(wkt);
MathTransform mt = CRS.findMathTransform(
DefaultGeographicCRS.WGS84, crs1, true);
GeneralEnvelope ge = new GeneralEnvelope(2);
ge.setCoordinateReferenceSystem(crs1);
ge.add(mt.transform(dp1, new DirectPosition2D()));
ge.add(mt.transform(dp2, new DirectPosition2D()));
GridCoverage2D gc1 = gcf.create("test", ri, ge);
File f = new File("/home/chammack/geotiff1.tif");
GeoTiffWriter gtw = new GeoTiffWriter(f);
gtw.write(gc1, null);
GeoTiffReader gr = new GeoTiffReader(f, null);
GridCoverage gc2 = gr.read(null);
System.out.println("Test2: Success!");
} catch (MismatchedDimensionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FactoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
testWorks();
testFails();
}
}
> CIao Christopher,
> sorry for the delya of this answer but I have been travelling around
> quite a lot lately.
>
> The GeoTiffWriter is able to encode custom projections, using (almost)
> any CoordinateReferenceSystem you are using.
>
> Could you please provide an isolated test case to show where you are
> encountering problems?
>
> Simone.
>
> On 11/1/06, Christopher Hammack <[EMAIL PROTECTED]> wrote:
>> I am using the 2.3M0 binary build, and have been unable to write a
>> GeoTIFF
>> that does not have an EPSG code associated with it.
>>
>> For Example: Construct a grid coverage using EPSG:3033, use
>> GeoTIFFReader
>> to open it, and it works fine.
>>
>> Take the EPSG3033 WKT from the epsg.properties file, remove the EPSG
>> code
>> off the end and construct the CRS by using CRS.parse(...); Open the
>> resulting GeoTIFF using GeoTIFFReader and the following happens:
>>
>> java.lang.NullPointerException
>> at
>> org.geotools.gce.geotiff.GeoTiffException.getMessage(GeoTiffException.java:202)
>> at
>> org.geotools.data.DataSourceException.<init>(DataSourceException.java:47)
>> at
>> org.geotools.gce.geotiff.GeoTiffReader.<init>(GeoTiffReader.java:211)
>> at
>> org.geotools.gce.geotiff.GeoTiffFormat.getReader(GeoTiffFormat.java:194)
>>
>>
>> Is the GeoTIFF writer designed in such a way that it can only encode
>> EPSG
>> codes in, rather than custom projections?
>>
>>
>>
>>
>> -------------------------------------------------------------------------
>> Using Tomcat but need to do more? Need to support web services,
>> security?
>> Get stuff done quickly with pre-integrated technology to make your job
>> easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache
>> Geronimo
>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
>> _______________________________________________
>> Geotools-gt2-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
>>
>
>
> --
> -------------------------------------------------------
> Eng. Simone Giannecchini
> President /CEO GeoSolutions
>
> http://www.geo-solutions.it
>
> -------------------------------------------------------
>
>
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Geotools-gt2-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users