如何将含GeoJSON格式Polygon数据的CSV导入PostgreSQL?
将GeoJSON格式Polygon数据从CSV导入PostgreSQL的步骤
1. 准备工作
- 确保已安装PostgreSQL和PostGIS扩展(PostGIS是处理空间数据的核心组件)
- 确认CSV文件每行都是完整的GeoJSON Feature对象,与你提供的示例格式一致
2. 创建数据库并启用PostGIS
打开PostgreSQL命令行工具(psql),执行以下命令:
-- 创建自定义数据库(替换为你想要的数据库名) CREATE DATABASE spatial_db; -- 连接到刚创建的数据库 \c spatial_db; -- 启用PostGIS扩展 CREATE EXTENSION postgis;
3. 创建存储空间数据的表
根据数据结构,创建包含几何字段和属性字段的表:
CREATE TABLE polygons ( id SERIAL PRIMARY KEY, properties JSONB, -- 存储GeoJSON中的properties内容 geom GEOMETRY(Polygon, 4326) -- 存储Polygon几何数据,SRID=4326对应WGS84坐标系 );
注:如果你的数据坐标系不是WGS84,需替换为对应SRID值
4. 导入CSV数据
步骤:先导入临时表再解析插入
- 创建临时表存储原始GeoJSON文本:
CREATE TEMP TABLE temp_geojson ( json_text TEXT );
- 用
\copy命令导入CSV文件(替换为你的CSV文件绝对路径):
\copy temp_geojson FROM '/path/to/your/data.csv' WITH (FORMAT csv, DELIMITER E'\n');
注:DELIMITER设为换行符,因为每行是一个独立的GeoJSON对象
- 解析临时表数据并插入正式表:
INSERT INTO polygons (properties, geom) SELECT json_text::JSONB->'properties', ST_SetSRID(ST_GeomFromGeoJSON(json_text::JSONB->>'geometry'), 4326) FROM temp_geojson;
5. 验证数据导入结果
执行以下查询确认数据:
-- 查看总记录数 SELECT COUNT(*) FROM polygons; -- 查看第一条数据的几何文本格式 SELECT ST_AsText(geom) FROM polygons LIMIT 1;
6. 导出数据到GDB(最终目标)
使用GDAL工具集的ogr2ogr命令完成转换(需提前安装GDAL):
ogr2ogr -f FileGDB /path/to/your/output.gdb PG:"dbname=spatial_db user=你的用户名 password=你的密码" polygons
注:替换命令中的数据库参数、输出路径和表名为你的实际信息
内容的提问来源于stack exchange,提问作者Angie
相关产品推荐
相关产品推荐

