首页/新闻资讯/正文详情

PostGIS安装与使用指南:空间数据库扩展

发布时间:2026/11/11 18:02:45 来源:云帆数科 栏目:资讯中心
PostGIS安装与使用指南:空间数据库扩展
1. PostGIS简介与安装准备PostGIS是PostgreSQL数据库的空间数据扩展它为PostgreSQL添加了对地理对象的支持使PostgreSQL成为一个功能强大的空间数据库。PostGIS实现了Open Geospatial Consortium (OGC)的Simple Features规范并提供了丰富的空间函数和操作符。1.1 系统要求在安装PostGIS之前需要确保满足以下系统要求PostgreSQL 12-18PostGIS 3.5.x需要PostgreSQL 12或更高版本GEOS 3.8.0几何引擎建议使用3.12版本以获得完整功能Proj 6.1投影转换库用于坐标参考系统支持GDAL 3用于栅格数据支持可选LibXML2 2.5用于处理GML和KML格式JSON-C用于GeoJSON支持对于Windows用户可以从PostgreSQL官方下载页面获取预编译的PostGIS安装包。Linux用户可以通过包管理器或从源代码编译安装。1.2 安装前准备在开始安装前建议执行以下步骤更新系统软件包sudo apt update sudo apt upgrade -y # Debian/Ubuntu sudo yum update -y # CentOS/RHEL安装开发工具和依赖库sudo apt install build-essential libxml2-dev libgeos-dev libproj-dev \ libgdal-dev libjson-c-dev protobuf-c-compiler -y确保PostgreSQL开发头文件已安装sudo apt install postgresql-server-dev-12 # 根据实际版本调整2. 从源代码编译安装PostGIS2.1 获取源代码可以从PostGIS官方网站下载稳定版源代码或从Git仓库获取最新开发版wget https://download.osgeo.org/postgis/source/postgis-3.5.8.tar.gz tar -xvzf postgis-3.5.8.tar.gz cd postgis-3.5.8或者从Git仓库克隆git clone https://git.osgeo.org/gitea/postgis/postgis.git cd postgis sh autogen.sh2.2 配置编译选项运行configure脚本进行配置./configure常用配置选项--with-pgconfig/path/to/pg_config指定pg_config路径--with-geosconfig/path/to/geos-config指定GEOS配置--with-projdir/path/to/proj指定Proj安装目录--with-gdalconfig/path/to/gdal-config指定GDAL配置--without-raster禁用栅格支持--without-topology禁用拓扑支持2.3 编译与安装配置完成后执行编译和安装make make check # 运行测试可选 sudo make install安装完成后可以安装文档和注释可选make comments-install3. 在PostgreSQL中启用PostGIS3.1 创建空间数据库首先创建一个新的PostgreSQL数据库createdb gisdb psql -c CREATE EXTENSION postgis; -d gisdb3.2 验证安装连接到数据库并验证PostGIS是否正常工作SELECT PostGIS_version(); SELECT PostGIS_full_version();应该能看到类似以下的输出postgis_version --------------------------------------- 3.5 USE_GEOS1 USE_PROJ1 USE_STATS1 (1 row)3.3 安装可选扩展PostGIS还提供了一些可选扩展-- 栅格支持 CREATE EXTENSION postgis_raster; -- 拓扑支持 CREATE EXTENSION postgis_topology; -- Tiger地理编码器 CREATE EXTENSION fuzzystrmatch; CREATE EXTENSION postgis_tiger_geocoder; CREATE EXTENSION address_standardizer;4. PostGIS基本使用4.1 创建空间表创建一个包含几何列的表CREATE TABLE spatial_data ( id serial PRIMARY KEY, name varchar(100), geom geometry(Point, 4326) );4.2 插入空间数据使用WKTWell-Known Text格式插入数据INSERT INTO spatial_data (name, geom) VALUES (Location 1, ST_GeomFromText(POINT(-71.060316 48.432044), 4326)), (Location 2, ST_GeomFromText(POINT(-71.097293 48.476575), 4326));4.3 空间查询示例计算两点之间的距离SELECT a.name, b.name, ST_Distance(a.geom, b.geom) AS distance FROM spatial_data a, spatial_data b WHERE a.id 1 AND b.id 2;查找某个点半径5公里范围内的所有点SELECT name FROM spatial_data WHERE ST_DWithin( geom, ST_GeomFromText(POINT(-71.06 48.43), 4326), 0.05 -- 约5公里使用度为单位 );5. 常见问题解决5.1 安装错误排查如果遇到编译或安装错误可以尝试以下步骤检查所有依赖库是否已正确安装确保PostgreSQL开发头文件版本与运行的PostgreSQL版本匹配查看config.log文件中的具体错误信息尝试使用更简单的配置选项重新配置5.2 性能优化建议为几何列创建空间索引CREATE INDEX idx_spatial_data_geom ON spatial_data USING GIST(geom);使用ST_Transform函数将数据转换为适合分析的投影SELECT ST_Area(ST_Transform(geom, 3857)) FROM spatial_data;对于大型数据集考虑使用表分区5.3 升级PostGIS升级PostGIS时的一般步骤备份数据库安装新版本的PostGIS在数据库中运行升级脚本ALTER EXTENSION postgis UPDATE;6. 高级功能与扩展6.1 栅格数据处理PostGIS支持栅格数据存储和分析-- 创建栅格表 CREATE TABLE raster_data ( rid serial PRIMARY KEY, rast raster ); -- 加载栅格数据通常使用raster2pgsql工具 -- raster2pgsql -s 4326 -I -C -M myraster.tif -F -t 100x100 public.raster_data | psql -d gisdb6.2 三维数据处理PostGIS支持三维几何体-- 创建三维点 SELECT ST_AsText(ST_GeomFromText(POINT Z (1 2 3)));6.3 网络分析与路由结合pgRouting扩展可以实现网络分析功能CREATE EXTENSION pgrouting; -- 创建路网表 CREATE TABLE roads ( id serial PRIMARY KEY, source integer, target integer, cost double precision, geom geometry(LineString, 4326) );7. 实际应用案例7.1 地理编码与反向地理编码使用Tiger地理编码器将地址转换为坐标SELECT g.rating, ST_X(g.geomout) AS lon, ST_Y(g.geomout) AS lat, (g.addy).address AS stnum, (g.addy).streetname AS street, (g.addy).streettypeabbrev AS styp, (g.addy).location AS city, (g.addy).stateabbrev AS st,(g.addy).zip FROM geocode(1600 Pennsylvania Ave NW, Washington, DC 20500) AS g;反向地理编码将坐标转换为地址SELECT (r.addy).address, (r.addy).streetname, (r.addy).streettypeabbrev FROM reverse_geocode( ST_GeomFromText(POINT(-77.03655 38.8977), 4326) ) AS r;7.2 空间分析与统计计算多个几何图形的并集SELECT ST_AsText(ST_Union(geom)) FROM spatial_data;计算几何图形的凸包SELECT ST_AsText(ST_ConvexHull(ST_Collect(geom))) FROM spatial_data;8. 维护与管理8.1 数据库维护定期执行VACUUM ANALYZE以保持数据库性能VACUUM ANALYZE spatial_data;对于大型更新后重建空间索引REINDEX INDEX idx_spatial_data_geom;8.2 备份与恢复使用pg_dump备份包含空间数据的数据库pg_dump -Fc -f gisdb.backup gisdb恢复备份pg_restore -d gisdb gisdb.backup8.3 性能监控查看空间索引使用情况SELECT * FROM pg_stat_user_indexes WHERE indexrelname idx_spatial_data_geom;检查空间查询性能EXPLAIN ANALYZE SELECT name FROM spatial_data WHERE ST_DWithin(geom, ST_GeomFromText(POINT(-71.06 48.43), 4326), 0.05);

