我使用这个代码,找出最接近nabours在WGS84格式的指定点(可变共)Neo4j的空间WGS84距离
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一个函数,该函数返回正确的距离?
非常感谢
谢谢你的回答。 我不知道是否有办法找到点和多边形之间最短的wgs84距离。 问候 – user3042984
JTS类LocationIndexedLine可以在这里帮助。我们还通过https://github.com/neo4j/spatial/blob/master/src/main/java/org/neo4j/gis/spatial/SpatialTopologyUtils.java#L102执行了一项实用方法。我也会更新上面的答案。 –