From: abel <apr...@in...> - 2009-01-09 07:41:28
|
Hi, i comment my solution for display the coordinate when mouse move. i use the following: CoordinateOperationFactory coFactory = FactoryFinder.getCoordinateOperationFactory(null); MathTransform trans = null; CoordinateFilter transFilter = null; CoordinateReferenceSystem crsCoordenada = DefaultGeographicCRS.WGS84; MathTransformFactory mtFactory = FactoryFinder.getMathTransformFactory(null); trans = mtFactory.createParameterizedTransform(parameters); when mouse move calculate the coordinate: ReferencedEnvelope referencedEnvelope = getContext().getAreaOfInterest(); double width = referencedEnvelope.getWidth(); double height = referencedEnvelope.getHeight(); double width2 = referencedEnvelope.getWidth() / 2.0; double height2 = referencedEnvelope.getHeight() / 2.0; double mapX = ((x * width) / (double) bounds.getWidth()) + referencedEnvelope.getMinX(); double mapY = (((bounds.getHeight() - y) * height) / (double) bounds.getHeight()) + referencedEnvelope.getMinY(); then apply the transform: CoordinateOperation co = coFactory.createOperation(referencedEnvelope.getCoordinateReferenceSystem(), crsCoordenada); transFilter = new TransformationCoordinateFilter(co.getMathTransform()); Coordinate coor = new Coordinate(mapX, mapY); Point pointCoor = geomFac.createPoint(coor); pointCoor.apply(transFilter); LepiMarbois wrote: > > Dear All, > I would like to get the position in lat/long (WGS84 ) of a point from a > map displayed in various projections (WGS84, Lambert, Mercator ). > I am getting strange results with the code below. > With a map of France displayed entirely on the screen I am getting > errors from nearly 0.5 degree, while if I zoom I am getting errors of > few minutes . > That even if I modify the lenient parameter or sampling envelope points > in : > ReferencedEnvelope worldwg84 = env.transform( > Projections.getCRS(Projections.WGS84), true,20); > Is the code I am using wrong, is there a solution to get a better > accuracy ? > Best regards, > Pierre > > Version used Geotools 2.4.4 > > CRS build with the following data : > WGS84 = "GEOGCS[\"WGS84\", DATUM[\"WGS84\", SPHEROID[\"WGS84\", > 6378137.0, 298.257223563]], PRIMEM[\"Greenwich\", 0.0], > UNIT[\"degree\",0.017453292519943295], AXIS[\"Longitude\",EAST], > AXIS[\"Latitude\",NORTH]]"; > > LambertFrance = > "PROJCS[\"France_II\",GEOGCS[\"GCS_NTF_Paris\",DATUM[\"Nouvelle_Triangulation_Francaise\",SPHEROID[\"Clarke_1880_IGN\",6378249.2,293.46602]],PRIMEM[\"Paris\",2.337229166666667],UNIT[\"degree\",0.0174532925199433]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"False_Easting\",600000],PARAMETER[\"False_Northing\",2200000],PARAMETER[\"Central_Meridian\",0],PARAMETER[\"Standard_Parallel_1\",45.898918964419],PARAMETER[\"Standard_Parallel_2\",47.696014502038],PARAMETER[\"Latitude_Of_Origin\",46.8],UNIT[\"Meter\",1]]"; > > > Mercator = "PROJCS[\"WGS84+GRS80 / Mercator\",GEOGCS[\"WGS > 84\",DATUM[\"WGS_1984\",SPHEROID[\"GRS > 1980\",6378137,298.257222101],TOWGS84[0,0,0]],PRIMEM[\"Greenwich\",0],UNIT[\"Decimal_Degree\",0.0174532925199433]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridian\",0],UNIT[\"Meter\",1]]"; > > > > public void mouseMoved(MouseEvent e) { > try > {Point2D pntécran = (Point2D) e.getPoint(); > ReferencedEnvelope env = m_context.getAreaOfInterest(); > ReferencedEnvelope worldwg84 = env.transform( > Projections.getCRS(Projections.WGS84), true,20); > // true: lenient parameter > AffineTransform world2screen = RendererUtilities.worldToScreenTransform( > worldwg84, m_mapPane.getBounds(),Projections.getCRS(Projections.WGS84)); > AffineTransform screen2world2 = world2screen.createInverse(); > Point2D res = screen2world2.transform(pntécran,null); > m_statusBar.setMessage(Util.to_Latitude(res.getY())+ " , " + > Util.to_Longitude(res.getX())); > } > catch (NoninvertibleTransformException ex) > {System.out.println ("erreur transformlecture feature source " +ex); > } > ….. > > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Geotools-gt2-users mailing list > Geo...@li... > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users > > -- View this message in context: http://n2.nabble.com/Accuracy-of-screen-to-world-position-transformations-tp1942552p2132147.html Sent from the geotools-gt2-users mailing list archive at Nabble.com. |