
org.wowtools.neo4j.rtree.geometry2d.GeometryDistanceResult Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of neo4j-rtree Show documentation
Show all versions of neo4j-rtree Show documentation
a spatial index for neo4j 4.x.
The newest version!
package org.wowtools.neo4j.rtree.geometry2d;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.Point;
import org.locationtech.jts.io.ParseException;
import org.locationtech.jts.io.WKBReader;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Transaction;
import org.wowtools.neo4j.rtree.pojo.PointNd;
import org.wowtools.neo4j.rtree.util.DistanceResult;
/**
* @author liuyu
* @date 2021/12/31
*/
public class GeometryDistanceResult extends DistanceResult {
private final Geometry geometry;
public GeometryDistanceResult(double dist, long dataNodeId, Geometry geometry) {
super(dist, dataNodeId);
this.geometry = geometry;
}
public static GeometryDistanceResult newInstance(Transaction tx, String geometryName, WKBReader wkbReader, PointNd pointNd, long dataNodeId) {
Node node = tx.getNodeById(dataNodeId);
byte[] wkb = (byte[]) node.getProperty(geometryName);
Geometry geometry;
try {
geometry = wkbReader.read(wkb);
} catch (ParseException e) {
throw new RuntimeException(e);
}
double[] coord = pointNd.getXs();
Point point = Constant.geometryFactory.createPoint(new Coordinate(coord[0], coord[1]));
double dist = geometry.distance(point);
return new GeometryDistanceResult(dist, dataNodeId, geometry);
}
public Geometry getGeometry() {
return geometry;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy