Great Fran.. Glad it worked out for you. Thanks for documenting your findings for the use of other users. I will be sure to throw them into the user guide.
-Justin FranGM wrote: > Justin: Thank you very much for your support. It was very helpful. > Here I put the answer you gave me and my code so other users may understand > the solution. > The summary of the things I had to do to achieve getting the distance in > meters from one point to another of the city of Cordoba, Argentina: > 1. Use the epsg-hsql plugin by modifying the POM.xml file that maven uses > adding the following in the dependencies section: > <dependency> > <groupId>org.geotools</groupId> > <artifactId>gt2-epsg-hsql</artifactId> > <version>2.4-SNAPSHOT</version> > </dependency> > 2. Transform the projected coordinates that were in my graph of the city by > searching a correct EPSG code for my data. I found the corresponding epsg > code to my city in this page: http://spatialreference.org/ref/epsg/ and > Justin gave me the right hint on how to transform the coordinates: > /-------------------------------------------- written by Justin > -------------------------------------------------------- > Point p = ...; > > //create the transformation > CoordinateReferenceSystem crs1 = CRS.decode( "EPSG:4694" ); > CoordinateReferenceSystem crs2 = CRS.decode( "EPSG:4326" ); > > MathTransform tx = CRS.findMathTransform( crs1, crs2, true ); > > //transform the point > double[] projected = new double[]{ p.getX(), p.getY() }; > double[] longlat = new double[2]; > tx.transform( projected, 0, longlat, 0, 1 ); > > After this routine, longlat will contain the longitude and latitude of > the coordinate. > /---------------------------------------------------------------------------------------------------------------------------------- > 3. Use a GeodeticCalculator to get the distance between the points. > > Below I put a very initial version of my code (now working!). Thank you very > much again and hope this helps someone else. > Best regards! > > Fran > > import org.geotools.graph.structure.Node; > import org.geotools.referencing.CRS; > import org.opengis.referencing.crs.CoordinateReferenceSystem; > import org.opengis.referencing.operation.MathTransform; > import org.geotools.graph.structure.*; > import org.geotools.referencing.GeodeticCalculator; > import com.vividsolutions.jts.geom.Point; > > public static double distance(Node orig, Node dest){ > double dist; > double[] longlat1, longlat2, projected1, projected2; > Point p1,p2; > CoordinateReferenceSystem crs1, crs2; > MathTransform converter; > dist = -1; > p1 = ((Point) orig.getObject()); > p2 = ((Point) dest.getObject()); > longlat1 = new double[2]; > longlat2 = new double[2]; > > try{ > // Original coordinates, as you can get them from your > graph > proyectadas1 = new double[]{p1.getY(),p1.getX()}; > proyectadas2 = new double[]{p2.getY(),p2.getX()}; > // POSGAR 94 / Argentina 4: > http://spatialreference.org/ref/epsg/22184/ > crs1 = CRS.decode( "EPSG:22184" ); > crs2 = CRS.decode( "EPSG:4326" ); > converter = CRS.findMathTransform( crs1, crs2, true ); > converter.transform( projected1, 0, longlat1, 0, 1 ); > converter.transform( projected2, 0, longlat2, 0, 1 ); > // geodetic distance calculator > GeodeticCalculator gc = new > GeodeticCalculator(CRS.decode("EPSG:22184")); > gc.setStartingGeographicPoint(longlat1[1],longlat1[0]); > > gc.setDestinationGeographicPoint(longlat2[1],longlat2[0]); > dist = gc.getOrthodromicDistance(); > System.out.println("Distance: "+ dist); > }catch(Exception e){ > e.printStackTrace(); > } > return dist; > } -- Justin Deoliveira The Open Planning Project http://topp.openplans.org ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Geotools-gt2-users mailing list Geotools-gt2-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users