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

news/2024/11/1 3:13:05/

数据下载

数据下载地址: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.ppmy.cn/news/1543471.html

相关文章

通过secret_id和role_id连接Vault

怎么生成secret_id 和role_id 通过这篇文章可以找到: Jenkins pipeline 怎么连接Vault_jenkinsfile withvault-CSDN博客 当你拥有了secret_id 和role_id,你就可以通过以下代码来进行连接: VaultLoginByApprole(){role_id$1secret_id$2expo…

C语言数据结构学习:单链表

C语言数据结构学习: 汇总入口:C语言数据结构学习:[汇总] 单链表 1. 基础了解 学习之前先了解线性表、顺序表和链表 线性表的两个特点: 有限的序列序列中的每一个元素都有唯一的前驱和后继,除了开头和结尾两个节点 …

「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理

本篇将介绍如何在 HarmonyOS 项目中高效管理资源文件和依赖,以确保代码结构清晰并提升应用性能。资源管理涉及图片、字符串、多语言文件等,通过优化文件加载和依赖管理,可以显著提升项目的加载速度和运行效率。 关键词 资源管理应用依赖优化…

【格言分享】程序员的经典名言解读

上一期文章我们分享了一些程序员的经典名言,每一句都蕴含着深刻的道理。 接下来就给大家一个一个分析一下 这些格言确实捕捉到了编程和软件开发的精髓,每一条都蕴含着丰富的经验和智慧。下面我将逐一解释这些格言,并分享一些我的看法。 C程序员永远不会灭亡。他们只是cast…

day03-LogStash

LogStash环境搭建 1.下载Logstash [10:17:18 rootelk2:/usr/local]#wget http://192.168.13.253/Resources/ElasticStack/softwares/logstash-7.17.23-amd64.deb2.安装Logstash [10:17:35 rootelk2:/usr/local]#dpkg -i logstash-7.17.23-amd64.deb 3.创建软连接&#xff0…

python psutil 模块概述

文章目录 psutil 模块概述支持的系统安装 psutil 使用示例CPU 信息获取内存信息获取磁盘信息获取网络信息获取 进程管理功能查看系统进程获取进程详情示例脚本:监控系统资源 总结核心功能使用场景主要优点 psutil 模块概述 psutil 是一个强大的跨平台 Python 库&am…

无人机之集群控制方法篇

无人机的集群控制方法涉及多个技术和策略,以确保多架无人机能够协同、高效地执行任务。以下是一些主要的无人机集群控制方法: 一、编队控制方法 领航-跟随法(Leader-Follower) 通过设定一架无人机作为领航者(长机&am…

java.sql.SQLException: ORA-00971: 缺失 SET 关键字

目录 背景: 过程: 错误原因: 解决办法: 总结: 背景: 正在运行某个项目程序,提交信息之后发现库中并没有刚刚的相关数据,后来查看后台信息,发现提示错误,java.sql.SQLException…