PostGIS数据库操作简介

PostGIS Docker安装

docker pull postgis/postgis
docker run --name postgis -e POSTGRES_PASSWORD=123456 -d -p 5432:5432 postgis/postgis

PostGIS数据库连接

DataGrip

Navicat

pgAdmin4

QGIS

HeidiSQL

DBeaver

PostGIS数据库操作

空间查询:PostGIS提供了一系列的空间函数,可以进行复杂的空间查询。例如,你可以使用ST_Contains函数来查询一个几何体是否包含另一个几何体。

SELECT * FROM table1 WHERE ST_Contains(geom1, geom2);

空间分析:PostGIS也提供了一系列的空间分析函数。例如,你可以使用ST_Distance函数来计算两个几何体之间的最短距离。

SELECT ST_Distance(geom1::geography, geom2::geography) AS distance FROM table1;

空间索引:为了提高空间查询的性能,你可以在地理数据列上创建空间索引。

CREATE INDEX table1_geom_gist ON table1 USING gist(geom);

地理数据导入和导出:PostGIS提供了一些工具来导入和导出地理数据。例如,你可以使用shp2pgsql工具来将Shapefile导入到PostGIS数据库,或者使用pgsql2shp工具来将PostGIS数据库中的数据导出为Shapefile。

地理数据类型转换:PostGIS支持多种地理数据类型,并提供了一些函数来进行数据类型的转换。例如,你可以使用ST_AsText函数来将几何体转换为WKT(Well-Known Text)格式。

SELECT ST_AsText(geom) FROM table1;

PostGIS的分布式方案

PostGIS本身并不直接支持分布式数据库,但是可以通过PostgreSQL的一些扩展和工具来实现分布式解决方案。以下是一些可能的选项:

  1. PostgreSQL Foreign Data Wrappers (FDW):FDW允许PostgreSQL数据库访问和管理其他PostgreSQL数据库中的数据,就像它们是本地表一样。这可以用来实现一种简单的分布式解决方案,但是它可能不适合处理大规模的数据。

  2. PostgreSQL Partitioning:PostgreSQL支持表分区,这可以用来将大表分割成小表,提高查询性能。虽然这不是真正的分布式解决方案,但是它可以用来处理大规模的数据。

  3. Citus:Citus是一个开源的PostgreSQL扩展,它可以将PostgreSQL数据库转变为分布式数据库。Citus支持分布式表,可以将大表分割成小表,并将它们分布在多个节点上。Citus也支持分布式查询和分布式事务,这使得它可以处理大规模的数据。

  4. Postgres-XL:Postgres-XL是一个开源的PostgreSQL扩展,它提供了一种分布式解决方案,可以处理大规模的数据。Postgres-XL支持分布式表,分布式查询和分布式事务。

请注意,这些解决方案可能需要额外的配置和管理,而且可能会影响PostGIS的性能和功能。在选择分布式解决方案时,你应该根据你的具体需求和应用场景,考虑上述因素,选择最适合你的解决方案。

PostGIS相关扩展

  1. postgis_sfcgal:这是一个提供对SFCGAL库访问的扩展,SFCGAL是一个围绕CGAL(计算几何算法库)的C++包装库,提供了如3D交集、3D差集、3D并集、3D面积、3D体积等高级3D操作。

  2. postgis_topology:这个扩展提供了对拓扑数据模型的支持。拓扑数据模型是一种描述地理对象之间空间关系的数据模型,它可以用来表示和查询地理对象之间的连接性和相邻性。

  3. postgis_tiger_geocoder:这个扩展提供了对美国TIGER/Line地理编码服务的支持。地理编码是一种将地理名称(如街道地址)转换为地理坐标(如经度和纬度)的过程。

  4. postgis_raster:这个扩展提供了对栅格数据的支持。栅格数据是一种由像素组成的地理数据,常用于表示地形、气候、土壤类型等连续变化的地理现象。

  5. postgis_net:这个扩展提供了对网络数据模型的支持。网络数据模型是一种描述地理对象之间连接性的数据模型,常用于表示和查询道路、河流、电力线等网络结构。

  6. postgis_pointcloud:这个扩展提供了对点云数据的支持。点云数据是一种由大量地理坐标点组成的地理数据,常用于表示和查询三维地形、建筑物、植被等地理对象。

  7. postgis_hstore:这个扩展提供了对存储键值对的支持,这对于存储半结构化数据非常有用。

  8. postgis_osm:这个扩展提供了对导入OpenStreetMap数据的支持。

  9. postgis_fdw:这个扩展提供了对远程PostGIS服务器的外部数据包装器,允许你查询远程PostGIS数据库,就像它们是本地表一样。

  10. postgis_gist:这个扩展提供了对PostGIS的GiST(通用搜索树)索引的支持,这可以显著提高空间查询的性能。

  11. postgis_pgrouting:这个扩展提供了在PostGIS数据库中执行路由操作的功能。它可以用来计算最短路径、旅行时间和其他与路由相关的计算。

  12. postgis_geohash:这个扩展提供了对编码和解码geohashes的功能,geohashes是一种以紧凑字符串格式表示地理坐标的方式。

  13. postgis_fuzzystrmatch:这个扩展提供了确定字符串之间的相似性和距离的功能。

  14. postgis_address_standardizer:这个扩展用于将给定的地址解析为标准格式。

