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. 网络应用模型的经典分类:C/S 与 P2P

    网络应用无处不在,从我们日常使用的社交媒体到远程文件传输,网络应用模型是支撑这些通信和服务的基础架构.通常,这些网络应用根据其结构原理可以被大致划分为两大类:C/S(Client/Server)模型和 ...

  2. OpenFeign简单使用

    OpenFeign入门 什么是 OpenFeign? OpenFeign是一个远程访问的组件,用于两个微服务之间互相访问的中间件 OpenFeign使用步骤 1.添加OpenFeign的依赖 < ...

  3. chapter1 events and probability

    第一章  事件和概率 1.1 Appication: verifying polynomial identities 1.2 Axioms of probability 1.3 Application ...

  4. 9.Kubernetes核心技术-Controller

    Kubernetes核心技术-Controller 内容 什么是Controller Pod和Controller的关系 Deployment控制器应用场景 yaml文件字段说明 Deployment ...

  5. 7. jenkins的代码审查

    sonar基本使用 1,sonar安装和配置 SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误.目前 支持java,C#,C/C++,Python,PL/S ...

  6. Ymodem协议详解

    Xmodem.Ymodem和Zmodem协议是最常用的三种通信协议. Xmodem协议是最早的,传输128字节信息块. Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点.它可以一次传输1 ...

  7. 高性能计算-雅可比算法-MPI重复非阻塞优化(7)

    #include <stdio.h> #include <mpi.h> #include <unistd.h> #include <stdlib.h> ...

  8. Spring AOP实现原理与CGLIB应用

    AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在 Java EE 应用 ...

  9. PHP8新特性

    PHP 8.1 提供的功能 枚举 Fiber(纤维) never 返回类型 readonly 属性 final 类常量 新的 array_is_list() 函数 新的 fsync() 和 fdata ...

  10. VTK 设置面片背面颜色

    在上一篇文章切开了零件,发现零件内部和外部颜色一样,当需要不一样时,可以通过actor的SetBackfaceProperty方法设置背面属性. 代码跟上一篇几乎一样,只是给actor设置了SetBa ...