我正在尝试使用以下方法创建围绕特定坐标的圆圈,这是我从一些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作为半径时,它看起来像是在接收其他单位并且创建的圆是巨大的。在上面的例子中,有人可以解释如何在里程中使用半径参数吗?
答案 0 :(得分:0)
JTS是几何/拓扑库。因此,它使用几何所在的任何单位。
假设您正在使用经度,纬度对的点,则单位是经度/纬度。在赤道,学位约为110公里/ 69英里。
作为一个非常快速的解决方案,您可以将半径设置为5/69。作为一个完整的解决方案,您可以将GeoTools(Java地理空间库)GeodeticCalculator类[1]应用于您建议的代码以获得更准确的圆。
这个解决方案会在两极之间产生一些问题,但这是另一个问题......
[1] http://docs.geotools.org/stable/userguide/library/referencing/calculator.html