java - 在 Spring Boot 中使用带有休眠空间 5 的 PostGIS 地理点
问题描述
显然 Hibernate 5 支持 geography 类型。我搜索了很多,但几乎没有发现与地理点相关的任何内容。
我想要做的是以下内容:
将 Long/Lat 点保存在数据库表中,例如
ST_GeomFromText('POINT(6.463471 52.484832)', 4326)
执行队列以检查点是否在 Long/Lat 矩形中,例如:
WHERE point && ST_MakeEnvelope (5.440433, 39.480434, 8.464680, 55.486190, 4326)
我正在使用PostgreSQL和PostGIS。
我只是找不到我必须使用哪种类型的休眠列注释来获取长/纬度点,以及如何执行上述查询。
@Type(type="org.hibernate.spatial.GeometryType")
不是关于 Long/Lat 的问题
是否有关于此的任何文档(注意:不是几何点)。
解决方案
类型将保持 GeometryType 仅使用十进制的距离,通过下面提到的代码,您可以获得 50 到 110 米内的所有位置,因为我使用 0.001,您可以根据您的要求使用。
GeometryFactory factory = new GeometryFactory(new PrecisionModel(), 4326);
factory.createPoint(new Coordinate(longitude,latitude));
Point comparisonPoint = factory.createPoint(new Coordinate(longitude,latitude));
predicates.add(SpatialPredicates.distanceWithin(cb, geom from db), comparisonPoint, 0.001));
distanceWithin() 函数获取距离,您必须将其转换为地理,但休眠空间不支持,因此还有另一种方法可以通过根据您的要求提供十进制距离来实现这一点。链接在下面提到小数点.
推荐阅读
- vue.js - 如何在 HTML 页面末尾添加 NPM vuejs 组件
- c++ - 为 Windows 部署 QT exe 时遇到问题
- java - 如何检查给定名称是否存在于android studio的firebase实时数据库中?
- css - 导航栏切换按钮不显示?
- python - 在标头 python pandas 中搜索部分字符串
- xcode - 在 mac 的 lldb 控制台中格式化 parray 命令的输出
- android - 为导航抽屉中的特定项目设置特定颜色
- rust - 如何在 Any 和 Send Traits 上实现 Sized、Serialize/Deserialize 函数?
- java - 我可以给布尔原语一个条件作为初始化吗?
- c# - 向动态填充的 ListView 中的元素添加不同的命令