当前位置: 首页 > article >正文

使用GDAL库的ogr2ogr将GeoJSON数据导入到PostgreSql中

数据下载

数据下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector

我这里下载全国所有城市的数据进行导入

在这里插入图片描述

下载安装GDAL

以下是安装 ogr2ogr(GDAL 工具集的一部分)的步骤,适用于 Windows、macOS 和 Linux 系统。

Windows系统安装GDAL

  1. 下载 GDAL:
    • 访问 GISInternals 或 OSGeo4W 下载 GDAL 安装包。
    • 选择适合你系统的版本(通常是 32 位或 64 位)。
  2. 安装:
    • 下载后,运行安装程序,并按照提示完成安装。
    • 确保选择安装命令行工具。
  3. 配置环境变量:
    • 右键点击“此电脑”或“我的电脑”,选择“属性”。
    • 点击“高级系统设置” > “环境变量”。
    • 在“系统变量”中找到 Path,点击“编辑”。
    • 添加 GDAL 的安装路径(例如:C:\Program Files\GDAL)。
  4. 验证安装:
    • 打开命令提示符,输入以下命令:
ogr2ogr --version

如果显示版本信息,说明安装成功。

macOS系统安装GDAL

  1. 使用 Homebrew 安装:
    • 如果没有安装 Homebrew,可以先在终端执行以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  • 安装 GDAL:
brew install gdal
  1. 验证安装:
    • 在终端输入:
ogr2ogr --version

确认安装成功。

Linux系统安装GDAL

  1. Debian/Ubuntu 系统:
    • 打开终端,运行以下命令:
sudo apt update
sudo apt install gdal-bin
  1. Red Hat/Fedora 系统:
    • 使用以下命令:
sudo dnf install gdal
  1. 验证安装:
    • 在终端输入:
ogr2ogr --version

如果显示版本信息,说明安装成功。

我这里使用的是Ubuntu系统,按照成功会有以下提示:
在这里插入图片描述

在PostgreSql中创建表

GeoJSON 数据包含多个坐标并且表示一个多边形(Polygon),需要相应地调整表设计以支持存储 Polygon 类型的几何数据。

CREATE TABLE geo_data (
    id SERIAL PRIMARY KEY,          -- 唯一标识符
    name VARCHAR(100),              -- 地物名称
    description TEXT,               -- 描述(可选)
    type VARCHAR(50),               -- GeoJSON 类型(例如 "Feature")
    geom GEOMETRY(Polygon, 4326),   -- 空间数据,使用 Polygon 类型
    properties JSONB,               -- 任意属性,使用 JSONB 存储
    created_at TIMESTAMP DEFAULT NOW(), -- 创建时间
    updated_at TIMESTAMP DEFAULT NOW()  -- 更新时间
);

字段说明

  • id: 唯一标识符,自动递增。

  • name: 地物名称。

  • description: 对地物的详细描述。

  • type: GeoJSON 对象的类型,通常是 “Feature”。

  • geom: 存储 Polygon 类型的地理数据,使用 PostGIS 的 GEOMETRY 类型,并指定坐标系(这里使用 WGS 84,EPSG:4326)。

  • properties: 使用 JSONB 类型存储与地物相关的其他任意属性。

  • created_at: 记录创建时间。

  • updated_at: 记录最后更新时间。

索引

为了提高对空间数据的查询性能,可以创建空间索引:

CREATE INDEX idx_geom ON geo_data USING GIST (geom);

GeoJSON 示例

GeoJSON 数据可能类似于以下结构:

{
  "type": "Feature",
  "properties": {
    "name": "Example Polygon",
    "description": "A sample polygon feature."
  },
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [102.0, 0.0],
        [103.0, 0.0],
        [103.0, 1.0],
        [102.0, 1.0],
        [102.0, 0.0]
      ]
    ]
  }
}

ogr2ogr导入数据到表中

ogr2ogr -f "PostgreSQL" PG:"host=localhost dbname=your_db user=your_user password=your_password" your_data.geojson -nln geo_data -overwrite
  • your_db:你的数据库名。

  • your_user:数据库用户名。

  • your_password:数据库密码。

  • your_data.geojson:你的 GeoJSON 文件名。

  • geo_data:目标表名。

在这里插入图片描述

导入完成后即可在表中查询到

在这里插入图片描述


http://www.kler.cn/news/364710.html

相关文章:

  • yarn的安装与使用以及与npm的区别(安装过程中可能会遇到的问题)
  • Python实现非线性数据结构-字典、集合、树、图
  • Python基于amazon/chronos-t5-base的预训练模型离线对时间系列数据的未来进行预测
  • 大语言模型数据类型与环境配置
  • Vue中使用el-upload实现文件上传时控制提交按钮状态的最佳实践
  • NSSCTF
  • 分布式ID多种生成方式
  • 用docker Desktop 下载使用thingsboard/tb-gateway
  • Docker快速安装Grafana
  • Ubuntu清理空间
  • Vite 前端开发的超级加速器 - 从入门到精通
  • 【面试常考】Redis大key问题产生的影响及解决方案
  • 【Java】SpringBoot实现MySQL数据库的增删查改
  • 【记录】VSCode|自用设置项
  • 安徽对口高考Python试题选:输入一个正整数,然后输出该整数的3的幂数相加形式。
  • Linux运维实战100讲练习:第9集
  • OPPO携手比亚迪共同探索手机与汽车互融新时代
  • 如何制作一个自己的网站?
  • 文本中句子的重要性排名——TextRank算法
  • Linux 6种查看日志方法
  • 物联网智能项目综述
  • 软件测试学习笔记丨Selenium多frame切换
  • 用PHP写一个EACO(drc20)写一个和狗狗币,比特币,avax, bnb,eth,sol,usdt,等全球前30大数字货币的兑换去中心化小程序。
  • C++常用函数定义解释
  • JVM的基础
  • 1. 人工智能药物发现(AIDD)简介