PostgreSQL PostGIS中的元数据表

在PostGIS中,元数据表(Metadata Tables)是用于存储地理空间数据相关元信息的系统表,它们记录了空间数据表的结构、坐标系、空间索引等关键信息,是PostGIS管理和优化空间数据的核心组件。以下是PostGIS中主要的元数据表及其作用:

1. spatial_ref_sys

作用:存储所有支持的空间参考系统(SRS,即坐标系)的定义,是PostGIS中最基础的元数据表。

内容

  • srid:空间参考系统ID(唯一标识,如4326对应WGS84经纬度坐标系)。

  • auth_name:坐标系权威机构名称(如EPSG)。

  • auth_srid:权威机构定义的SRID(如EPSG:4326)。

  • srtext:坐标系的Well-Known Text(WKT)定义(详细描述坐标系参数)。

  • proj4text:PROJ.4格式的坐标系参数(用于投影转换)。

使用场景 :当创建空间列或进行坐标转换时,PostGIS会通过spatial_ref_sys验证SRID的合法性。

2. geometry_columns

作用:记录数据库中所有空间数据表的元信息,是PostGIS识别空间列的核心表。

内容

  • f_table_catalogf_table_schemaf_table_name:空间数据表所在的数据库、模式、表名。

  • f_geometry_column:空间列的列名。

  • coord_dimension:空间维度(2D、3D等)。

  • srid:空间列的坐标系SRID(关联spatial_ref_syssrid)。

  • type:空间对象类型(如POINTLINESTRINGPOLYGONGEOMETRY等)。

特点

  • 当创建带空间列的表(如CREATE TABLE ... (geom geometry(POINT, 4326)))时,PostGIS会自动向geometry_columns插入一条记录。

  • 可通过查询该表快速获取数据库中所有空间表的信息,例如:

    复制代码
    SELECT f_table_name, f_geometry_column, srid, type FROM geometry_columns;

3. geography_columns

作用 :与geometry_columns类似,但专门用于记录geography类型列的元信息(geography是PostGIS中基于球体的空间类型,适合全球范围数据)。

内容 :与geometry_columns基本一致,区别在于geography类型默认使用WGS84(SRID=4326),且type字段仅支持球面几何类型(如POINTPOLYGON等,不支持GEOMETRYCOLLECTION)。

4. raster_columns

作用:存储 raster 类型(栅格数据)列的元信息,用于管理栅格数据。

内容

  • 包含栅格所在表名、列名、SRID、像素类型、波段数、边界范围等。

  • 类似geometry_columns,创建 raster 列时会自动更新该表。

5. raster_overviews

作用:记录栅格数据的概览(Overview)信息。概览是低分辨率的栅格副本,用于加速大尺度栅格数据的显示和查询。

内容:关联原始栅格表和概览表,记录缩放比例、瓦片大小等信息。

6. 空间索引相关元数据

PostGIS的空间索引(如GiST索引)本身不存储在单独的元数据表中,但可通过PostgreSQL系统表查询索引信息:

  • pg_index:记录所有索引的基本信息(包括空间索引)。

  • pg_class:通过关联pg_index,可获取索引对应的表和列名。

例如,查询某表的空间索引:

复制代码
SELECT indexname FROM pg_indexes 
WHERE tablename = 'your_table' AND indexdef LIKE '%USING gist%';

总结

元数据表是PostGIS管理空间数据的"目录",通过它们可以:

  • 快速定位数据库中的空间表和坐标系。

  • 验证空间数据的合法性(如SRID是否存在)。

  • 优化空间查询(如通过raster_overviews使用概览数据)。

在使用PostGIS时,通常无需手动修改这些表(PostGIS会自动维护),但理解它们的作用有助于更好地管理空间数据。

相关推荐
v***565几秒前
使用bitnamiredis-sentinel部署Redis 哨兵模式
数据库·redis·sentinel
2501_9411118215 分钟前
使用Python进行网络设备自动配置
jvm·数据库·python
m***11901 小时前
MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】
数据库·mysql
煎蛋学姐2 小时前
SSM基于J2EE的山西旅游网站的设计与实现iiqmx(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·数据库·java-ee·ssm 框架·山西旅游网站·在线预订系统
咸甜适中2 小时前
rust语言,将JSON中的所有值以字符串形式存储到sqlite数据库中(逐行注释)
数据库·rust·sqlite·json
树下水月2 小时前
python 连接hive2 数据库
开发语言·数据库·python
DARLING Zero two♡3 小时前
用Rust构建一个OCR命令行工具
数据库·rust·ocr
蟹至之3 小时前
增删查改基础(其三)—— 聚合函数、分组查询(group by与having)、内置函数
数据库·mysql·增删查改
2501_941111244 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
Wang's Blog4 小时前
MySQL: 数据库索引深度解析:B树与哈希索引的结构、应用与优化策略
数据库·b树·mysql