相关推荐

Java高频坑排查地图:从语义、并发到框架的定位顺序
Java高频坑排查地图:从语义、并发到框架的定位顺序

社区问答区里泡久了,你会发现 Java 板块的提问翻来覆去就那么几类:一段代码跑出来的结果和预期不一样、线上偶发一个说不清的异常、某个注解加了却像没加。标题起得五花八门,点进去看,根子大多落在几个老地方——对象语义没吃透、… · 2026/11/4 12:16:30

网络安全潜力领域:ICS、太空与医疗设备安全
网络安全潜力领域:ICS、太空与医疗设备安全

1. 网络安全行业的隐秘赛道:被低估的潜力领域在网络安全行业摸爬滚打多年后,我发现一个有趣现象:大多数人只盯着防火墙、渗透测试这些热门领域,却忽视了那些真正具有爆发潜力的小众方向。就像当年云计算刚兴起时,只有少… · 2026/11/4 14:08:48

使用nvm高效管理Node.js多版本开发环境
使用nvm高效管理Node.js多版本开发环境

1. 为什么需要nvm管理Node.js版本 作为前端开发者,我经常遇到这样的困境:接手的老项目使用Node.js 12.x,而新项目要求16.x,同时本地开发的工具链又依赖最新的18.x。每次切换项目都要重装Node.js,不仅浪费时间&#xff… · 2026/11/4 14:07:55

