Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java问题与Lat/Long和distance_Java_Geography_Openmap - Fatal编程技术网

Java问题与Lat/Long和distance

Java问题与Lat/Long和distance,java,geography,openmap,Java,Geography,Openmap,我试图让代码的一部分正常工作(类似于我下面的内容),以便OBJECT_LOC和CONVERTED_LOC完全相同。我认为我所做的代码非常简单,但出于某种原因,它们的结果并不相同?我做错了什么?(您可以在下面看到输出) 输出: BASE_LOC: LatLonPoint[lat=45.333332,lon=24.0] OBJECT_LOC: LatLonPoint[lat=52.749355,lon=26.346556] CONVERTED_POINT LatLonPoint[lat=52.749

我试图让代码的一部分正常工作(类似于我下面的内容),以便OBJECT_LOC和CONVERTED_LOC完全相同。我认为我所做的代码非常简单,但出于某种原因,它们的结果并不相同?我做错了什么?(您可以在下面看到输出)

输出:

BASE_LOC: LatLonPoint[lat=45.333332,lon=24.0]
OBJECT_LOC: LatLonPoint[lat=52.749355,lon=26.346556]
CONVERTED_POINT LatLonPoint[lat=52.749355,lon=25.649527]

值得一提的是,当您执行BASE_LOC.distance()调用时,您正在两个距离的参数中的OBJECT_LOC/BASE_LOC之间进行交换。OBJECT_LOC/BASE_LOC在一个中,BASE_LOC/OBJECT_LOC在另一个中。

在查看API文档和一些地理文献后,您查找第二点的方法似乎有缺陷。正确的方法是使用距离和方位角(方位角)。以下是更正的代码:

import com.bbn.openmap.LatLonPoint;
import com.bbn.openmap.proj.coords.DMSLatLonPoint;

public class TestProgram {

   /**
    * @param args
    */
   public static void main(String[] args) {

           // 45:20:00.0N/24:00:00.0E
           LatLonPoint BASE_LOC = new DMSLatLonPoint(false, 45, 20, 00.0f, false, 24, 00, 00.0f).getLatLonPoint();
           System.out.println("BASE_LOC: " + BASE_LOC);

           LatLonPoint OBJECT_LOC = new LatLonPoint(52.749355, 26.0);
           System.out.println("OBJECT_LOC: " + OBJECT_LOC);

           float distance = BASE_LOC.distance(OBJECT_LOC);
           float az = BASE_LOC.azimuth(OBJECT_LOC);

           LatLonPoint CONVERTED_POINT = BASE_LOC.getPoint(distance, az);

           System.out.println("CONVERTED_POINT " + CONVERTED_POINT);

   }
}


此处提供了一些信息-

这是有意提供的。在第一次调用中,我将BASE_LOC设置为纬度,这样我就可以得到与对象_LOC的X距离。。在下一个调用中,我设置了基准位置作为经度,这样我就可以得到距离对象位置的y距离
import com.bbn.openmap.LatLonPoint;
import com.bbn.openmap.proj.coords.DMSLatLonPoint;

public class TestProgram {

   /**
    * @param args
    */
   public static void main(String[] args) {

           // 45:20:00.0N/24:00:00.0E
           LatLonPoint BASE_LOC = new DMSLatLonPoint(false, 45, 20, 00.0f, false, 24, 00, 00.0f).getLatLonPoint();
           System.out.println("BASE_LOC: " + BASE_LOC);

           LatLonPoint OBJECT_LOC = new LatLonPoint(52.749355, 26.0);
           System.out.println("OBJECT_LOC: " + OBJECT_LOC);

           float distance = BASE_LOC.distance(OBJECT_LOC);
           float az = BASE_LOC.azimuth(OBJECT_LOC);

           LatLonPoint CONVERTED_POINT = BASE_LOC.getPoint(distance, az);

           System.out.println("CONVERTED_POINT " + CONVERTED_POINT);

   }