在“SQLite”数据库中存储多边形类型的数据

Posted

技术标签:

【中文标题】在“SQLite”数据库中存储多边形类型的数据【英文标题】:Store polygon type of data on the `SQLite` database 【发布时间】:2019-05-14 23:48:14 【问题描述】:

您能告诉我如何在SQLite 数据库中存储多边形类型的数据吗?

Note:我正在使用这个Cordova plugin。

polygon: Point[];

interface Point 
    x: number;
    y: number;

【问题讨论】:

最近版本的 sqlite 有一个用于处理多边形的可选扩展模块:sqlite.org/geopoly.html 或者,如果您只想存储数据而不是基于多边形进行高级查询,因为您使用的是 javascript,因此将它们作为 json 字符串存储在 TEXT 列中应该很简单。您甚至可以使用另一个可选的 sqlite 扩展对其进行一些操作和查询:sqlite.org/json1.html 我正在使用这个插件。希望我不能用那个不? @肖恩github.com/litehelpers/Cordova-sqlite-storage 对此一无所知。 希望我可以维护一个新表名 Polygon 并在其中放置 3 列,例如 xyId 或父表。希望我能那样做,不是吗?请问你的想法? @肖恩 【参考方案1】:

正如 Shawn 所指出的,SQLite 最近实现了自己的 GeoPoly 类型 - https://www.sqlite.org/geopoly.html

但执行此操作的“正确”方法可能是使用各种 GIS 标准之一。 GeoJSON 和 WKT 都可用于在 text 字段中轻松存储多边形。或者,如果您出于某种原因想要二进制文件,则可以将 WKB 存储在 blob 字段中(请参阅 WKT 链接)。

有多种不同语言的工具可让您轻松转换和处理这些数据类型。

注意:在 SQLite 中存储为 GeoPoly 可以获得基本的空间功能。其他两个不会。但如果您确实需要空间功能,但可能需要考虑 spatialite。

【讨论】:

这里的问题是我在哪里使用这个 Cordova 插件。关于如何实现这一目标的任何线索? github.com/litehelpers/Cordova-sqlite-storage @Sampath - 用于访问数据库的 api 无关紧要,因为就它而言,如果您使用 GeoJSON/WKT/WKB,您只是在存储另一个文本或 Blob事物。如果我正确阅读了该链接,则它使用的是 SQLite 3.22。 GeoPoly > 3.25,所以你不太可能得到。 这就是我需要了解的插件。我会向插件所有者询问此版本升级。非常感谢您提供的信息。

以上是关于在“SQLite”数据库中存储多边形类型的数据的主要内容,如果未能解决你的问题,请参考以下文章

在java中存储PostgreSQL/PostGIS“几何(多多边形)”数据类型

Sqlite 使用

详解Android中的SQLite数据库存储

SQLite教程04-SQLite数据类型

如何读取存储在 sqlite 数据库中的 blob 类型?

数据类型/存储类在 SQLite 中是不是重要?