我正在使用此代码查找wgs84格式(变量co)中给定点的最近nabours
for(Node n : geomPoints){
ExecutionResult result = engine.execute("START a=node(" + n.getId() + ") "+
"MATCH a-[:FIRST_NODE]->()-[:NEXT*0..]->()-[:NODE]->b "+
"RETURN b");
Iterator<Node> nodes = result.columnAs("b");
while(nodes.hasNext()){
Node nodesInGeom = nodes.next();
Float lon = Float.parseFloat(nodesInGeom.getProperty("lon").toString());
Float lat = Float.parseFloat(nodesInGeom.getProperty("lat").toString());
Coordinate coo = new Coordinate(lon,lat);
if(co.distance(coo)<distance) {
distance = co.distance(coo);
nearestNabour = nodesInGeom;
}
}
因此,此代码的重要部分是此部分
co.distance(coo)
因为我被告知这个函数使用的是欧几里德距离而不是距离,我需要fpr的wgs84格式
所以我的问题是:neo4j satial中是否有一个函数,返回正确的距离?
非常感谢
答案 0 :(得分:1)
我建议使用org.geotools.referencing.datum.DefaultEllipsoid.WGS84.orthodromicDistance()方法。例如,请参阅https://github.com/neo4j/spatial/blob/master/src/main/java/org/neo4j/gis/spatial/osm/OSMImporter.java#L2158
中的OSMImporter中的用法在回答关于找到最接近的几何的次要问题时,请查看https://github.com/neo4j/spatial/blob/master/src/main/java/org/neo4j/gis/spatial/SpatialTopologyUtils.java#L102处的实用方法findClosestEdges。这将返回PointResult的集合,包含最接近的Point及其所属的Geometry。如果您查看代码,您将看到它使用JTS类LocationIndexedLine来计算边缘的最近部分。