Создание формы клина с Geotools - PullRequest
0 голосов
/ 01 июня 2018

Я нахожусь на крючке для создания сервиса, который будет создавать фигуру на основе данных, предоставленных с центральной точкой.Я работаю с геоинструментами, с которыми у меня мало опыта, но я все больше знаком с ними.

Я получаю данные, которые выглядят следующим образом:

{
    "shape": {
    "latitude": 43.87,
    "longitude": -103.45,
    "parameters": [
        0.0,
        120.0,
        1000.0
    ],
    "shapeString": "WEDGE (-103.45,43.87) AZIMUTH:0.0 ANGLE:120.0 RADIUS:1000.0"
  }
}

Я предполагаю, что есть способ создать эту форму в геоинструментах, но я просто настолько незнаком с этим, я не былв состоянии сделать это.Я видел возможность создавать многоугольники, однако, похоже, мне нужно было иметь несколько наборов широт, длин, чтобы создать фигуру такого типа.

1 Ответ

0 голосов
/ 03 июня 2018

Я написал программу для решения аналогичной проблемы некоторое время назад.

По сути, уловка заключается в использовании GeodeticCalculator для определения координат изогнутого участкаклин и соединение начала и конца к начальной точке.

ArrayList<Coordinate> coords = new ArrayList<>();
// start at the tower
coords.add(point.getCoordinate());
// next the edge of the wedge
int nSteps = 10;
// assume width of 10 degrees
double width = 10.0;
double dStep = width/nSteps;
for (int i = -nSteps; i < nSteps; i++) {
  CALC.setStartingGeographicPoint(point.getX(), point.getY());
  CALC.setDirection((azimuth +(i*dStep)), radius);
  Point2D p = CALC.getDestinationGeographicPoint();
  coords.add(new Coordinate(p.getX(), p.getY()));
}
// end at the tower
coords.add(point.getCoordinate());
poly = GF.createPolygon(coords.toArray(new Coordinate[] {}));
...