使用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))'));
相关推荐
尘佑不尘19 分钟前
shodan5,参数使用,批量查找Mongodb未授权登录,jenkins批量挖掘
数据库·笔记·mongodb·web安全·jenkins·1024程序员节
SeniorMao0071 小时前
结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统
1024程序员节
网安_秋刀鱼1 小时前
CSRF防范及绕过
前端·安全·web安全·网络安全·csrf·1024程序员节
WW、forever1 小时前
【ArcGIS Pro实操第4期】绘制三维地图
1024程序员节
记录学习-python1 小时前
Django-cookie,session
1024程序员节
b21431241 小时前
【运动的&足球】足球运动员球守门员裁判检测系统源码&数据集全套:改进yolo11-DBBNCSPELAN
1024程序员节
聪明的墨菲特i2 小时前
Vue组件学习 | 二、Vuex组件
前端·vue.js·学习·前端框架·1024程序员节
长潇若雪2 小时前
结构体(C 语言)
c语言·开发语言·经验分享·1024程序员节
DARLING Zero two♡3 小时前
关于我、重生到500年前凭借C语言改变世界科技vlog.12——深入理解指针(2)
c语言·开发语言·科技·1024程序员节
独行soc3 小时前
#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶之Jenkins组件
安全·jenkins·安全威胁分析·1024程序员节·shodan