电工证赵丙书丢了怎么补办?官方报名入口在哪?
电工证赵丙书丢了怎么补办?官方报名入口在哪?

电工证赵丙书丢了怎么补办?官方报名入口在哪? 怕考不过白交培训费?很多刚接触电工证赵丙书的新手,尤其是新乡初次报考人员,最容易踩的坑就是对流程不了解,补办也不清楚,导致耽误工作或被单位处罚。本文围绕电工证赵丙书的常见问题,从电子证书查询、补… · 2026/11/11 18:01:57

岗位证书是特种工吗值不值得考全流程避坑指南
岗位证书是特种工吗值不值得考全流程避坑指南

岗位证书是特种工吗值不值得考全流程避坑指南 不知道去哪报名怕被中介坑,又担心花了钱考了证没用,这是很多想考特种作业证的人的普遍心态。特别是周口地区不少工人从农业转岗到建筑、电力、制造等行业后,面临的第一道门槛就是特种作业证。那么… · 2026/11/11 18:01:57

水电工电工证过期别慌!郑州报考避坑指南教你一步到位
水电工电工证过期别慌!郑州报考避坑指南教你一步到位

水电工电工证过期别慌!郑州报考避坑指南教你一步到位 你是不是最近才发现自己的水电工电工证已经过期了?心里慌得不行,不知道去哪里报名,怕被中介坑,还怕流程复杂?别急,本文就是为你量身打造的【郑州报考避坑指南】,帮你理清思路,避开那些常见的陷阱… · 2026/11/11 18:01:57

电工证原件掉了怎么办 在哪考补办流程全解析
电工证原件掉了怎么办 在哪考补办流程全解析

电工证原件掉了怎么办 在哪考补办流程全解析 之前考的证在外省能不能转过来?这事儿我见过太多了,有人跑了几趟办事大厅才弄明白,有人因为没搞清流程多花了钱还耽误了工作。今天咱们就来聊聊 电工证原件掉了怎么办 ,特别是 在哪考 、 怎么补办… · 2026/11/11 18:01:57

南京溧水区电工证值不值得考?怕考不过白交培训费?这几点必须知道
南京溧水区电工证值不值得考?怕考不过白交培训费?这几点必须知道

南京溧水区电工证值不值得考?怕考不过白交培训费?这几点必须知道 你是不是也担心,花了钱去培训,结果考试没通过,钱就打水漂了?南京溧水区电工证值不值得考?这可能是很多人在考虑报考前最关心的问题。其实,考电工证不只是为了拿个证,更是为了以后的就… · 2026/11/11 18:01:57

怎么审特种作业操作证网上查询全攻略
怎么审特种作业操作证网上查询全攻略

怎么审特种作业操作证网上查询全攻略 你是不是也遇到过这样的问题?手里拿着一份工作offer,却因为没有特种作业操作证被卡住?现在越来越多的岗位,尤其是建筑、电力、化工等行业,都明确要求持证上岗。… · 2026/11/11 18:00:57

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/11 12:18:07

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/10 17:46:39

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/11 17:14:54

_中职电工证最新政策解读
_中职电工证最新政策解读

中职电工证在哪考?工地太忙根本没时间复习考试的救星来了 工地太忙根本没时间复习考试,这是很多正在备考 中职电工证 的建筑工友的真实写照。你不是不想考,而是真的没时间。但别担心,这期内容是 新乡初次报考人员… · 2026/11/11 0:00:52

昆明电工证培训价格值不值得考?老电工告诉你真相
昆明电工证培训价格值不值得考?老电工告诉你真相

昆明电工证培训价格值不值得考?老电工告诉你真相 之前考的证在外省能不能转过来?这个问题是很多在外地打工、换城市生活、或者是想在昆明发展的朋友最关心的。尤其是现在云南发展快,很多企业都在招持证上岗的电工,如果你手头有证但不在本地,那这个证是不… · 2026/11/11 0:00:52

特种电缆张工网上查询全攻略:外省证如何转过来
特种电缆张工网上查询全攻略:外省证如何转过来

特种电缆张工网上查询全攻略:外省证如何转过来 之前考的证在外省能不能转过来?这是很多特种作业从业者最关心的问题,尤其是像特种电缆张工这类证书,直接关系到日常工作是否合规、能否顺利晋升。很多小伙伴因为证书归属地的问题,陷入职业发展的瓶颈,甚至… · 2026/11/11 0:00:52

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 20:19:29

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/10 19:22:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/11 17:15:20

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码