PostGIS使用小结

文章目录

  • PostGIS使用小结
    • 简介
    • 安装
    • 配合postgres使用的操作
      • 1.python安装gdal


PostGIS使用小结

简介

PostGIS 是 PostgreSQL 数据库的地理空间数据扩展,通过为 PostgreSQL数据库增加地理空间数据类型、索引、函数和操作符,使其成为功能强大的空间数据库,广泛应用于 GIS(地理信息系统)等需要处理地理空间数据的场景。

安装

  1. PostgreSQL安装
    官网地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
    在这里插入图片描述

  2. 安装

2.1 windows安装

安装包一步步安装即可。

注意点:不要使用PostgreSQL 自带的Stack Builder安装扩展,网速太慢无法下载。

2.2 PostGIS扩展安装
下载地址:https://download.osgeo.org/postgis/windows/
下载对应版本的扩展
在这里插入图片描述
安装注意点:
(1)勾选驱动和空间数据库,如下图
在这里插入图片描述
(2)安装目录选择PostgreSQL 安装的根目录,如下图所示
在这里插入图片描述

2.3 安装QGIS
下载地址:https://www.qgis.org/download/
在这里插入图片描述
安装按照顺序操作

  1. 使用
    3.1 矢量数据导入
    使用PostGIS的导入界面:PostGIS PostGIS Bundle 0 for PostgreSQL x64 17 Shapefile and DBF Loader Exporter。
    在这里插入图片描述
    注意点:
    (1)导入路径不能有中文字符
    (2)导入选项里面的字符编码要与dbf的编码一致
    (3)坐标系要自己填写代号。比如4326-WGS84,4490-CGCS2000,自定义坐标系代号参照后续步骤。

数据导入成功后,通过PostgreSQL查看相应记录:
a.数据表:
在这里插入图片描述
shp数据与数据表字段对应情况:
geom --> shp数据的几何数据
其他字段 --> dbf数据的属性数据

注意:
(1)geom字段以二进制形式记录了几何数据,可以通过以下查询查看文本数据:

SELECT ST_AsText(geom) FROM public.数据表 ORDER BY gid ASC 

b.spatial_ref_sys表
功能:记录数据的坐标系
注意:
(1)自定义坐标系导入:转成proj4的描述串+自定义一个编号
转化prj–>proj4:

#假设 a.prj 文件内容为 WKT 格式
projinfo -s “cat a.prj” -o PROJ

INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext)
VALUES (99999,                          -- 自定义 SRID(确保未被占用)'USER',                         -- 权威机构为 USERNULL,                           -- 无 EPSG 编号'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +units=m +no_defs',  -- Proj.4 字符串'PROJCS["自定义投影",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",117],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH]]'  -- WKT 字符串
);

针对转换参数的情况:
–指定七参数

-- 方法一:使用 +towgs84 参数(适用于粗略转换)
INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext)
VALUES (99999,  -- 自定义 SRID'USER',NULL,'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +towgs84=ΔX,ΔY,ΔZ,εx,εy,εz,m +units=m +no_defs','...'  -- 对应的 WKT 定义
);-- 示例:假设七参数为 ΔX=100, ΔY=50, ΔZ=20, εx=0.5, εy=0.3, εz=0.1, m=0.2ppm
'+towgs84=100,50,20,0.5,0.3,0.1,0.2'

–使用自定义网格文件(更精确的转换)

-- 将网格文件上传至 PostGIS 服务器的 /usr/share/proj/ 目录
INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, proj4text, srtext)
VALUES (99999,'USER',NULL,'+proj=tmerc +lat_0=0 +lon_0=117 +k=0.9996 +x_0=500000 +y_0=0 +ellps=WGS84 +nadgrids=/usr/share/proj/mygrid.gsb +units=m +no_defs','...'
);

c.geometry_columns视图
记录数据的坐标系、几何类型、坐标维度等信息。

配合postgres使用的操作

1.python安装gdal

下载轮子:https://github.com/cgohlke/geospatial-wheels/releases
在这里插入图片描述
找到gdal相应版本进行下载。
在这里插入图片描述
cp312:表示python的3.12系列版本

