neo4j добавление пространственной точки wgs84 к узлу для вычисления расстояния - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь добавить длинную точку в узел.Мне не удалось найти какой-либо документ, касающийся того, какой класс Java следует использовать.

Вот что у меня есть:

@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;
    }
}

Класс значений не работает для меня.что мне не хватает?

1 Ответ

0 голосов
/ 21 ноября 2018

Используя CompositeAttributeConverter, можно определить свой собственный класс для хранения координат широты и долготы.Однако вы также можете использовать встроенные Point и соответствующие классы Distance, определенные в Spring Data Commons.

Вот пример из тестовых случаев в 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;

Затем вы можете определить такие методы, как:

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);
}

Метод поиска будет генерировать CYPHERкоторый передает следующие аргументы функции distance:

  • Свойства lat и lon, определенные в вашем узле
  • Аргументы at и lon передаются в качестве аргумента в метод поиска,

Это то, что вы искали?Если да, отлично!Если нет, не могли бы вы уточнить ваш вопрос.

...