我有一个带有srid系统900913的几何列的Postgis数据库。如果得到一个hibernate-spatial映射列到com.vividsolutions.jts.geom.Geometry
。我还使用QueryDSL来创建查询。
我知道在srid系统900913中使用WKT字符串获取请求。我想查询与WKT字符串相交的实体。
WKTReader reader = new WKTReader(
new GeometryFactory(new PrecisionModel(), 900913));
// only the part which creates the clause
qSample.geom.intersects(reader.read(wktString))
我知道有一个错误,即postgres中有混合srid系统。
o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: XX000
o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: Operation on mixed SRID geometries
我发现的是,如果我将wktString
“手动”转换为epsg 4326,然后创建像
qSample.geom.transform(4326).intersects(reader.read(wktStringIn4326))
它有效。但我不想一直转换我的数据库中的每个entrie ...