定位到python安装的根目录,将轮子放到这里,然后在此目录启动命令行。
执行安装:

pip install GDAL-3.13.0-cp312-cp312-win_amd64.whl

安装成功后,即可正常使用gdal环境。同时可以发现已安装osgeo环境

gdal转prj成proj4串示例:

from osgeo import osr# 启用异常处理(GDAL 4.0+默认行为,提前适配)
# 不启用,提示错误:
# D:\Programs\miniconda3\Lib\site-packages\osgeo\osr.py:413: FutureWarning: Neither osr.UseExceptions() nor osr.DontUseExceptions() has been explicitly called. In GDAL 4.0, exceptions will be enabled by default.
# https://www.doubao.com/thread/wcce32b284e0e75ff
osr.UseExceptions()prj_text = open(r"G:\work\项目\test.prj").read()
sr = osr.SpatialReference()
sr.ImportFromWkt(prj_text)
proj4_str = sr.ExportToProj4()
print(proj4_str)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81260.shtml

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

相关文章

NNG和DDS

NNG (Nanomsg Next Generation) 和 DDS (Data Distribution Service) 是两种不同的通信协议,各自在不同场景下具有其优势。下面我将对这两种技术进行详细解释,并通过具体的例子来说明它们如何应用在实际场景中。 1. NNG (Nanomsg Next Generation) NNG简…

自制操作系统day7(获取按键编码、FIFO缓冲区、鼠标、键盘控制器(Keyboard Controller, KBC)、PS/2协议)

