使用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))'));
相关推荐
爱上口袋的天空24 分钟前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
Yang.992 小时前
基于Windows系统用C++做一个点名工具
c++·windows·sql·visual studio code·sqlite3
惜.己5 小时前
Jmeter中的断言(二)
测试工具·jmeter·1024程序员节
王ASC6 小时前
ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。ojdbc8版本23.2.0.0驱动BUG【已解决】
数据库·sql·oracle
执键行天涯8 小时前
【日常经验】修改大数据量的表字段类型,怎么修改更快
sql
sevevty-seven8 小时前
幻读是什么?用什么隔离级别可以防止幻读
大数据·sql
天涯倦客的美丽人生14 小时前
SQL递归查询树结构语法
数据库·sql
西电研梦14 小时前
考研倒计时30天丨和西电一起向前!再向前!
人工智能·考研·1024程序员节·西电·西安电子科技大学
惜.己15 小时前
Jmeter中的断言(四)
测试工具·jmeter·1024程序员节
OceanBase数据库官方博客15 小时前
OceanBase 中常用的查询语句
sql·oceanbase·分布式数据库·查询语句