PostGIS数据库操作简介
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的一些扩展和工具来实现分布式解决方案。以下是一些可能的选项:
PostgreSQL Foreign Data Wrappers (FDW):FDW允许PostgreSQL数据库访问和管理其他PostgreSQL数据库中的数据,就像它们是本地表一样。这可以用来实现一种简单的分布式解决方案,但是它可能不适合处理大规模的数据。
PostgreSQL Partitioning:PostgreSQL支持表分区,这可以用来将大表分割成小表,提高查询性能。虽然这不是真正的分布式解决方案,但是它可以用来处理大规模的数据。
Citus:Citus是一个开源的PostgreSQL扩展,它可以将PostgreSQL数据库转变为分布式数据库。Citus支持分布式表,可以将大表分割成小表,并将它们分布在多个节点上。Citus也支持分布式查询和分布式事务,这使得它可以处理大规模的数据。
Postgres-XL:Postgres-XL是一个开源的PostgreSQL扩展,它提供了一种分布式解决方案,可以处理大规模的数据。Postgres-XL支持分布式表,分布式查询和分布式事务。
请注意,这些解决方案可能需要额外的配置和管理,而且可能会影响PostGIS的性能和功能。在选择分布式解决方案时,你应该根据你的具体需求和应用场景,考虑上述因素,选择最适合你的解决方案。
PostGIS相关扩展
postgis_sfcgal:这是一个提供对SFCGAL库访问的扩展,SFCGAL是一个围绕CGAL(计算几何算法库)的C++包装库,提供了如3D交集、3D差集、3D并集、3D面积、3D体积等高级3D操作。
postgis_topology:这个扩展提供了对拓扑数据模型的支持。拓扑数据模型是一种描述地理对象之间空间关系的数据模型,它可以用来表示和查询地理对象之间的连接性和相邻性。
postgis_tiger_geocoder:这个扩展提供了对美国TIGER/Line地理编码服务的支持。地理编码是一种将地理名称(如街道地址)转换为地理坐标(如经度和纬度)的过程。
postgis_raster:这个扩展提供了对栅格数据的支持。栅格数据是一种由像素组成的地理数据,常用于表示地形、气候、土壤类型等连续变化的地理现象。
postgis_net:这个扩展提供了对网络数据模型的支持。网络数据模型是一种描述地理对象之间连接性的数据模型,常用于表示和查询道路、河流、电力线等网络结构。
postgis_pointcloud:这个扩展提供了对点云数据的支持。点云数据是一种由大量地理坐标点组成的地理数据,常用于表示和查询三维地形、建筑物、植被等地理对象。
postgis_hstore:这个扩展提供了对存储键值对的支持,这对于存储半结构化数据非常有用。
postgis_osm:这个扩展提供了对导入OpenStreetMap数据的支持。
postgis_fdw:这个扩展提供了对远程PostGIS服务器的外部数据包装器,允许你查询远程PostGIS数据库,就像它们是本地表一样。
postgis_gist:这个扩展提供了对PostGIS的GiST(通用搜索树)索引的支持,这可以显著提高空间查询的性能。
postgis_pgrouting:这个扩展提供了在PostGIS数据库中执行路由操作的功能。它可以用来计算最短路径、旅行时间和其他与路由相关的计算。
postgis_geohash:这个扩展提供了对编码和解码geohashes的功能,geohashes是一种以紧凑字符串格式表示地理坐标的方式。
postgis_fuzzystrmatch:这个扩展提供了确定字符串之间的相似性和距离的功能。
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数据库操作简介的更多相关文章
- Salesforce 数据库操作简介
Salesforce 中的数据库操作方式 Salesforce 为用户和开发者提供了四种基本的数据库操作方式: Apex 中的 DML 语句 Apex 中的 Database 类 SOQL 查询 SO ...
- 【Django】Django model与数据库操作对应关系(转)
Django对数据库的操作分用到三个类:Manager.QuerySet.Model. Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manag ...
- android中的数据库操作
如何在android中调用数据库资源 在android中主要有两种方法来实现对数据库的访问,一种是adb shell方式,另一种是通过相关的android 的java类来间接的对数据库来进行操作.其中 ...
- android中的数据库操作(转)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- Java Web的数据库操作(一)
一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库交互,JDBC在Java程序与 ...
- Java Web----Java Web的数据库操作(一)
Java Web的数据库操作 一.JDBC技术 1.JDBC简介 JDBC是Java程序与数据库系统通信的标准API,它定义在JDK的API中,通过JDBC技术,Java程序可以非常方便地与各种数据库 ...
- Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
前段时间我们游戏server升级到开发环境Java8,这些天,我再次server的线程模型再次设计了一下,耗费Lambda表情. LambdaJava代码.特别是丑陋不堪的匿名内部类,这篇文章主要就是 ...
- VC与ADO数据库操作
VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...
- Python程序练习4--模拟员工信息数据库操作
1.功能简介 此程序模拟员工信息数据库操作,按照语法输入指令即能实现员工信息的增.删.改.查功能. 2.实现方法 架构: 本程序采用python语言编写,关键在于指令的解析和执行:其中指令解析主要 ...
- Cayley图数据库的简介及使用
图数据库 在如今数据库群雄逐鹿的时代中,非关系型数据库(NoSQL)已经占据了半壁江山,而图数据库(Graph Database)更是攻城略地,成为其中的佼佼者. 所谓图数据库,它应用图理论( ...
随机推荐
- 网络应用模型的经典分类:C/S 与 P2P
网络应用无处不在,从我们日常使用的社交媒体到远程文件传输,网络应用模型是支撑这些通信和服务的基础架构.通常,这些网络应用根据其结构原理可以被大致划分为两大类:C/S(Client/Server)模型和 ...
- OpenFeign简单使用
OpenFeign入门 什么是 OpenFeign? OpenFeign是一个远程访问的组件,用于两个微服务之间互相访问的中间件 OpenFeign使用步骤 1.添加OpenFeign的依赖 < ...
- chapter1 events and probability
第一章 事件和概率 1.1 Appication: verifying polynomial identities 1.2 Axioms of probability 1.3 Application ...
- 9.Kubernetes核心技术-Controller
Kubernetes核心技术-Controller 内容 什么是Controller Pod和Controller的关系 Deployment控制器应用场景 yaml文件字段说明 Deployment ...
- 7. jenkins的代码审查
sonar基本使用 1,sonar安装和配置 SonarQube是一个用于管理代码质量的开放平台,可以快速的定位代码中潜在的或者明显的错误.目前 支持java,C#,C/C++,Python,PL/S ...
- Ymodem协议详解
Xmodem.Ymodem和Zmodem协议是最常用的三种通信协议. Xmodem协议是最早的,传输128字节信息块. Ymodem是Xmodem的改进版协议,具有传输快速稳定的优点.它可以一次传输1 ...
- 高性能计算-雅可比算法-MPI重复非阻塞优化(7)
#include <stdio.h> #include <mpi.h> #include <unistd.h> #include <stdlib.h> ...
- Spring AOP实现原理与CGLIB应用
AOP(Aspect Orient Programming),也就是面向方面编程,作为面向对象编程的一种补充,专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,在 Java EE 应用 ...
- PHP8新特性
PHP 8.1 提供的功能 枚举 Fiber(纤维) never 返回类型 readonly 属性 final 类常量 新的 array_is_list() 函数 新的 fsync() 和 fdata ...
- VTK 设置面片背面颜色
在上一篇文章切开了零件,发现零件内部和外部颜色一样,当需要不一样时,可以通过actor的SetBackfaceProperty方法设置背面属性. 代码跟上一篇几乎一样,只是给actor设置了SetBa ...