day7 获取按键编码(hiarib04a) void inthandler21(int *esp) {struct BOOTINFO *binfo (struct BOOTINFO *) ADR_BOOTINFO; // 获取系统启动信息结构体指针unsigned char data, s[4]; // data: 键盘数据缓存&#x…

Javase 基础加强 —— 09 IO流第二弹

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。 01 缓冲字节…

服务器操作系统调优内核参数(方便查询)

fs.aio-max-nr1048576 #此参数限制并发未完成的异步请求数目,应该设置避免I/O子系统故障 fs.file-max1048575 #该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量 fs.inotify.max_user_watches8192000 #表…

[Windows] 格式工厂 FormatFactory v5.20.便携版 ——多功能媒体文件转换工具

想要轻松搞定各类媒体文件格式转换?这款 Windows 平台的格式工厂 FormatFactory v5.20 便携版 正是你的不二之选!无需安装,即开即用,为你带来高效便捷的文件处理体验。 全能格式转换,满足多元需求 软件功能覆盖视频、…

[AI]主流大模型、ChatGPTDeepseek、国内免费大模型API服务推荐(支持LangChain.js集成)

主流大模型特色对比表 模型核心优势适用场景局限性DeepSeek- 数学/代码能力卓越(GSM8K准确率82.3%)1- 开源生态完善(支持医疗/金融领域)7- 成本极低(API价格仅为ChatGPT的2%-3%)5科研辅助、代码开发、数据…

国际荐酒师(香港)协会亮相新西兰葡萄酒巡展深度参与赵凤仪大师班

国际荐酒师(香港)协会率团亮相2025新西兰葡萄酒巡展 深度参与赵凤仪MW“百年百碧祺”大师班 广州/上海/青岛,2025年5月12-16日——国际荐酒师(香港)协会(IRWA)近日率专业代表团出席“纯净独特&…

Node.js Express 项目现代化打包部署全指南

Node.js Express 项目现代化打包部署全指南 一、项目准备阶段 1.1 依赖管理优化 # 生产依赖安装(示例) npm install express mongoose dotenv compression helmet# 开发依赖安装 npm install nodemon eslint types/node --save-dev1.2 环境变量配置 /…

java基础知识回顾3(可用于Java基础速通)考前,面试前均可用!

目录 一、基本算数运算符 二、自增自减运算符 三、赋值运算符 四、关系运算符 五、逻辑运算符 六、三元运算符 七、 运算符的优先级 八、小案例:在程序中接收用户通过键盘输入的数据 声明:本文章根据黑马程序员b站教学视频做的笔记,可…

随机密码生成器:原理、实现与应用(多语言实现)

在当今数字化的时代,信息安全至关重要。而密码作为保护个人和敏感信息的第一道防线,其安全性直接关系到我们的隐私和数据安全。然而,许多人在设置密码时往往使用简单、易猜的组合,如生日、电话号码或常见的单词,这使得…

TypeScript 泛型讲解

如果说 TypeScript 是一门对类型进行编程的语言,那么泛型就是这门语言里的(函数)参数。本章,我将会从多角度讲解 TypeScript 中无处不在的泛型,以及它在类型别名、对象类型、函数与 Class 中的使用方式。 一、泛型的核…

SQL 每日一题(6)

继续做题! 原始表:employee_resignations表 employee_idresignation_date10012022-03-1510022022-11-2010032023-01-0510042023-07-1210052024-02-28 第一题: 查询累计到每个年度的离职人数 结果输出:年度、当年离职人数、累计…

工业RTOS生态重构:从PLC到“端 - 边 - 云”协同调度

一、引言 在当今数字化浪潮席卷全球的背景下,工业领域正经历着深刻变革。工业自动化作为制造业发展的基石,其技术架构的演进直接关系到生产效率、产品质量以及企业的市场竞争力。传统的PLC(可编程逻辑控制器)架构虽然在工业控制领…

从版本控制到协同开发:深度解析 Git、SVN 及现代工具链

前言:在当今软件开发的浪潮中,版本控制与协同开发无疑扮演着举足轻重的角色。从最初的单兵作战到如今大规模团队的高效协作,一套成熟且得力的版本控制系统以及围绕其构建的现代工具链,已然成为推动软件项目稳步前行的关键引擎。今…

Visual Studio Code插件离线安装指南:从市场获取并手动部署

Visual Studio Code插件离线安装指南:从市场获取并手动部署 一、场景背景二、操作步骤详解步骤1:访问官方插件市场步骤2:定位目标版本步骤3:提取关键参数步骤4:构造下载链接步骤5:下载与安装 三、注意事项 …

用HTML5实现实时ASCII艺术摄像头

用HTML5实现实时ASCII艺术摄像头 项目简介 这是一个将摄像头画面实时转换为ASCII字符艺术的Web应用,基于HTML5和原生JavaScript实现。通过本项目可以学习到: 浏览器摄像头API的使用Canvas图像处理技术实时视频流处理复杂DOM操作性能优化技巧 功能亮点…

论文审稿之我对SCI写作的思考

有幸被邀请审过二区、三区、四区期刊的论文,近期审稿10余篇,分享一下我从一个审稿人的角度出发,如何提升自己写作的质量。 作图高清和好看,永远是排第一位。图中的字要清晰,有的放大200%还看不清字;每幅图的…

MLA:Transformer的智能变形金刚——解密多头潜在注意力的进化密码

第一章 MLA的进化之路:从MHA到智能变形 1.1 变形金刚的诞生背景 当LLM模型规模突破万亿参数量级时,传统Transformer的注意力机制开始显现"成长的烦恼":训练阶段计算密集、推理阶段内存吃紧。DeepSeek团队的MLA如同给注意力模块装…

电子电路:电学都有哪些核心概念?

电子是基本粒子,带负电荷。电荷是物质的一种属性,电子带有负电荷,而质子带有正电荷。电荷的单位是库仑。 电流呢,应该是指电荷的流动,单位是安培,也就是库仑每秒。所以电流其实就是电荷在导体中的移动形成的。比如,当电子在导线中流动时,就形成了电流。不过要注意,传…

第三次中医知识问答模型微调

本次参数 llamafactory-cli train \ --stage sft \ --do_train True \ --model_name_or_path /home/qhyz/zxy/LLaMA-Factory/model \ --preprocessing_num_workers 16 \ --finetuning_type lora \ --template deepseek3 \ --flash_attn fa2 \ --dataset_dir data \ --dataset …