I'm stupid for not trying this earlier.
thx again !!
On 03/09/06, Paul Ramsey <
[EMAIL PROTECTED]> wrote:
What happens if you make x longitude and y latitude? (Just guessing...)
koma wrote:
> Hi
>
> I'm new to geotools and I start using it to calculate the distance between
> airports.
>
> From my research i learned that this distance is called orthodromic distance
> and there are ellipsoids that appromixate the earth surface etc;..
>
> My problem is that my results do not match with what I find in the numerous
> online tools that serve the same purpose of calculating this distance;
>
> for BRU-JFK, I get 8715 km while it should result in 5901 km. I tried to
> document as complete as possible how I get to this result below.
>
> *** Here is the part of my code where I actually call geotools - I put a
> lot of logging in there so you can see the values below.
>
> public class Airport {
>
> ................
>
> public Measure getOrthodromicDistance(Airport otherAirport) {
>
> double x1 = this.getPersistentLatLong().getLatitudeValue().doubleValue();
> double y1 = this.getPersistentLatLong().getLongitudeValue().doubleValue();
> double x2 =
> otherAirport.getPersistentLatLong().getLatitudeValue().doubleValue();
> double y2 =
> otherAirport.getPersistentLatLong().getLongitudeValue().doubleValue();
>
> log.info("x1: " + x1);
> log.info("y1: " + y1);
> log.info("x2: " + x2);
> log.info("y2: " + y2);
>
> double distanceInMeter = DefaultEllipsoid.WGS84.orthodromicDistance(x1,
> y1, x2, y2);
>
> log.info("distance in meter: " + distanceInMeter);
>
> return Measure.valueOf(distanceInMeter, SI.METER);
> }
>
>
> **** Here is how I called this function in a test case :
>
> Measure expectedDistance = null;
> Measure actualDistance = null;
>
> AirportFilter filter = new AirportFilter();
> filter.setLikeIcao("EBBR");
> Airport brussels =
> (Airport)BusinessFactory.getSafeAirportsFacade().findAirports(filter).get(0);
> filter.setLikeIcao("LGAV");
> Airport athens =
> (Airport)BusinessFactory.getSafeAirportsFacade().findAirports(filter).get(0);
> filter.setLikeIcao ("KJFK");
> Airport jfk =
> (Airport)BusinessFactory.getSafeAirportsFacade().findAirports(filter).get(0);
> assertTrue(brussels!=null);
> assertTrue(athens!=null);
> assertTrue(jfk!=null);
>
> log.info("BRUSSELS: " + brussels.getPersistentLatLong().getLatLong());
> log.info("ATHENS:" + athens.getPersistentLatLong ().getLatLong());
> log.info("JFK:" + athens.getPersistentLatLong().getLatLong());
>
>
> log.info("*******CALCULATING BRU-JFK");
> expectedDistance = Measure.valueOf(5901, 1, SI.KILO(SI.METER));
> actualDistance = brussels.getOrthodromicDistance(jfk);
>
> log.info("bru-jfk:" + actualDistance + "<> expected " + expectedDistance);
>
> log.info("*******CALCULATING JFK-ATH");
> expectedDistance = Measure.valueOf(7952, 1, SI.KILO(SI.METER));
> actualDistance = jfk.getOrthodromicDistance (athens);
>
> log.info("jfk-ath:" + actualDistance+ "<> expected " + expectedDistance);
>
> log.info("*******CALCULATING BRU-ATH");
> expectedDistance = Measure.valueOf(2104, 1, SI.KILO(SI.METER));
> actualDistance = brussels.getOrthodromicDistance(athens);
>
> log.info("bru-ath:" + actualDistance+ "<> expected " + expectedDistance);
>
> ***************
> ********** Here is the log output and you can see the mismatch in the
> results !
>
> 21:53:35,949 INFO AbstractTest:53 - BRUSSELS: [50.901389 °, 4.484444 °]
> 21:53:35,953 INFO AbstractTest:54 - ATHENS:[37.936358 °, 23.944467 °]
> 21:53:35,954 INFO AbstractTest:55 - JFK:[37.936358 °, 23.944467 °]
>
>
> 21:53:35,955 INFO AbstractTest:58 - *******CALCULATING BRU-JFK
> 21:53:35,966 INFO Airport:105 - x1: 50.901389
> 21:53:35,967 INFO Airport:106 - y1: 4.484444
> 21:53:35,968 INFO Airport:107 - x2: 40.63975
> 21:53:35,968 INFO Airport:108 - y2: -73.778925
> 21:53:36,011 INFO Airport:112 - distance in meter: 8715665.085436275
> 21:53:36,022 INFO AbstractTest:62 - bru-jfk:(8.7156650854362752E6 ± 1.9E-9)
> m<> expected (5901.0 ± 1.0) km
> 21:53:36,023 INFO AbstractTest:64 - *******CALCULATING JFK-ATH
> 21:53:36,023 INFO Airport:105 - x1: 40.63975
> 21:53:36,024 INFO Airport:106 - y1: -73.778925
> 21:53:36,026 INFO Airport:107 - x2: 37.936358
> 21:53:36,027 INFO Airport:108 - y2: 23.944467
> 21:53:36,027 INFO Airport:112 - distance in meter: 1.0841626343788018E7
> 21:53:36,028 INFO AbstractTest:68 - jfk-ath:(1.08416263437880192E7 ±
> 1.9E-9) m<> expected (7952.0 ± 1.0) km
> 21:53:36,028 INFO AbstractTest:70 - *******CALCULATING BRU-ATH
> 21:53:36,029 INFO Airport:105 - x1: 50.901389
> 21:53:36,029 INFO Airport:106 - y1: 4.484444
> 21:53:36,030 INFO Airport:107 - x2: 37.936358
> 21:53:36,030 INFO Airport:108 - y2: 23.944467
> 21:53:36,031 INFO Airport:112 - distance in meter: 2563549.1161598773
> 21:53:36,032 INFO AbstractTest:74 - bru-ath:(2.56354911615987712E6 ±
> 4.7E-10) m<> expected (2104.0 ± 1.0) km
>
> Somebody can tell me what I'm doing wrong ???
>
> TIA !
>
> Koen
------------------------------------------------------------------------- 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
