Hibernate 使用org.geolatte.geom构建LineString

Hibernate 使用org.geolatte.geom构建LineString,hibernate,hibernate-spatial,geolatte,Hibernate,Hibernate Spatial,Geolatte,如何使用org.hibernate:hibernate space库将以下MySQL表达式转换为相应的org.geolatte.geom.LineString LineString(Point(-1, start_timestamp), Point(1, end_timestamp)); DSL.linestring需要一个org.geolatte.geom.crs.CoordinateReferenceSystem,但我不确定在这种特殊情况下应该使用哪一个 到目前为止我用的是什么 C2D p

如何使用
org.hibernate:hibernate space
库将以下MySQL表达式转换为相应的
org.geolatte.geom.LineString

LineString(Point(-1, start_timestamp), Point(1, end_timestamp));
DSL.linestring
需要一个
org.geolatte.geom.crs.CoordinateReferenceSystem
,但我不确定在这种特殊情况下应该使用哪一个

到目前为止我用的是什么

C2D position1 = new C2D(-1, 1546301554.000000);
C2D position2 = new C2D(1, 1546301559.000000);

GeographicCoordinateReferenceSystem gcrs = CoordinateReferenceSystems.mkGeographic(UNKNOWN_Angular);

LineString<C2D> lineString = DSL.linestring(gcrs, position1, position2);

实际上,您在这里使用的是
geolatte geom
库,而不是
hibernate spatial
(尽管后者确实将前者作为依赖项包含在内)。您的代码不起作用,因为您混合了两种方法(直接和通过DSL),并且混合了笛卡尔坐标和地理坐标。此外,对于角度(地理)坐标,允许的范围为经度[-180,180],纬度[-90,+90]。所以我不确定你在哪个坐标系下工作

最好的办法是:

import static org.geolatte.geom.builder.Dsl.*
GeographicCoordinateReferenceSystem gcrs = CoordinateReferenceSystems.mkGeographic(UNKNOWN_Angular);

Linestring<G2D> ls = linestring(gcrs, g(-1, 50.4), g(1, 50.4));

导入静态org.geolatte.geom.builder.Dsl*
地理坐标参考系统gcrs=坐标参考系统.mkGeographic(未知角度);
Linestring ls=Linestring(GCR,g(-1,50.4),g(1,50.4));

请查看介绍该库的文档。

谢谢您的回复。我尝试使用LineString查找重叠的日期,我已经使用sql实现了它,但是我有点不确定如何使用geolatte和hibernate spatial实现它。我正在努力实现的目标;1.构造一个带有datetime开始和datetime结束2的LineString。使用hibernate将其放入LineString列。我上面的例子是有效的,并且linestring被正确地存储到数据库列中(linestring(-1 1593558000,1 1593561300)),但是正如您所注意到的,对于这种情况,我有点不确定应该使用哪个坐标引用系。我想您应该使用笛卡尔坐标系<代码>协调参考系统。未知的仪表应执行此操作。
import static org.geolatte.geom.builder.Dsl.*
GeographicCoordinateReferenceSystem gcrs = CoordinateReferenceSystems.mkGeographic(UNKNOWN_Angular);

Linestring<G2D> ls = linestring(gcrs, g(-1, 50.4), g(1, 50.4));