Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 需要使用JTS库创建环绕坐标的圆_Java_Jts - Fatal编程技术网

Java 需要使用JTS库创建环绕坐标的圆

Java 需要使用JTS库创建环绕坐标的圆,java,jts,Java,Jts,我正在尝试使用下面的方法创建特定坐标周围的圆,这是我从一些git hub repo获得的 public static Geometry createCircle(Coordinate coordinate, double radius) { GeometricShapeFactory shape = new GeometricShapeFactory(geomFactory); shape.setCentre(coordinate); shape.setSize(2 * radius

我正在尝试使用下面的方法创建特定坐标周围的圆,这是我从一些git hub repo获得的

public static Geometry createCircle(Coordinate coordinate, double radius)
{
  GeometricShapeFactory shape = new GeometricShapeFactory(geomFactory);
  shape.setCentre(coordinate);
  shape.setSize(2 * radius);
  shape.setNumPoints(32);
  return shape.createCircle();
}

我想通过以英里为单位的半径,但看起来它吸收了其他单位,当我以5为半径时,创建的圆是巨大的。有人能解释一下如何在上面的例子中使用以英里为单位的半径参数吗?

JTS是几何/拓扑库。因此,它使用几何体所在的任何单位

假设使用的点是经度、纬度对,则单位为经度/纬度。在赤道,摄氏度约为110公里/69英里

作为一个非常快速的解决方案,您可以将半径设置为5/69。作为一个完整的解决方案,您可以将GeoTools(Java地理空间库)的大地测量计算器类[1]应用到您建议的代码中,以获得更精确的圆

这个解决方案会有一些围绕两极的问题,但那是另一个问题


[1]

当我通过shape.setSize(1)时;为了检查源和目标之间的实际距离,我得到了以下结果:源=-84.529793,33.961886&目标=-84.03940035979838 34.059431161008064(根据上述公式)距离大约为29mi。根据你的1/69度=1英里半径,你能帮我理解吗?当然。当转换为米/英里/等时,纬度总是相同的。当经度靠近两极时,经度会缩小。在离赤道33度的地方,一个经度大约是58英里(根据这个活泼但方便的网络计算器:)。我的猜测是。setSize将直径设置为0.1/29~1英里(约),因此您的回答“离开赤道33度,经度约为58英里”确实有帮助。谢谢