#1024程序员节|征文#
一、目录
1. 概述
2. 几何(Geometry)类型
创建点
创建线
创建面
3. 地理(Geography)类型
地理点(GEOGRAPHY POINT)
地理线串(GEOGRAPHY LINESTRING)
地理点(GEOGRAPHY POLYGON)
二、概述
PostGIS 是一个强大的空间数据库扩展,它为 PostgreSQL 数据库添加了对空间数据的支持。
通过 PostGIS,我们可以存储、查询和分析各种几何形状和地理空间数据。
在本文中,我们将探讨如何在 PostGIS 中创建不同类型的空间数据。
三、几何(Geometry)类型
(一)、创建点 🔗
- 单个点 🔗
在 PostGIS 中,可以使用ST_GeomFromText
函数来创建单个点。
例如,要创建一个坐标为(10, 20)的点,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES (ST_GeomFromText('POINT(10 20)'));
- 带有坐标系的单个点 🔗
如果要创建带有特定坐标系的单个点,可以在ST_GeomFromText
函数中指定坐标系。
例如,要创建一个在 WGS84 坐标系下坐标为(-71.060316, 42.258729)的点,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES (ST_GeomFromText('POINT(-71.060316 42.258729)', 4326));
- 坐标系为4326的线 🔗
要创建一个在 WGS84 坐标系下的线串,可以使用以下方式。
例如,要创建一个由两个点组成的线串,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES
(ST_GeomFromText('LINESTRING(-71.060316 42.258729, -71.061 42.259)', 4326));
- 创建多点multipoints 🔗
要创建多个点组成的多点对象,可以使用ST_Multi
函数结合ST_GeomFromText
。
例如,要创建包含三个点的多点对象,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES
(ST_Multi(ST_GeomFromText('MULTIPOINT(1 1, 2 2, 3 3)')));
(二)、创建线 🔗
- 单个线 🔗
创建单个线串可以使用与创建单个点类似的方法。
例如,要创建一个由两个点组成的线串,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES
(ST_GeomFromText('LINESTRING(1 2, 3 4)'));
- 带有坐标系的单个线 🔗
带有坐标系的单个线串创建方式与带有坐标系的单个点类似。
例如,要创建一个在 WGS84 坐标系下的线串,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES
(ST_GeomFromText('LINESTRING(-71.060316 42.258729, -71.061 42.259)', 4326));
- 坐标系为4326的线 🔗
同带有坐标系的单个线的创建方式。
- 创建多点multilinestring 🔗
要创建多个线串组成的多线串对象,可以使用ST_Multi
函数结合ST_GeomFromText
。
例如,要创建包含两条线串的多线串对象,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES
(ST_Multi(ST_GeomFromText('MULTILINESTRING((0 0, 1 1),(2 2, 3 3))')));
(三)、创建面 🔗
- 单个面 🔗
创建单个多边形可以使用ST_GeomFromText
函数。
例如,要创建一个矩形多边形,可以使用以下 SQL 语句:
INSERT INTO your_table (geom)
VALUES
(ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
- 带有坐标系的单个面 🔗
带有坐标系的单个多边形创建方式与带有坐标系的单个点类似。
例如,要创建一个在 WGS84 坐标系下的多边形,可以使用以下 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));
- 坐标系为4326的面 🔗
同带有坐标系的单个面的创建方式。
- 创建多点multipolygon 🔗
要创建多个多边形组成的多多边形对象,可以使用ST_Multi
函数结合ST_GeomFromText
。
例如,要创建包含两个多边形的多多边形对象,可以使用以下 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) 🔗
创建地理点可以使用ST_GeogFromText
函数。
例如,要创建一个在 WGS84 坐标系下的地理点,可以使用以下 SQL 语句:
INSERT INTO your_table (geog)
VALUES
(ST_GeogFromText('SRID=4326;POINT(-71.060316 42.258729)'));
(二)、创建地理线串(GEOGRAPHY LINESTRING) 🔗
创建地理线串可以使用ST_GeogFromText
函数。
例如,要创建一个在 WGS84 坐标系下的地理线串,可以使用以下 SQL 语句:
INSERT INTO your_table (geog)
VALUES
(ST_GeogFromText('SRID=4326;LINESTRING(-71.060316 42.258729, -71.061 42.259)'));
(三)、创建地理点(GEOGRAPHY POLYGON) 🔗
创建地理多边形可以使用ST_GeogFromText
函数。
例如,要创建一个在 WGS84 坐标系下的地理多边形,可以使用以下 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))'));