使用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))'));
相关推荐
Hacker_LaoYi1 小时前
SQL注入的那些面试题总结
数据库·sql
Hacker_LaoYi3 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
独行soc5 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
清平乐的技术专栏6 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
cmdch201710 小时前
Mybatis加密解密查询操作(sql前),where要传入加密后的字段时遇到的问题
数据库·sql·mybatis
程序猿小柒10 小时前
【Spark】Spark SQL执行计划-精简版
大数据·sql·spark
yaosheng_VALVE12 小时前
探究全金属硬密封蝶阀的奥秘-耀圣控制
运维·eclipse·自动化·pyqt·1024程序员节
听见~12 小时前
SQL优化
数据库·sql
dami_king12 小时前
SSH特性|组成|SSH是什么?
运维·ssh·1024程序员节