向PostGIS中导入栅格数据,需要区分大小文件,大文件拆分成小的块进行导入
概要
向PostGIS中导入栅格数据,小文件可以直接导入。针对大文件,需要拆分成小的块进行导入。
命令
1
2
3
4
5
6
7
8
9
|
# 针对 tif 生成 sql 文件。表名为 output_table
raster2pgsql -s 4326 -I -C -M -F -t 100x100 input_file.tif public.output_table > elev.sql
# 执行 sql 文件,导入到数据库
psql -d postgis_database -U postgres -f elev.sql
# 利用管道,一次性完成
raster2pgsql -s 4326 -I -C -M input_file.tif -F -t 100x100 public.output_table | psql -d postgis_database
|
选项
选项 |
注释 |
备注 |
-? |
显示帮助屏幕。如果您没有传入任何参数,也会显示帮助信息。 |
|
-G |
打印支持的栅格格式。 |
|
-c |
创建新表并用栅格填充它,这是默认模式 |
-cadp是互斥的 |
-a |
将栅格追加到现有表中 |
-cadp是互斥的 |
-d |
删除表,创建新表并用栅格填充它 |
-cadp是互斥的 |
-p |
准备模式,只创建表 |
-cadp是互斥的 |
-C |
应用栅格约束 - srid、像素大小等,以确保栅格在 raster_columns 视图中正确注册 |
|
-x |
禁用设置最大范围约束。仅在也使用 -C 标志时应用 |
|
-r |
设置用于常规阻塞的约束(空间唯一和覆盖瓦片) |
仅在也使用 -C 标志时应用 |
-s |
为输出栅格分配指定的 SRID。如果未提供或为零,将检查栅格的元数据以确定合适的 SRID |
|
-b BAND |
从栅格中提取的波段的索引(从 1 开始)。对于多个波段索引,用逗号 (,) 分隔。如果未指定,将提取栅格的所有波段 |
|
-t TILE_SIZE |
将栅格切割成瓦片,每个表行插入一个瓦片。 TILE_SIZE 表示为 WIDTHxHEIGHT 或设置为值“auto”,以允许加载器使用第一个栅格计算合适的瓦片大小并应用于所有栅格 |
|
-P |
填充最右边和最下面的瓦片,以确保所有瓦片具有相同的宽度和高度 |
|
-R, –register |
将栅格注册为文件系统(数据库外)栅格。仅将栅格的元数据和指向栅格的路径位置存储在数据库中(而不是像素) |
|
-l OVERVIEW_FACTOR |
创建栅格的概览。对于多个因子,用逗号 (,) 分隔。概览表名遵循模式 o_overview factor _table ,其中 overview factor 是数值概览因子的占位符,table 被替换为基本表名。创建的概览存储在数据库中,不受 -R 影响。请注意,您生成的 sql 文件将包含主表和概览表 |
|
-N NODATA |
在没有 NODATA 值的波段上使用的 NODATA 值 |
|
-f COLUMN |
指定目标栅格列的名称,默认值为“rast” |
|
-F |
添加一个包含文件名的列 |
|
-n COLUMN |
指定文件名列的名称。隐含 -F |
|
-q |
将 PostgreSQL 标识符括在引号中 |
|
-I |
在栅格列上创建 GiST 索引 |
|
-M |
对栅格表进行真空分析 |
|
-k |
保留空瓦片,并跳过每个栅格波段的 NODATA 值检查。请注意,您可以节省检查时间,但最终可能会在数据库中留下更多垃圾行,这些垃圾行不会被标记为空瓦片 |
|
-T tablespace |
指定新表的表空间。请注意,除非还使用 -X 标志,否则索引(包括主键)将继续使用默认表空间 |
|
-X tablespace |
指定表的新索引的表空间。这适用于主键和空间索引(如果使用了 -I 标志) |
|
-Y max_rows_per_copy=50 |
使用 copy 语句而不是 insert 语句。可以选择指定 max_rows_per_copy ;未指定时默认为 50 |
|
-e |
单独执行每个语句,不要使用事务 |
|
-E ENDIAN |
控制生成的栅格二进制输出的字节序;指定 0 表示 XDR,指定 1 表示 NDR(默认);目前仅支持 NDR 输出 |
|
-V version |
指定输出格式的版本。默认值为 0。目前仅支持 0 |
|
Preview: