необходимо рассчитать координату точки пересечения, которая находится между дорогой и обозначенным расстоянием от начальной точки - PullRequest
1 голос
/ 19 мая 2011

Известная координата начальной точки на дороге , необходимо рассчитать координату точки пересечения, которая находится между дорогой и обозначенным расстоянием от начальной точки. Этот вопрос, как и SDO-LRS.Функция LOCATE_PT в oracle пространственном

Ответы [ 3 ]

2 голосов
/ 21 мая 2011

Я не уверен, что geotools предоставляет именно эту функцию.Тем не менее, в JTS есть связанный, который используют Geotools и Neo4j-Spatial.Посмотрите на пакет JTS com.vividsolutions.linearref , в котором есть классы для поиска точек по линейной геометрии или создания / проекции точек.Я думаю, что метод LengthIndexedLine.extractPoint (length) может быть тем, что вы ищете.

В Neo4j-Spatial у нас есть утилита, которая использует LocationIndexedLine (но еще не LengthIndexedLine).См. Тестовый код в TestSpatialUtils и код, который он вызывает в SpatialTopologyUtils .

В этом году также есть два проекта Google Summer of Code, которые работают над функциями, связанными с этим.Один из них конкретно касается геообработки, и мы представим эти виды функций с помощью простого API в Neo4j-Spatial.Другой - больше о интеллектуальном анализе моделей данных OSM, но также может касаться этих функций.Для получения дополнительной информации смотрите списки рассылки neo4j и udig.К концу лета у нас будет более богатый набор функций геообработки, доступных в Neo4j-Spatial.

1 голос
/ 02 июня 2011

Я просто отправил некоторый код в Neoj4-Spatial, чтобы обернуть JTS-метод LengthIndexedLine.extractPoint новым методом locatePoint, который ведет себя так же, как методы Oracle SDO_LRS.LOCATE_PT.Итак, по крайней мере, на транке, Neo4j-Spatial теперь имеет эту возможность.На самом деле код для этого тривиален, поскольку он оборачивает код JTS, поэтому возможности всегда были там, но теперь выглядят немного более похожими на Oracle API.

Ранее упомянутые проекты GSoC попытаются стандартизироватьAPI в некоторой степени, так что более полный набор функций доступен интуитивно понятным способом.

0 голосов
/ 14 августа 2011
  PrecisionModel precisionModel = new PrecisionModel(PrecisionModel.FLOATING_SINGLE);
  GeometryFactory geometryFactory = new GeometryFactory(precisionModel, 0);
  Coordinate[] coordinates = new Coordinate[3];
  coordinates[0] = new Coordinate(0, 0);
  coordinates[1] = new Coordinate(5, 5);
  coordinates[2] = new Coordinate(10, 0);
  CoordinateSequence coordinateSequence = new CoordinateArraySequence(coordinates);
  Geometry geo = new LineString(coordinateSequence, geometryFactory);   
  LengthLocationMap lengthLocationMap = new LengthLocationMap(geo);
  LocationIndexedLine locationIndexedLine = new LocationIndexedLine(geo);
  LinearLocation linearLocation = lengthLocationMap.getLocation(len);
  Coordinate result = locationIndexedLine.extractPoint(linearLocation);
...