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

news2024/11/6 19:29:58

数据下载

数据下载地址: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.coloradmin.cn/o/2229124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pycharm configurations中配置运行fastapi项目

环境 windows11 python3.11 fastapi0.115 使用virtualenv安装fastapi uvicorn pip install fastapi pip install uvicorn目的 在pycharm中可以一键运行,直接把命令行的运行参数配置到pycharm中, 即使用"uvicorn main:app --reload"运行main文件 配置 …

和小北一起Cozeplay | 扣子万圣节企划

前言: 🎃🎃🎃在这个充满神秘与欢乐的万圣节季节,扣子携手小北,为大家带来了一场别开生面的Cozeplay活动!无论你是想要体验一把惊悚刺激的万圣节氛围,还是想要展示自己的创意与才华&a…

工作转型与个人突破提升:如何在社会浪潮中激流勇进

文章目录 一、写在前面二、技术人的迷茫三、做好项目经理其实很难四、从纯技术者转型为管理者面临的事五、最重要的技能【重磅推荐!免费简单内网穿透神器!支持linuxwindows】 一、写在前面 近期工作变动,虽然说对于开发者而言,工…

为什么NMOS管比PMOS管更受欢迎?

NMOS在实际应用中为何比PMOS要更受欢迎。本文将从导电沟道、电子迁移率和器件速度等多个方面来展开讲解。 首先是在性能方面考虑: 与NMOS管驱动能力相同的一个PMOS管,其器件面积可能是NMOS管的2~3倍,然而器件面积会影响导通电阻…

Windows安装Git最新保姆级教程【附安装包】

一、Git下载: 链接:https://pan.baidu.com/s/1_uH-_-cdBb6GD58oLcxvAA 提取码:m366 二、安装Git 1.右键桌面【此电脑】-【属性】,查看操作系统是32位还是64位。 2.下载好对应64位操作系统版本的Git,解压并打开。 我电脑系统是64位…

网络通信与并发编程(七)GIL、协程

GIL、协程 文章目录 GIL、协程一、GIL二、协程 一、GIL GIL本质就是CPython解释器中的一把互斥锁。那既然是互斥锁,原理都一样,都是让多个并发线程同一时间只能有一个执行,以此确保共享数据的安全性。有了GIL的存在,同一进程内的…

6. 线程池实现

WebServer::thread_pool() 方法用于创建并初始化线程池,为服务器的并发处理能力提供支持。在 Web 服务器中,线程池用于管理多个工作线程,这些线程负责处理客户端的 HTTP 请求,以确保服务器可以同时处理多个并发请求,而…

基于Java的茶产品销售平台系统【附源码】

基于Java的茶产品销售平台系统 效果如下: 系统首页界面 用户登录界面 茶叶信息界面 在线客服界面 购物车界面 管理员登录界面 管理员功能界面 茶叶类型管理界面 研究背景 在当今社会,人们的生活节奏逐渐加快,人们对经济的要求逐渐降低&…

AI代币是什么?AI与Web3结合的未来方向在哪里?

近两年随着人工智能的崛起,AI已经渗透到制造业、电商、广告、医药等各个行业,加密货币领域也不例外,人工智能与区块链的融合,让我们看到了独特的数字资产 — AI加密代币。 它的流行始于2022年底,随着OpenAI智能聊天机…

Linux下MySQL8.x的编译安装与使用

Linux下MySQL的安装与配置 1. 安装环境初始化 1.1 查看是否安装过MySQL 如果使用rpm安装, 检查一下RPM PACKAGE rpm -qa | grep -i mysql # -i 忽略大小写 # 或者 yum list installed | grep mysql如果存在mysql-libs的旧版本包,显示如下 #存在 [rootlocalhost ~]…

如何在不安装WDK的情况下快速安装DevCon.exe?

你已经找到这里了,想必目的已经很清晰了,就是想要实现不安装WDK,又想使用Devcon.exe,那么往下看就对了。 这里直接上GitHub链接:https://github.com/Drawbackz/DevCon-Installer 考虑到网络环境,这里提供CS…

CSP/信奥赛C++刷题训练:经典二分例题(3):洛谷P8814[CSP-J 2022] 解密

CSP/信奥赛C++刷题训练:经典二分例题(3) [CSP-J 2022] 解密 题目描述 给定一个正整数 k k k,有 k k k 次询问,每次给定三个正整数 n i , e i , d i n_i, e_i, d_i ni​,ei​,di​,求两个正整数 p i , q i p_i, q_i pi​,qi​,使 n i = p i q i n_i = p_i \times…

git修改用户名与查看git的账号与密码

git修改用户名与查看git的账号与密码 文章目录 git修改用户名与查看git的账号与密码修改idea中代码提交的用户名查看git的账号与密码 修改idea中代码提交的用户名 1、打开您的IDEA,点击打开最下方的Terminal终端 2、输入以下命令,并回车执行 查看当前…

linux 安装php扩展:xlswriter

这里以xlswriter扩展为例 进入官方扩展:https://pecl.php.net查询自己php对应版本的扩展包 下载扩展 wget https://pecl.php.net/get/xlswriter-1.5.5.tgz 解压扩展 tar -zxvf xlswriter-1.5.5.tgz 进入扩展目录 cd xlswriter-1.5.5 查找对应php版本的phpiz…

解决电脑突然没有声音

问题描述:电脑突然没有声音了,最近没有怎么动过系统,没有安装或者卸载过什么软件,也没有安装或者卸载过驱动程序,怎么就没有声音了呢? 问题分析:仔细观察,虽然音量按钮那边看不到什…

php命令执行的一些执行函数----以ctfshow靶场为解题思路

PHP命令执行 一招鲜,吃遍天 cshow_source("flag.php"); cinclude($_GET[1]); cinclude("flag.php");var_dump(get_defined_vars()); web30: 这道题目过滤了flag,system,php。 那么我们 解法1:passthru ?cpassthru(…

mathorcup2024台风 我all in ai

三个问题,力大砖飞。 不建物理模型,直接all in好吧 第一个故意无监督 第二个LSTMCNN注意力,刚好时间空间 第三个在第二个上加了个transfomer ,然后LSTM变双向,增加层数(基线模型选的经验公式,少…

详细分析与梳理Java基础中的重点知识:String类 ,Java字符串String类入门,剖析String类底层机制

一、什么是String类? 众所周知,String类代表字符串类型。Java中所有被双引号包裹的字符串都是String类的对象。 (比如:"zhangsan" , "lisi" , "博主是帅哥" , "123Abc"......&#xff0…

【C/C++】模拟实现strlen

学习目标: 使用代码模拟实现strlen。 逻辑: strlen 需要输入一个字符串数组类型的变量,并且返回一个整型类型的数据。strlen 需要计算字符串数组有多少个元素。 代码1:使用计数器 #define _CRT_SECURE_NO_WARNINGS 1 #include&…