
postGIS
文章平均质量分 59
GIS开发者
辽宁工程技术大学硕士研究生毕业,长期从事WebGIS、移动GIS开发工作,全栈 (前端、后端、Android、小程序、H5),现任某地理信息公司研发部经理,叩叩965894265
展开
-
开VPN后,navicat连接postgresql正常,idea中代码连接数据库连线失败的解决办法
最近遇到一个问题,困扰很久都没有解决。开VPN后,navicat连接postgresql正常,idea中代码连接数据库显示连线失败的解决办法。一直困扰了,很久。最后在其他人的帮助下解决。原因与IPV4和IPV6有关原创 2025-01-08 18:43:23 · 393 阅读 · 0 评论 -
PostGIS2.4服务器编译安装
PostGIS的最新版本已经到3.5,但是还有一些国产数据库内核使用的旧版本的PostgreSQL,支持PostGIS2.4。但PostGIS2.4的版本已经在yum中找不到了,安装只能通过本地编译的方式。这里介绍一下如何在Centos7的系统上,编译部署PostGIS2.4。原创 2024-07-11 15:14:12 · 366 阅读 · 0 评论 -
基于PostGIS实现 MultiPolygon与Polygon的洞去除和MultiPolygon合并为Polygon
熟悉GIS开发的小伙伴,都知道Polygon和MultiPolygon是可以有洞的,MultiPolygon内的Polygon有可能是不相邻的。在做一些三方方平台对接时,可能出现不支持带洞的Polygon或者MultiPolygon。今天这里分享一下,原创 2024-04-16 10:40:08 · 723 阅读 · 0 评论 -
Centos服务器Open Gauss 部署
近期很多的项目由于信创要求使用一些国产的数据库,比如OpenGauss。OpenGuass是华为高斯DB的开源版,内核还是PostgreSQL,商业版是收费的。这里记录一下是如何安装部署 的。原创 2024-03-29 19:24:03 · 1927 阅读 · 0 评论 -
PostgreSQL数据优化——死元组清理
最近遇到一个奇怪的问题,一个百万级的PostgreSQL表,只有3个索引。但是每次执行insert或update语句就要几百ms以上。经过查询发现是一个狠简单的问题,数据库表太多了,需要手动清理。在 PG 中,update/delete 语句的实现通过 MVCC 机制的多版本链实现。如下图所示,更新一条元组时,会将原来的元组标记,并新增一条元组。后续的事物通过快照来判断元组的可见性。原创 2024-03-10 18:22:03 · 1855 阅读 · 0 评论 -
PostgreSQL导出表结构带注释
我们在平时开发过程中,经常会在字段的注释中,加上中文,解释字段的相关含义,也可以避免时间太久忘记这个字段代表什么,毕竟英文水平不好。我们可能要经常整理数据库表结构,提供他人去收集数据,但是导出表结构后,一列一列去加中文太麻烦了,就查询了一下相关资料,可以将表结构带着注释导出来。原创 2023-11-22 18:00:00 · 1869 阅读 · 0 评论 -
使用pg_prewarm缓存PostgreSQL数据库表
pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有的数据都装载到内存中,而pg_prewarm的功能就是完成一个张表全部进入到内存中的功能。因为对于大小超过shared_buffer/4的表进行全表扫描时,pg一般不会使用全部的shared_buffer,而是只使用很少一部分的shared_buffer。原创 2023-08-02 20:22:50 · 2290 阅读 · 0 评论 -
PostgreSQL数据库中,查询时提示表不存在的解决办法
最近遇到一个奇怪的问题,以前从来没有遇到过,在SCHEMA下执行语句时,提示表不存在,而实际这个表确是存在的,只不过是在SCHEMA下。在SCHEMA下执行这个sql语句是没有问题的。以前这样的情景都是可以正常访问的。最后经过查阅资料,才解决了这个简单的问题。原创 2023-07-31 17:42:30 · 5212 阅读 · 0 评论 -
天翼云PostgreSQL数据库安装PostGIS插件失败问题解决
唯一的解决办法,就是找一台天翼云的服务器(与数据库实例在同一个网段),在上面安装pgsql和PostGIS的相关依赖,通过pgsql命令远程操作数据库实例,按照模版创建数据库,然后添加PostGIS扩展。前面提到了,购买天翼云数据库实例后,自带的数据库无法通过前面的方式安装PostGIS插件。错误如下所示,如果你遇到这样的错误,直接通过命令新创建一个数据库,再添加插件吧!在处理空间数据时,PostgreSQL数据库一般都要安装PostGIS插件,最近一个项目中,客户在天翼云上购买了。原创 2023-07-20 18:02:30 · 849 阅读 · 0 评论 -
基于PostGIS实现大量不相邻多边形的外轮廓提取
在以前的博文中,实现过基于ArcGIS实现大量相邻行政区的外轮廓提取。最近遇到一个新的问题,在地图上一个区域内,有大量散落的多边形(可以理解为耕地或者房屋),我需要提取在这些多边形外一个多边形或外轮廓,可以理解为工作区或者行政边界。基于多边形的合并是无法实现的,这样只会将Polygon合并为MultiPolygon,无法提取出一个唯一边界。这里基于PostGIS实现了大量不原创 2022-09-02 19:04:11 · 2486 阅读 · 0 评论 -
PostgreSQL使用GROUP BY聚合后,取第一个值或最后一个值的办法
在PostgreSQL中,经常遇到使用Group By进行分类统计的SQL。在前面可以使用一些聚合函数SUM、COUNT、MAX、MIN这些。在一些特殊场景一下,比如有些字段需要取Group By后结果里的第一个或者最后一个。这个时候Pg里没有直接支持的函数,可以通过自定义函数的方式来实现。原创 2022-05-26 08:20:54 · 2953 阅读 · 0 评论 -
PostgreSQL在centos服务器上定时备份与异地备份
PostgreSQL数据库在使用过程中经常要进行定期备份,以及异地备份等操作,安装定时任务工具如果已经安装过的,可以跳过yum install vixie-cron yum install crontabs注:vixie-cron软件包是cron的主程序;crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。cron是linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:/sbin/service crond start #启动服务/s原创 2022-05-19 10:27:03 · 1156 阅读 · 0 评论 -
PostgreSQL创建用户与授权操作
创建只读用户创建用户-- 创建名为readonly,密码为123456的用户CREATE USER readonly WITH ENCRYPTED PASSWORD '123456';设置回话与事务模式只读-- 后续登录的会话或者当前事务设置为只读模式ALTER USER readonly SET default_transaction_read_only = ON;允许用户用于登录ALTER USER readonly WITH login;将Schema授权给用户原创 2022-05-18 08:22:23 · 10641 阅读 · 1 评论 -
PgAdmin出现Utility file not found. Please correct the Binary Path in the Preferences dialog的解决办法
问题在使用PgAdmin4对PostgreSQL数据库进行备份(数据库上右键,选择Backup)时,弹出了一个窗口,提示Utility file not found. Please correct the Binary Path in the Preferences dialogUtility file not found. Please correct the Binary Path in the Preferences dialog使用过很多次PgAdmin4进行数据备份,从来没有出现过这个问原创 2022-04-14 14:56:41 · 9313 阅读 · 2 评论 -
Win10安装PostgreSQL报错Problem running post-install
问题在安装PostgreSQL数据库时出现了Problem running post-install......的问题,尝试了很多个版本,从11到14都安装了一遍都是同样的问题。问题分析这个问题主要是由于安装后,系统用户没有安装文件夹内的程序的执行权限。这个时候一般程序已经安装完成,但是还没有初始化数据和注册服务。网上很多博文都是说给文件夹添加权限,然后重新安装。本人亲测,添加权限后,是没有办法运行安装包,继续安装的,会提示你选择的文件夹非空的。下面我简单记录一下我的解决方案,安装失败后,执行下面的操原创 2022-01-07 19:04:30 · 4538 阅读 · 1 评论 -
使用PostGIS实现大批点的空间聚类
遇到了一个需求,要对数据库里比较近的点进行空间和属性的聚类合并,以便在显示时避免很多点堆在一起的问题。属性聚类比较简单,这里主要讲一下在空间聚类的一些经验。目录PostGIS主要有四个关于聚类的函数ST_ClusterDBSCAN的使用方法具体使用空间聚类效果PostGIS主要有四个关于聚类的函数ST_ClusterKMeans 窗口函数,返回聚类id,基于K-means 聚类算法ST_ClusterIntersecting 对空间相交的几何体归为一类,返回的是聚类后的多边形集合,聚合函数.原创 2021-11-11 21:00:00 · 2129 阅读 · 0 评论 -
最短路径分析之两点之间的k条最短路径
目录前言Yen算法数据准备求取k条最短路径(KSP)预览结果前言在用高德地图导航的时候都会发现,高德会推荐多条线路。我们之前做的dijkstra算法只能实现两点之间的1条最短路径的计算。dijkstra算法需要和yen算法结合,才能实现获取两点之间的k条最短路径。关于后面的数据准备有疑惑的,可以参考上篇博文WebGIS开发之最短路径分析入门Yen算法首先利用Dijkstra算法求得从源节点到目的节点的第一条最短路径Q(1)。求接下来K-1条短路径时,采用递推法中的偏离路径算法思想。在求Q(i+1)原创 2021-05-22 17:27:04 · 2451 阅读 · 0 评论 -
postgresql 身份证、手机号、营业执照验证脚本
以前都是写基于后端的证件号、手机号验证,最近又数据处理人员,需要基于postgresql数据库的快速验证,在网上查询搜集了一番,资料,这里记录一下验证18位身份证号码CREATE OR REPLACE FUNCTION "public"."check_idcard"("a_sfz" varchar) RETURNS "pg_catalog"."bool" AS $BODY$DECLAREv_sfz varchar;v_i integer;v_sum integer;v_array原创 2021-02-26 09:58:00 · 1303 阅读 · 1 评论 -
Centos7.4上部署PostgreSQL12和PostGIS3.0
作为一款强大的开源GIS数据库,PostgreSQL搭配PostGIS在GIS项目中有广泛的应用。截止到发文的日期,PostgreSQL最新版本是12,PostGIS也推出了3.0。这里我就来介绍一下如何在Centos7.4上部署PostgreSQL。安装PostgreSQL安装rpmyum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch原创 2021-01-29 15:42:15 · 1339 阅读 · 0 评论 -
基于Postgresql和PostGIS实现火星坐标系、百度坐标系、WGS84坐标系、CGCS2000坐标系互转
背景最近有一个需求,需要将WGS84转成火星坐标系。个人觉得在代码中逐个点坐标进行转换,太麻烦,而且效率低。PostGIS的st_transform虽然可以进行坐标转换,但是不支持国内这些坐标系。最后在网上找了有人编写的一个***pg-coordtransform***库,可以在火星坐标系、百度坐标系、WGS84坐标系、CGCS2000坐标系之间互转,部署也很简单。使用过程部署Pos...原创 2020-04-08 11:46:13 · 6584 阅读 · 3 评论 -
如果使用PostGIS的ST_Area函数计算多边形面积
问题最近遇到了一个很奇怪的问题,是使用ST_Area计算出的面积特别小。select st_area(ST_SetSRID(ST_GeomFromText('POLYGON ((115.440261 33.8547281, 115.4400647 33.8548702, 115.4403265 33.8549768, 115.4404674 33.8549267, 115.4...原创 2020-03-08 12:06:55 · 9412 阅读 · 3 评论 -
shp文件自相交处理
今天基于GDAL使用shp文件对栅格影像进行裁剪时出现了下面的问题,提示多边形自相交了Warning 1: Ring Self-intersection at or near point 112.48666420300003 34.830899357000078ERROR 1: Cutline polygon is invalid.很多人的第一反应是使用ArcGIS进行**拓扑检查*...原创 2019-11-28 14:44:31 · 9036 阅读 · 2 评论 -
基于postGIS的室内地图最短路径算法四
在上一篇博文基于postGIS的室内地图最短路径算法三,虽然路径分析的结果,最后返回了起点到终点的完整线路,但是可能产生起点或终点到路网的连线穿越障碍物的情况,这里就需要用虚线表示。 这样就需要将路径分析的结果分三条记录返回,起点到路网、路网中路径、路网到终点线,并需要对这三段线进行区别。然后在Goeserver中配置样式。运行结果如下图所示:数据库代码:--DROP F...原创 2018-03-28 10:57:57 · 1890 阅读 · 5 评论 -
基于postGIS的室内地图最短路径算法三
在上一篇基于postGIS的室内地图最短路径算法二中,在路径搜索中加入了楼层分析的概念。在使用过程中会产生一个问题就是,只给出了路网上的线,没有给出起点、终点到路网的连线,用户体验很差。 在这里加入了起点终点到路网分析结果的连线,最后返回,geoserver和leaflet部分代码同前两篇路径分析代码一致,这里就只给出数据库代码:DROP FUNCTION pgr_flo...原创 2018-03-28 10:52:03 · 2323 阅读 · 2 评论 -
PostGIS算法示例
1 点的最近点查询select smoke, ST_AsGeoJSON(geom) as geom, company, address from power t order by ST_Distance(t.geom,ST_GeometryFromText('POINT(113.77990722656251 34.63320791137959)',4326)) limit 143...原创 2018-01-19 09:06:10 · 1877 阅读 · 0 评论 -
基于Leaflet的室内地图最短路径查询部分
使用LeafLet做的最短路径查询,服务使用的是前两篇博文中的地图服务,只是 将OpenLayer换成了LeafLet;效果图:核心部分代码如下:var route = { num: false, startPoint: null, endPoint: null, routingLayer: null, startMarker: null原创 2018-01-17 09:47:48 · 4682 阅读 · 2 评论 -
基于postGIS的室内地图最短路径算法二
上一篇的室内地图算法,在新版本的PostgreSQL中,无法使用,提示函数过时,因此修改了以下算法DROP FUNCTION pgr_floor(tbl varchar,startx float, starty float,endx float,endy float,fnumber integer);--tbl路网表名--startx起点经度--starty起点纬度--endx终点经度原创 2018-01-15 19:29:16 · 1688 阅读 · 1 评论 -
基于postGIS的室内地图最短路径算法一
上篇博文上提到了最短路径算法,最近在研究室内地图;因为不同楼层的原因,需要对多楼层路网数据做统一处理。然后才能方便的进行路径分析。这里对比上一篇的文章中的算法,这里加入了楼层参数,代码如下:--tbl路网表名--startx起点经度--starty起点纬度--endx终点经度--endy终点纬度--fnumber楼层CREATE OR REPLACE functio原创 2018-01-15 19:27:07 · 2130 阅读 · 2 评论 -
postGIS错误line_locate_point: 1st arg isnt a line
在做posgis相关的数据库操作时,产生了错误line_locate_point: 1st arg isnt a line。 最后查询发现是ST_LineLocatePoint(geom,geom)空间计算函数,第一参数LINESTRING类型的geom数据,第二个参数是一个点。 本人遇到这个错误,是因为第一个参数里放入了MultiLineString类型的数据。最后改用...原创 2018-05-30 08:46:22 · 2191 阅读 · 3 评论 -
PostGIS地图路径算法优化,解决MultiLineString类型计算错误
使用前面博客计算路径的时候,有时候会产生MultiLineString不支持计算的问题,针对这个问题进行了优化。-- FUNCTION: public.pgr_road_compute(double precision, double precision, double precision, double precision)-- DROP FUNCTION public.pgr_road_c...原创 2018-05-30 08:51:16 · 3920 阅读 · 4 评论 -
ArcGIS 10.5连接PostgreSQL数据库
安装检测ArcGIS10.5支持的PotgreSQL版本只有9.5、9.4、9.3,ArcGIS支持的数据库和版本你都可以在ArcGIS Desktop安装目录下的DatabaseSupport文件夹下找到。若数据库安装在windows平台,需要 Microsoft Visual C++ 2013 Redistributable Package (x64) 支持。若Desktop和Po...原创 2018-07-27 09:42:56 · 11880 阅读 · 1 评论 -
PostGIS最短路径计算脚本
这个路径导航计算脚本从前面的室内路径导航的脚本上修改而来,将室内楼层序号去掉,导航结果分为三段,分别为起点到路网连线、路线连线、路网到终点连线。脚本如下:-- DROP FUNCTION pgr_road(character varying, double precision, double precision, double precision, double precision);...原创 2019-01-25 17:48:39 · 1393 阅读 · 0 评论 -
Spring boot+Mybatis+Postgresql框架搭建
没有接触Spring boot之前以为它是一个很困难的框架,接触之后才发现它非常简单,框架搭建仅仅使用idea就可以完成。准备安装Postgresql数据库,并在数据库中新建test表,id、name、year三个字段用来测试搭建教程新建项目 选择项目类型-spring Intializr和jdk版本 配置项目信息,主要在Pom.xml中使用 选择依赖web、Mybatis、...原创 2019-04-04 17:35:14 · 3543 阅读 · 3 评论 -
postgresql建立表后设置主键自增长
postgresql创建表时,可以设置主键为自增长create table test_b( id serial PRIMARY KEY, name character varying(128)); 创建表完成后,就只能给主键创建序列了CREATE SEQUENCE farms_id_seqSTART WITH 1INCREMENT BY 1NO MINVALU...原创 2019-05-16 17:28:18 · 1363 阅读 · 0 评论 -
基于python的批量excel坐标数据导入Postgresql空间数据库
有一份csv格式的坐标数据,需要将它导入Postgresql数据库,方便进行后期分析,坐标需要转换为geometry类型。首先我将它转换成了excel,方便python利用库进行读取。数据概览数据demo如下:包含一个起点坐标、一个终点坐标、和一个路线轨迹坐标串,用“#”好分割 。数据库字段和格式如下图所示Python代码import xlrdimport p...原创 2019-08-19 15:47:08 · 1939 阅读 · 2 评论 -
基于PostGIS的轨迹数据修复
目前有大量的共享单车数据,轨迹数据确是无序的,只有起点和终点坐标是正确的,中间的节点坐标是乱序的。因此需要对轨迹数据进行修复。考虑的效率和操作的方便,选择在Postgresql数据库中,利用PostGIS插件对轨迹进行修复。现状在postgresql中进行预览如下图所示:可以看到中间的轨迹不仅混乱而且几乎没法看,不能称之为轨迹数据。思路因为起点和终点固定,中间点是乱序的。有...原创 2020-04-02 08:31:14 · 1459 阅读 · 0 评论 -
postGIS+pgrouting+geoserver+openlayers实现最短路径分析
最短路径分析原理阐述:将路网数据存储在postgresql中,构建拓扑,使用pgrouting写出一个查询最短路径的功能函数,在GeoServer中配置sqlview图层,调用前面发布的函数,客户端访问WMS服务,同时将起点终点坐标作为参数传过去,GeoServer就可以返回最短路径瓦片图层,叠加在当前地图就可以了。效果图如下:原创 2018-01-15 19:19:10 · 5542 阅读 · 15 评论