- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在使用 jOOQ (3.9.x) 时在 MySQL POLYGON 类型和 Jts Polygon 之间进行无缝转换。理想情况下,我只想将数据库中的 WKT(众所周知的文本)解析为 Jts 类型。但是,生成的查询不起作用,我看到它们在转换为文本的函数周围有简单的引号,将其呈现为文本。这是我正在使用的转换器和绑定(bind)。我这样做对吗?我应该如何通过 ST_AsWKT 和 ST_GeomFromText 进行转换?
public class PolygonConverter implements Converter<Object, Polygon> {
/**
* Convert WK string into Polygon
*/
@Override
public Polygon from(Object databaseObject) {
if (databaseObject == null) {
return null;
}
String wkString = databaseObject.toString();
WKTReader reader = JtsSpatialContext.GEO.getWktShapeParser();
try {
Polygon poly = (Polygon)reader.parse(wkString);
return poly;
} catch (java.text.ParseException e) {
throw new IllegalArgumentException(e);
}
}
@Override
public Object to(Polygon userObject) {
if (userObject == null) {
return null;
}
return userObject.toString();
}
@Override
public Class<Object> fromType() {
return Object.class;
}
@Override
public Class<Polygon> toType() {
return Polygon.class;
}
}
绑定(bind):
public class MySQLPolygonBinding implements Binding<Object, Polygon> {
@Override
public Converter<Object, Polygon> converter() {
return new PolygonConverter();
}
@Override
public void sql(BindingSQLContext<Polygon> ctx) throws SQLException {
ctx.render().visit(DSL.sql("ST_AsWKT(?)"));
}
@Override
public void register(BindingRegisterContext<Polygon> ctx) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public void set(BindingSetStatementContext<Polygon> ctx) throws SQLException {
String resultStr = null;
Object obj = ctx.convert(converter()).value();
if (obj != null) {
resultStr = String.format("ST_GeomFromText('%s')", obj,toString() );
}
ctx.statement().setObject(ctx.index(), resultStr);
}
@Override
public void set(BindingSetSQLOutputContext<Polygon> ctx) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public void get(BindingGetResultSetContext<Polygon> ctx) throws SQLException {
ctx.convert(converter()).value(ctx.resultSet().getString(ctx.index()));
}
@Override
public void get(BindingGetStatementContext<Polygon> ctx) throws SQLException {
ctx.convert(converter()).value(ctx.statement().getString(ctx.index()));
}
@Override
public void get(BindingGetSQLInputContext<Polygon> ctx) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
}
最佳答案
请注意,从 jOOQ 3.16 ( see #982 ) 开始,jOOQ 支持开箱即用的各种流行 GIS 实现。
据我了解,您希望自动发生两件事:
ST_GeomFromText()
函数包装这是“简单”的部分,您几乎做对了:
@Override
public void sql(BindingSQLContext<Polygon> ctx) throws SQLException {
ctx.render()
.sql("ST_GeomFromText(")
// This will use your converter to convert from a Polygon to "Object"
// prior to binding the variable
.visit(DSL.val(ctx.convert(converter()).value()))
.sql(")");
}
@Override
public void set(BindingSetStatementContext<Polygon> ctx) throws SQLException {
// No wrapping of the bind variable in functions can be done here!
ctx.statement().setString(ctx.index(), ctx.convert(converter()).value());
}
ST_AsWKT()
函数格式化您(可能)不必在绑定(bind)内部执行任何特定操作,因为您的绑定(bind)不会影响任何不涉及绑定(bind)变量的表达式(例如,普通的列表达式)。
相反,您可能需要调整转换器(绑定(bind)内的转换器),以便能够读取从 JDBC 驱动程序返回的任何类型并将其转换为 Polygon
关于java - MySQL POLYGON ←→ JTS Polygon with JOOQ (as WKT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075098/
我正在尝试在使用 jOOQ (3.9.x) 时在 MySQL POLYGON 类型和 Jts Polygon 之间进行无缝转换。理想情况下,我只想将数据库中的 WKT(众所周知的文本)解析为 Jts
文档字符串说: Polygon.contains 如果几何包含另一个则返回 True,否则返回 False Polygon.within 如果几何体在另一个几何体内部则返回 True,否则返回 Fal
我有一个包含 1000 个多个重叠多边形的大型 shapefile。我试图在这些多个重叠多边形之外合并区域,这些多边形不与图层中的任何多边形重叠。这些实际上是火灾多次燃烧的区域,我正在寻找火灾仅燃烧一
我有两个问题: 1.) 我刚刚找到了 boost 1.53 Polygon 实现(在 http://www.boost.org/doc/libs/1_53_0/libs/polygon 上)并且想测试
所以我想在 javascript 中合并相邻的多边形,这就是我的代码实际拥有的内容: 我想删除内部笔划但保留边框笔划。 所以我想从这里开始: 对此: 我想保留巴黎的洞 - 我可以定义必须对哪些多边形进
我有一个 geojson 文档,我想对其执行一些 GEOS 转换,例如:计算交点、从另一个多边形中减去多边形等。 我已经能够创建 geo_types::Polygon来自文档,但无法将其转换为 GEO
我正在尝试展示纽约州 COVID 病例的增长情况 这段代码得到了我想要的情节,但没有动画或时间方面。 完整错误: Error in insert_points(polygon$x, polygon$y
我正在尝试使用多边形实现地理围栏系统。基本上,如果用户进入地理围栏区域,用户应该会收到通知。经过许多研究后,我只能使用 Circular 找到 Geofence。到目前为止,我实现了该系统,但它仅通过
所以,我做了一个棱镜: width=30 thickness=15 polyhedron( points=[ [width,0,0],[width,0,thickness],
我正在尝试在 openscad 中创建一个风扇管道,将管道从圆形展平为椭圆形。有没有办法在openscad中做到这一点?如果没有,是否还有其他编程方式来生成这种类型的 3d 模型? 谢谢 丹尼斯 最佳
我有许多多边形,每个多边形都表示为一个点列表。我正在寻找一种快速算法来遍历多边形列表并取消所有交叉边,直到没有交叉边为止。 当前版本的伪代码: While True: For each pai
我在整个互联网和科学数据库中搜索了一篇关于单调多边形的 Delaunay 三角剖分的论文。我不是在寻找任意的多边形三角剖分,而是在寻找 Delaunay 三角剖分。有人知道这样的出版物,其中单调多边形
我有一个 2D 多边形,我想将其缩小特定的偏移量 (A) 以匹配原始多边形的特定面积比 (R)。 是否有解决此类问题的公式或算法?我对三角形/四边形的简单解决方案以及复杂多边形的解决方案感兴趣。 我附
我有一个由点列表组成的二维多边形,我想检查给定点是否位于该多边形中,但我找不到检查这个的好方法。 谁能指出我正确的方向? 最佳答案 http://en.wikipedia.org/wiki/Point
在我的调查过程中,我一直试图为拟议的风力涡轮机开发找到合适的位置,通过这个我计算了合适的区域,如图 1 所示。但我仍然试图找到一种方法来计算可能的涡轮机数量位于该多边形内部,由于涡轮机不能在彼此的 6
如何从一组固定位置的多边形中选择最少数量的多边形,其并集覆盖输入多边形? 例如,让我们考虑以下输入,其中绿色多边形是查询集,蓝色多边形是查询: 正确的覆盖应该是两个多边形: 如何计算哪些多边形最有效地
我正在使用传单绘制来创建多边形。我的要求是当用户绘制多边形时,它不应与现有多边形相交/重叠。我已经使用多边形传单中的点来检测点是否落在多边形内并且它正在工作,但问题是我无法检测一条线是否穿过另一个多边
我问是否有任何特定的顺序需要输入我的坐标集以使用 Java 中的 Graphics2D 类绘制多边形。 例如,对于 X 和 Y 坐标数组,我的坐标(X,Y)的值是否需要按降序/升序排列?或者另一个例子
我正在处理 IfcFace .我得到了一个带孔的简单多边形,我需要将它转换为多个没有孔的简单多边形,以便我的 CAD 进一步处理它。一个小演示说明: 我最好的方法是进行约束德劳内三角剖分并将三角形重新
我正在使用 NLCD 数据处理一个巨大的区域,7 个州的森林和非森林。在一些森林区域内有一 block 地 block (这是我正在研究的硕士论文)。我用这个大数据集让我问过的每个人都难过,但我们确信
我是一名优秀的程序员,十分优秀!