Hi guziy, unfortunately I'm new to geotools and I'm really weak in all that
stuff about projection.
Here is my code:
*//I do try to transform my lat,lon to planar x,y*
private static Coordinate transformToPlanar(Coordinate source) throws
FactoryException, TransformException{
CoordinateReferenceSystem srcCRS = DefaultGeographicCRS.WGS84;
CoordinateReferenceSystem destSRC = DefaultGeocentricCRS.CARTESIAN;
boolean lenient = true; // allow for some error due to different
datums
MathTransform transform = CRS.findMathTransform(srcCRS, destSRC,
lenient);
return JTS.transform(source, null ,transform);
}
*//from x,y to lat,lon to output to KML*
private static Geometry transformToGeo(Geometry source) throws
FactoryException, TransformException{
LOG.info("transformToGeo: {}",source);
CoordinateReferenceSystem srcCRS = DefaultGeocentricCRS.CARTESIAN;
CoordinateReferenceSystem destCRS = DefaultGeographicCRS.WGS84;
boolean lenient = true; // allow for some error due to different
datums
MathTransform transform = CRS.findMathTransform(srcCRS, destCRS,
lenient);
return JTS.transform(source, transform); //EXCEPTION HERE!!! See the
trace at the end of post
}
@Test
public void drawRetailStoreMC7700001() throws ParserException,
IOException, FactoryException, TransformException {
* //read source data*
List<GSMCellLocation> gsmCellLocations =
GeoDataSampleHelper.readGSMCellLocationFromMoscowRegion();
RetailStore retailStore =
GeoDataSampleHelper.readRetailStoreByCode(MC7700001);
GeoPoint storeGeoPoint =
retailStore.getStoreLocation().getGeoPoint();
List<Geometry> geometryList = new LinkedList<Geometry>();
GeometricShapeFactory gsFactory = new GeometricShapeFactory();
gsFactory.setCentre(transformToPlanar(new
Coordinate(storeGeoPoint.getLongitude(),
storeGeoPoint.getLatitude())));
gsFactory.setSize(200);
Geometry storeCircle = gsFactory.createEllipse();
* //find intersection between circle and sectors*
for(GSMCellLocation cellLoc : gsmCellLocations){
gsFactory = new GeometricShapeFactory();
gsFactory.setCentre(transformToPlanar(new
Coordinate(cellLoc.getGeoPoint().getLongitude(),
cellLoc.getGeoPoint().getLatitude())));
gsFactory.setSize(cellLoc.getMidDist() * 2);
Geometry cellSector =
gsFactory.createArc(cellLoc.getStartAngle(), cellLoc.getAngleWidth());
if(cellSector.intersects(storeCircle)){
geometryList.add(cellSector);
}
}
LOG.info("geometryList.size {}",geometryList.size());
*//prepare output*
Encoder encoder = new Encoder(new KMLConfiguration());
encoder.setIndenting(true);
SimpleFeatureTypeBuilder typeBuilder = new
SimpleFeatureTypeBuilder();
typeBuilder.setName("poi");
typeBuilder.add("geometry", Polygon.class,
DefaultGeographicCRS.WGS84);//DefaultGeographicCRS.WGS84);
SimpleFeatureType TYPE = typeBuilder.buildFeatureType();
DefaultFeatureCollection features = new
DefaultFeatureCollection("test",TYPE);
*//output first 10 sectors*
for(int i=0; i<10; i++){
SimpleFeatureBuilder featureBuilder = new
SimpleFeatureBuilder(TYPE);
featureBuilder.add( transformToGeo(geometryList.get(i)));
*//EXCEPTION HERE transformToGeo*
SimpleFeature simpleFeature =
featureBuilder.buildFeature(String.valueOf(i + 1));
features.add( simpleFeature );
}
encoder.encode(features, KML.kml, System.out);
}
ava.lang.AssertionError: NaN
at
org.geotools.referencing.operation.transform.GeocentricTransform.inverseTransform(GeocentricTransform.java:438)
at
org.geotools.referencing.operation.transform.GeocentricTransform.inverseTransform(GeocentricTransform.java:338)
at
org.geotools.referencing.operation.transform.GeocentricTransform$Inverse.transform(GeocentricTransform.java:546)
at
org.geotools.geometry.jts.DefaultCoordinateSequenceTransformer.transform(DefaultCoordinateSequenceTransformer.java:123)
at
org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer.projectCoordinateSequence(GeometryCoordinateSequenceTransformer.java:247)
at
org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer.transformLineString(GeometryCoordinateSequenceTransformer.java:210)
at
org.geotools.geometry.jts.GeometryCoordinateSequenceTransformer.transform(GeometryCoordinateSequenceTransformer.java:152)
at org.geotools.geometry.jts.JTS.transform(JTS.java:436)
It happens on the mentioned line
--
View this message in context:
http://osgeo-org.1560.n6.nabble.com/WGS84-to-a-Cartesian-transformation-tp4318606p5034341.html
Sent from the geotools-gt2-users mailing list archive at Nabble.com.
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
GeoTools-GT2-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users