第二部分 進階(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的文檔,並且在規範不明確的時候參考了兩個參考實現。感謝這些精彩的項目。