将地理 PostGIS 功能与 H2GIS 结合使用

Posted

技术标签:

【中文标题】将地理 PostGIS 功能与 H2GIS 结合使用【英文标题】:Use Geography PostGIS function with H2GIS 【发布时间】:2020-12-21 15:32:43 【问题描述】:

我有这个功能,我得到一个休眠空间几何类型,并在 中缓冲它


entityManager
.createNativeQuery(“SELECT ST_BUFFER(GEOGRAPHY(:geometry), :margin, ‘join=mitre’) AS BUFFERED_GEOMETRY”)
.setParameter(“geometry”, geometry)
.setParameter(“margin”, margin)
.unwrap(NativeQuery.class)
.addScalar(“ BUFFERED_GEOMETRY”, new JTSGeometryType(PGGeometryTypeDescriptor.INSTANCE))
.getSingleResult();

此代码在我使用 postGIS 时运行良好,但当我在测试中使用 h2GIS 时出现 sql 错误

Function “GEOGRAPHY” not found

我确实看到 H2GISFunctions.class 中不存在这个函数和其他一些函数。有没有解决的办法?除了在我的测试中使用 Postgres 吗?

【问题讨论】:

【参考方案1】:

我不知道 H2GIS,但是如果您避免大多数 DDL 并使用 TRUNCATE 在测试之间清除数据,那么 PostgreSQL 几乎和 H2 一样快,那么您为什么不想针对您也使用的数据库进行测试在生产中?

【讨论】:

这个测试是更大的测试模块的一部分,它已经在使用 h2,我真的不想重构或影响所有其他测试 那我没有给你答案。不过,您可以尝试自己实现这些 H2 功能。不知道实现一个GEOGRAPHY函数有多难,但是既然可以在H2中使用Java实现函数,应该不会太难。

以上是关于将地理 PostGIS 功能与 H2GIS 结合使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将纬度/经度对转换为 PostGIS 地理类型?

PostGIS 错误:类型“地理”不存在

postgresql导入shp地理文件并用uDig连接postgresql显示地图信息

postgresql与postgis结合示例

插入空的,通过地理服务器将请求文本/ xml发送到postgis整数字段中

.NET 地理定位库