默认建图层SQL


create table test_layer
(
fid serial primary key,
shape public.geometry(MultiPolygon, 4490),
test varchar
); create index spatial_test_layer_shape on test_layer using gist (shape); comment on table test_layer is '测试图层';
comment on column test_layer.fid is '要素ID';
comment on column test_layer.shape is '图形';
comment on column test_layer.test is '测试字段';

PostGIS数据库操作简介的更多相关文章

  1. Salesforce 数据库操作简介

    Salesforce 中的数据库操作方式 Salesforce 为用户和开发者提供了四种基本的数据库操作方式: Apex 中的 DML 语句 Apex 中的 Database 类 SOQL 查询 SO ...

  2. 【Django】Django model与数据库操作对应关系(转)

    Django对数据库的操作分用到三个类:Manager.QuerySet.Model. Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manag ...

  3. android中的数据库操作

    如何在android中调用数据库资源 在android中主要有两种方法来实现对数据库的访问,一种是adb shell方式,另一种是通过相关的android 的java类来间接的对数据库来进行操作.其中 ...

  4. android中的数据库操作(转)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

  5. Java Web的数据库操作(一)

    一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与 ...

  6. Java Web----Java Web的数据库操作(一)

    Java Web的数据库操作 一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库 ...

  7. Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作

    前段时间我们游戏server升级到开发环境Java8,这些天,我再次server的线程模型再次设计了一下,耗费Lambda表情. LambdaJava代码.特别是丑陋不堪的匿名内部类,这篇文章主要就是 ...

  8. VC与ADO数据库操作

    VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...

  9. Python程序练习4--模拟员工信息数据库操作

    1.功能简介 此程序模拟员工信息数据库操作,按照语法输入指令即能实现员工信息的增.删.改.查功能.   2.实现方法 架构: 本程序采用python语言编写,关键在于指令的解析和执行:其中指令解析主要 ...

  10. Cayley图数据库的简介及使用

    图数据库   在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者.   所谓图数据库,它应用图理论( ...

随机推荐

  1. mongodb插入数据不能在vue显示

    问题描述:当我们在命令行插入数据时,在MongoVUE却显示不了数据,并且查询有插入数据的数据库,如下图所示 网上资料说,这是引擎的问题,mongoDB3.2版本之后默认开启的存储引擎是wiredRi ...

  2. Go下载依赖包失败的解决方法

    jenkins构建job,执行go test命令报如下图的timeout错误 从报错信息中可以看出是因为下载依赖包超时 解决方法: go env查看go环境变量 GOSUMDB=sum.golang. ...

  3. 代码随笔-Python练习之读取本地文件

    1 import re 2 import requests 3 4 # 读取本地的xml文件 5 with open('.\lol.txt', 'r', encoding='utf-8') as f: ...

  4. docker REPOSITORY 改名

    创建新的名称: docker tag oldname:tag newname:tag 删除旧的名称: docker rmi oldname:tag

  5. salesforce零基础学习(一百四十一)刷新dev sandbox需要强制group

    本篇参考:https://help.salesforce.com/s/articleView?id=sf.data_sandbox_selective_access.htm&type=5 背景 ...

  6. 使用Roslyn的源生成器生成DTO

    前言 源生成器的好处很多, 通过在编译时生成代码,可以减少运行时的反射和动态代码生成,从而提高应用程序的性能, 有时候需要对程序AOT以及裁剪编译的dll也是需要用SG来处理的. 我们开发程序应该都绕 ...

  7. 硬件设计很简单?合宙低功耗4G模组Air780E—开机启动及外围电路设计

    ​ Air780E是合宙低功耗4G-Cat.1模组经典型号之一,上期我们解答了大家关心的系列问题,并讲解了选型的注意要点. 有朋友问:能不能讲些硬件设计相关的内容? 模组的上电开机,是硬件设计调试的第 ...

  8. 【一步步开发AI运动小程序】二十、AI运动小程序如何适配相机全屏模式?

    引言 受小程序camera组件预览和抽帧图像不一致的特性影响,一直未全功能支持全屏模式,详见本系列文件第四节小程序如何抽帧:随着插件在云上赛事.健身锻炼.AI体测.AR互动场景的深入应用,各开发者迫切 ...

  9. K均值聚类和代码实现

    K均值聚类是一种无监督学习分类算法. 介绍 对于$n$个$m$维特征的样本,K均值聚类是求解最优化问题: $\displaystyle C^*=\text{arg}\min\limits_{C}\su ...

  10. dotnet学习笔记-专题03-RabbitMQ-01

    专题03--RabbitMQ 1. RabbitMQ安装 服务端 使用如下sh脚本安装: #!/bin/sh sudo apt-get install curl gnupg apt-transport ...