Зная координату начальной точки на дороге, необходимо рассчитать координату точки пересечения, которая находится между дорогой и обозначенным расстоянием от начальной точки. Этот тип вопроса аналогичен функции SDO-LRS.LOCATE_PT в Oracle пространственный 。Имеет ли аналогичный API для GeoTools или neo4j пространственный?
необходимо вычислить координату точки пересечения, которая находится между дорогой и обозначенным расстоянием от начальной точки
Ответы (2)
Я не уверен, что геоинструменты предоставляют именно эту функцию. Однако в 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.
Я только что отправил некоторый код в Neoj4-Spatial, чтобы обернуть метод JTS LengthIndexedLine.extractPoint новым методом locatePoint, который ведет себя так же, как методы Oracle SDO_LRS.LOCATE_PT. Итак, по крайней мере, на транке Neo4j-Spatial теперь имеет эту возможность. На самом деле код для этого тривиален, так как он является оберткой для кода JTS, поэтому возможности всегда были, но теперь они немного больше похожи на Oracle API.
Ранее упомянутые проекты GSoC попытаются несколько стандартизировать API, чтобы более полный набор функций был доступен интуитивно понятным способом.