OpenMap-java / openmap

OpenMap is an Open Source JavaBeans-based programmer's toolkit. Using OpenMap, you can quickly build applications and applets that access data from legacy databases and applications.
http://openmap-java.org
Other
73 stars 43 forks source link

units in GreatCircle.sphericalDistance()? #29

Open jx5c opened 8 years ago

jx5c commented 8 years ago

The GreatCircle.sphericalDistance() expects parameters in the units of radians, but several invocations of GreatCircle.sphericalDistance() seem using latitude and longitude in the units of degree:

in Route.java, two invocations:

double timeLimitBase = GreatCircle.sphericalDistance(toLat, toLon, fromLat, fromLon)
                / worstConvoySpeed;

double crowsPathDistance = GreatCircle.sphericalDistance(toLat, toLon, nextLoc.getY(), nextLoc.getX());

in Road.java, two invocations:

kilometers += GreatCircle.sphericalDistance(prevPoint.getY(), prevPoint.getX(), thisPoint.getY(), thisPoint.getX());

double thisLength = GreatCircle.sphericalDistance(prevLat, prevLon, thisLat, thisLon);

These four statements are all invoked with arguments in units of degree.

Also, in the Road.java file, in the statement after the last invocation above, if (thisLength >= kilometers) {

it compares kilometers with thisLength. The variable thisLength should represent arc distance, in the units of radians, not kilometers.

Jian

dfdietrick commented 8 years ago

Thanks for updates - interesting tool you must be using, is that part of your research?

jx5c commented 8 years ago

In fact, it is. I developed a prototype that supports adding semantic information from the real-world context to program elements, thereby enable checking more constraints/rules.

In your project, what I did was adding some units information to several files, e.g., geo.java, and LatLonPoint.java, and run an inference algorithm to propagate the units. Then, the prototype checked the whole project, and revealed some candidate errors. Up to now, I am still trying to understand the details of OpenMap. I hope I can contribute more in the future.

I have used my prototype for a few other Geographic applications, OpenMap is actually the largest one.