我使用這個代碼,找出最接近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執行了一項實用方法。我也會更新上面的答案。 –