【问题标题】:Howto insert geometry in h2 using sql如何使用 sql 在 h2 中插入几何图形
【发布时间】:2014-01-08 11:23:21
【问题描述】:

由于有几个版本,h2 确实支持空间几何。

在java中选择和插入几何不是问题。但是如何将它们插入到纯 sql 中呢? Documentation 表明它使用 WKT。但是当我尝试插入 WKT 时出现错误。

这是一个示例插入:

insert into feature (id, name, description, geom) values
(1, 'example name', 'example description', 'SRID=4326;POINT(7 52)');

感谢任何提示!

【问题讨论】:

    标签: sql geospatial h2 spatial


    【解决方案1】:

    据我所知,后缀SRID=4326不是WKT (Well-Known Text),而是EWKT。

    H2 数据库目前不支持EWKT (Extended Well-Known Text)。您必须使用'POINT(7 52)'。一个完整的例子:

    create table feature(id int, name varchar(255), 
    description varchar(255), geom geometry);
    insert into feature (id, name, description, geom) values
    (1, 'example name', 'example description', 'POINT(7 52)');
    

    【讨论】:

      【解决方案2】:

      H2GIS 库中提供了 H2 数据库中的空间函数。该库是 H2 数据库的空间扩展。它为 SQL 标准提供了 OGC 的所有简单功能。使用这个库你也可以change the coordinate reference system你的数据。

      如果你不想使用 H2GIS,你可以使用 H2 的别名方法来定义 SRID:

      create alias ST_GeomFromText AS $$
      com.vividsolutions.jts.geom.Geometry fromText(String wkt, int srid) throws SQLException {
          if(wkt == null) {
              return null;
          }
          try {
              com.vividsolutions.jts.io.WKTReader wktReaderSRID = new com.vividsolutions.jts.io.WKTReader(new com.vividsolutions.jts.geom.GeometryFactory(new com.vividsolutions.jts.geom.PrecisionModel(),srid));
              com.vividsolutions.jts.geom.Geometry geometry = wktReaderSRID.read(wkt);
              return geometry;
          } catch (com.vividsolutions.jts.io.ParseException ex) {
              throw new SQLException(ex);
          }
      }$$
      

      然后调用它:

      insert into feature (id, name, description, geom) values
      (1, 'example name', 'example description', ST_GeomFromText('POINT(7 52)', 4326));
      

      您必须将 jts jar 文件放在 h2 类路径中才能使用 Geometry 类型。

      【讨论】:

        猜你喜欢
        • 2021-05-04
        • 2020-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多