使用SQL在PostGIS中创建各种空间数据

#1024程序员节|征文#

一、目录

1. [概述](#1. 概述)
2. [几何(Geometry)类型](#2. 几何(Geometry)类型)
创建点
创建线
创建面
3. [地理(Geography)类型](#3. 地理(Geography)类型)
[地理点(GEOGRAPHY POINT)](#地理点(GEOGRAPHY POINT))
[地理线串(GEOGRAPHY LINESTRING)](#地理线串(GEOGRAPHY LINESTRING))
[地理点(GEOGRAPHY POLYGON)](#地理点(GEOGRAPHY POLYGON))

二、概述

PostGIS 是一个强大的空间数据库扩展,它为 PostgreSQL 数据库添加了对空间数据的支持。

通过 PostGIS,我们可以存储、查询和分析各种几何形状和地理空间数据。

在本文中,我们将探讨如何在 PostGIS 中创建不同类型的空间数据。

三、几何(Geometry)类型

(一)、创建点 [🔗](#(一)、创建点 🔗)

  1. 单个点 🔗

在 PostGIS 中,可以使用ST_GeomFromText函数来创建单个点。

例如,要创建一个坐标为(10, 20)的点,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES (ST_GeomFromText('POINT(10 20)'));
  1. 带有坐标系的单个点 🔗

如果要创建带有特定坐标系的单个点,可以在ST_GeomFromText函数中指定坐标系。

例如,要创建一个在 WGS84 坐标系下坐标为(-71.060316, 42.258729)的点,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES (ST_GeomFromText('POINT(-71.060316 42.258729)', 4326));
  1. 坐标系为4326的线 🔗

要创建一个在 WGS84 坐标系下的线串,可以使用以下方式。

例如,要创建一个由两个点组成的线串,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES 
(ST_GeomFromText('LINESTRING(-71.060316 42.258729, -71.061 42.259)', 4326));
  1. 创建多点multipoints 🔗

要创建多个点组成的多点对象,可以使用ST_Multi函数结合ST_GeomFromText

例如,要创建包含三个点的多点对象,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES
(ST_Multi(ST_GeomFromText('MULTIPOINT(1 1, 2 2, 3 3)')));

(二)、创建线 [🔗](#(二)、创建线 🔗)

  1. 单个线 🔗

创建单个线串可以使用与创建单个点类似的方法。

例如,要创建一个由两个点组成的线串,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES 
(ST_GeomFromText('LINESTRING(1 2, 3 4)'));
  1. 带有坐标系的单个线 🔗

带有坐标系的单个线串创建方式与带有坐标系的单个点类似。

例如,要创建一个在 WGS84 坐标系下的线串,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES 
(ST_GeomFromText('LINESTRING(-71.060316 42.258729, -71.061 42.259)', 4326));
  1. 坐标系为4326的线 🔗

同带有坐标系的单个线的创建方式。

  1. 创建多点multilinestring 🔗

要创建多个线串组成的多线串对象,可以使用ST_Multi函数结合ST_GeomFromText

例如,要创建包含两条线串的多线串对象,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES 
(ST_Multi(ST_GeomFromText('MULTILINESTRING((0 0, 1 1),(2 2, 3 3))')));

(三)、创建面 [🔗](#(三)、创建面 🔗)

  1. 单个面 🔗

创建单个多边形可以使用ST_GeomFromText函数。

例如,要创建一个矩形多边形,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES 
(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
  1. 带有坐标系的单个面 🔗

带有坐标系的单个多边形创建方式与带有坐标系的单个点类似。

例如,要创建一个在 WGS84 坐标系下的多边形,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES
(ST_GeomFromText('POLYGON((-71.060316 42.258729, -71.061 42.259, -71.060 42.259, -71.060316 42.258729))', 4326));
  1. 坐标系为4326的面 🔗

同带有坐标系的单个面的创建方式。

  1. 创建多点multipolygon 🔗

要创建多个多边形组成的多多边形对象,可以使用ST_Multi函数结合ST_GeomFromText

例如,要创建包含两个多边形的多多边形对象,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geom) 
VALUES
(ST_Multi(ST_GeomFromText('MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)),((2 2, 2 3, 3 3, 3 2, 2 2))')));

四、地理(Geography)类型

(一)、创建地理点(GEOGRAPHY POINT) [🔗](#(一)、创建地理点(GEOGRAPHY POINT) 🔗)

创建地理点可以使用ST_GeogFromText函数。

例如,要创建一个在 WGS84 坐标系下的地理点,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geog) 
VALUES
(ST_GeogFromText('SRID=4326;POINT(-71.060316 42.258729)'));

(二)、创建地理线串(GEOGRAPHY LINESTRING) [🔗](#(二)、创建地理线串(GEOGRAPHY LINESTRING) 🔗)

创建地理线串可以使用ST_GeogFromText函数。

例如,要创建一个在 WGS84 坐标系下的地理线串,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geog) 
VALUES 
(ST_GeogFromText('SRID=4326;LINESTRING(-71.060316 42.258729, -71.061 42.259)'));

(三)、创建地理点(GEOGRAPHY POLYGON) [🔗](#(三)、创建地理点(GEOGRAPHY POLYGON) 🔗)

创建地理多边形可以使用ST_GeogFromText函数。

例如,要创建一个在 WGS84 坐标系下的地理多边形,可以使用以下 SQL 语句:

sql 复制代码
INSERT INTO your_table (geog) 
VALUES
(ST_GeogFromText('SRID=4326;POLYGON((-71.060316 42.258729, -71.061 42.259, -71.060 42.259, -71.060316 42.258729))'));
相关推荐
得物技术2 小时前
基于ANTLR4的大数据SQL编辑器解析引擎实践|得物技术
大数据·sql
PythonFun11 小时前
Python如何制作并查询sql数据库
数据库·python·sql
ken_coding13 小时前
使用mybatis plus的@Select自定义sql时,如何实现通用的分页查询?
数据库·spring boot·sql·mybatis plus
钢板兽13 小时前
Java后端高频面经——Mysql
java·后端·sql·mysql·面试
rkmhr_sef20 小时前
MyBatis-Plus 自定义 SQL 和复杂查询
数据库·sql·mybatis
WeiLai11121 天前
面试基础--MySQL SQL 优化深度解析
java·后端·sql·mysql·面试·架构
Stark、1 天前
【MySQL数据库】SQL语法基础--DQL(入门级)
数据库·sql·mysql
GzlAndy1 天前
MySQL执行更新SQL流程
数据库·sql·mysql
好记性+烂笔头1 天前
高频 SQL 50 题(基础版)_1341. 电影评分
数据库·sql
浮华落定2 天前
自然语言转SQL之Vanna.ai:AI集成数据库
数据库·人工智能·sql