Geometry是一种抽象 数据类型,具有七个相关的具体子类。 不能直接实例化一个Geometry (因为这是一个抽象类,并且不对应任何实际的实现):但可以自由地实例化任何相关的子类。 其中包括:point、linestrings、polygons、multpoint、multlinestrings、multpolygons,以及不经常使用的geometrycoliection。
Geometry用两种表示方法,在WKT中,用户可读。另一种WKB(众所周知的二进制)符号更适合于在不同平台之间精确,准确地导入/导出/交换几何。
SpatiaLite内部使用的实际格式是另一种格式,即 BLOB Geometry。
1 Spatial SQL函数ST_GeomFromText() 会将任何有效的WKT 表达式转换为内部BLOB Geometry 值。
2 ST_GeomFromWKB() 将任何有效的 WKB 表达式转换为内部 BLOB几何值。
3 ST_AsText() 将内部 BLOB几何 值转换为相应的 WKT表达式。
4 ST_AsBinary() 将内部 BLOB几何 值转换为相应的 WKB表达式。
5 ST_GeometryType() 将从给定的内部 BLOB Geometry值返回Geometry Type。
6 ST_Srid() 将从给定的内部 BLOB Geometry >值返回SRID。
SpatiaLite需要几个元数据表才能正常工作。这样的表绝对没有什么奇怪的。它们就像其他任何表一样都是表。之所以将它们统称为元数据, 是因为它们共同旨在支持扩展和完整的几何图形资格。 任何Spatial SQL函数都非常依赖于此类表:因此,出于内部管理目的,它们是绝对必需的。任何以某种方式破解此类表的尝试都肯定会导致数据库严重损坏(并发生故障)。 与元数据表进行交互的独特安全方法 ,即尽可能使用适当的Spatial SQL函数。 直接执行INSERT, UPDATE或DELETE是完全不安全的,强烈建议不要这样做。
接下来学习 在QGIS中查看SpatiaLite,之前已经下载安装了Qgis,它的界面简单明了。
连接spatialite的DB,选择layer进行使用。
如何创建表?
文档给出了例子
CREATE TABLE counties (
county_id INTEGER NOT NULL PRIMARY KEY,
county_name TEXT NOT NULL,
car_plate_code TEXT NOT NULL,
region_id INTEGER NOT NULL,
CONSTRAINT fk_county_region
FOREIGN KEY (region_id)
REFERENCES regions (region_id));
PRIMARY KEY 不仅仅是逻辑约束。
在SQLite中,定义PRIMARY KEY会 自动意味着生成一个隐式索引,以支持快速直接访问每一行。
但另一方面,定义FOREIGN KEY 只会建立逻辑约束:
因此,如果您实际上希望支持对每一行的快速直接访问,则必须显式创建相应的索引。
CREATE INDEX idx_county_region
ON counties (region_id);
给表字段建立索引。
今天学习geomtry的类型,以及分类之间的区别,还有如何用正确的函数转化点与几何,然后学习建立数据库的表,其实和普通的数据库差不多,正确的建立索引和外键形行约束是很重要的。