第二部分 进阶(Advanced)
空间(Spatial)
Calcite旨在实现OpenGIS简单特性实现规范(SQL)版本,这是一个由PostGIS 和H2GIS等空间数据库的标准实现。
我们还旨在为空间索引 和其他形式的查询优化添加优化器支持 。
2.1 简介
空间数据库是为存储和查询表示在几何空间中定义的对象的数据而优化的数据库。
Calcite对空间数据的支持包括:
- GEOMETRY数据类型和 子类型,包括POINT,LINESTRING 和
- 空间函数(以为ST_前缀;我们在OpenGIS规范中实现了150个中的35个)
并且在某些时候还将包括查询重写以使用空间索引。2.2 启用空间支持
虽然GEOMETRY数据类型是内置的,但是这些功能默认是不启用的。需要添加fun=spatial到JDBC连接字符串以启用这些功能。例如sqlline:
$ ./sqlline > !connect jdbc:calcite:fun=spatial "sa" "" SELECT ST_PointFromText('POINT(-71.064544 42.28787)'); +-------------------------------+ | EXPR$0 | +-------------------------------+ | {"x":-71.064544,"y":42.28787} | +-------------------------------+ 1 row selected (0.323 seconds)
2.3 致谢
Calcite的OpenGIS实现使用 Esri geometry API。感谢他们社区给予的帮助。
在开发这个功能的同时,我们广泛的使用了PostGIS的文档和测试以及H2GIS的文档,并且在规范不明确的时候参考了两个参考实现。感谢这些精彩的项目。