Java neo4j将空间wgs84点添加到节点以计算距离
我正在尝试向节点添加一个lon lat点。我找不到任何关于应该使用哪个java类的文档 以下是我所拥有的:Java neo4j将空间wgs84点添加到节点以计算距离,java,neo4j,spring-data-neo4j,neo4j-spatial,Java,Neo4j,Spring Data Neo4j,Neo4j Spatial,我正在尝试向节点添加一个lon lat点。我找不到任何关于应该使用哪个java类的文档 以下是我所拥有的: @NodeEntity public class Coordination { @Id @GeneratedValue private Long id; @Index private Value point; private Double lon; private Double lat; @Relationship(t
@NodeEntity
public class Coordination {
@Id
@GeneratedValue
private Long id;
@Index
private Value point;
private Double lon;
private Double lat;
@Relationship(type = "GEO_LOCATION", direction = Relationship.INCOMING)
private List<GeoLocation> geoLocations;
public Coordination(Double lon, Double lat) {
Value point = new PointValue(new InternalPoint2D(4326, lon, lat));
this.lon = lon;
this.lat = lat;
}
}
@NodeEntity
公共班级协调{
@身份证
@生成值
私人长id;
@索引
私人价值点;
私人双伦敦;
私人双lat;
@关系(type=“GEO_LOCATION”,direction=Relationship.INCOMING)
私人名单地理位置;
公共协调(双lon、双lat){
值点=新点值(新的内部点2D(4326,lon,lat));
this.lon=lon;
this.lat=lat;
}
}
价值观课程对我不起作用。我错过了什么?使用
CompositeAttributeConverter
可以定义自己的类来存储纬度和经度坐标。但是,您也可以使用Spring数据共享中定义的内置点
和相应的距离
类
以下是Spring Data Neo4j中的测试用例示例:
public class Restaurant implements Comparable<Restaurant> {
@Id @GeneratedValue private Long id;
private String name;
@Convert(PointConverter.class) private Point location; //Encapsulates lat/lon
private int zip;
private double score;
private String description;
private boolean halal;
公共级餐厅{
@Id@GeneratedValue private Long Id;
私有字符串名称;
@Convert(PointConverter.class)私有点位置;//封装lat/lon
私人邮政编码;
私人双积分;
私有字符串描述;
私人布尔清真;
然后可以定义以下方法:
import org.springframework.data.geo.Point;
import org.springframework.data.neo4j.conversion.PointConverter;
public interface RestaurantRepository extends Neo4jRepository<Restaurant, Long> {
List<Restaurant> findByNameAndLocationNear(String name, Distance distance, Point point);
List<Restaurant> findByLocationNearAndName(Distance distance, Point point, String name);
}
import org.springframework.data.geo.Point;
导入org.springframework.data.neo4j.conversion.PointConverter;
公共接口RestaurantRepository扩展了Neo4jRepository{
列出findByNameAndLocationNear(字符串名称、距离、点);
列出FindBylocationArandName(距离、点、字符串名称);
}
finder方法将生成密码,该密码将以下参数传递给distance
函数:
- 在节点上定义的lat和lon属性
- at和lon参数作为参数传递给finder方法
这就是你想要的吗?如果是,很好!如果不是,请澄清你的问题。你能分享Point的导入语句吗?对于这两个类?协调findByPoint(@Param(“Point”)Point)Org.No.4J.OG.Exist.Cop.MappExtExtExchange:在OGM版本中不支持使用CypItItEtTeFieldValter的属性。考虑实现自定义过滤器功能。保存对象没有问题,但是当使用FifByPoint(Point IT点)时我得到的是一个带有CopyTeAtEtTeFielVter的属性,在这个版本的OGM中不支持过滤器。考虑实现一个自定义过滤函数。我已经包含了导入。请在主分支上克隆spring-data-neo4j存储库并运行
RestaurantTests
。那里使用的neo4j ogm版本似乎是3.1.4(最新版本)…顺便问一下,您是否也可以共享您正在使用的spring-data-neo4j、spring data commons和neo4j ogm的版本?让我们连接:jasper@liberation-data.com..从那里我们可以设置一个视频通话,我将为您运行您需要编写的代码,以支持Point