首页 > 其他分享 >PostGIS的geometry类型及使用方法

PostGIS的geometry类型及使用方法

时间:2023-11-22 17:25:42浏览次数:23  
标签:CircularString geometry PostGIS 对象 SQL 类型

转:https://blog.csdn.net/supermapsupport/article/details/123573338

作者:WuMY

PostGIS中矢量数据如何存储和构造,有哪些注意事项?其空间数据模型体系又遵循哪些标准规范?本文进行了详细介绍,并提供实操内容供读者参考。

此外,Yukon构建在PostGIS的基础能力之上(参见文章:Yukon及其模块简介 ),完全兼容PostGIS的矢量数据能力。

PostGIS的geometry数据类型
geometry是PostGIS的基本空间数据类型,用于表达点线面等空间要素,具体类型涵盖了OGC的简单对象模型,并扩展实现了 SQL/MM ( ISO/IEC 13249-3 SQL Multimedia - Spatial ) Curver相关类型,定义了包含圆弧曲线的几何子对象类型 CircularString、 CompoundCurve、 CurvePolygon、MultiCurve、 MultiSurface。

OGC在 SFA( Simple Features Access Standard ) 中定义了几何对象的类型,其中包括原子类型的 Point、LineString、LinearRing 和 Polygon,以及集合类型 MultiPoint、MultiLineString、MultiPolygon 和 GeometryCollection。

以下为各几何对象的类型、构成及有效性限定:

对象分类 对象类型 描述 构成 有效性限定
SFA简单对象 POINT 点 单点 /
MULTIPOINT 多点 由n个点组成 /
LINESTRING 线,折线 由点串构成 /
LINEARRING 线环 由点串构成 首尾闭合,非自相交
MULTILINESTRING 点串 由n个线串组成 /
POLYGON 面 由n个首尾相交的线串组成 边缘为线环、内部为洞
MULTIPOLYGON 多面 由n个面组成 非覆盖、非相邻
POLYHEDRALSURFACE 多面体表面 由n个具有相邻边的Polygon组成 具有相邻边
TRIANGLE 三角形 由3个非共线顶点组成 首尾闭合、非共线
TIN 不规则三角网 由n个三角形组成 非覆盖
SQL/MM参数化对象 CIRCULARSTRING 曲线串 用点串描述,三个点确定一段圆弧 前一个圆弧的最后一个点与后一个圆弧的第一个点共用;特别地,如果圆弧的第一个点与第三个点重合,则第二个点表示圆心,以此来表达圆形
COMPOUNDCURVE 复合线 由 n 个部分组成,每个部分可以是LineString 或 CircularString 前一部分的最后一个点与后续部分的第一个点重合,保证复合线对象的连续性
CURVEPOLYGON 曲面 由 n 个部分组成,每个部分是首尾相连的 CircularString 或 LineString 或 CompoundCurve 与 Polygon 类似,都表达一个闭合的区域,区别在于是否有CircularString对象参与构造
MULTICURVE 多(曲)线 由 n 个子对象组成,每个子对象可以是CircularString 或 LineString 或 CompoundCurve /
MULTISURFACE 多面 由 n 个子对象组成,每个子对象可以是Polygon 或 CurvePolygon 类型 与 MultiPolygon类似,都表达多面对象,区别在于是否有CircularString对象参与构造
GEOMETRYCOLLECTION 复合对象 由n个任意子对象类型构成 /
(注意:以上每种类型,可以指定是否带Z或M值。例如,点可以指定为:POINT、POINTZ、POINTM、POINTZM。)

geometry的对象构成关系
点线面几何对象的关系较为清晰,当加入新的类型 CircularString 后,衍生出带参数化对象的线和面,进而构成PostGIS的全部17种子类型,见下图:

 

geometry的元数据
PostGIS中geometry元数据存储在geometry_columns中,通过该表可以查询出当前数据库中有哪些表存储了geometry及geometry的类型、坐标系信息。
用户在创建geometry类型时,PostGIS自动维护该表,其定义遵循OGC SFSQL(Simple Features for SQL)规范。

geometry_columns中字段信息描述如下:

f_table_catalog,f_table_schema,和f_table_name提供各个几何图形(geometry)的要素表(feature table),即空间数据表 的完全限定名称,分别是数据库名、模式名、空间数据表名。
f_geometry_column包含对应空间数据表中用于记录几何信息的属性列的列名。
coord_dimension定义几何图形的维度(2维、3维或4维)
srid会引用自spatial_ref_sys表的空间参考标识符
type列定义了几何图形的类型。比如"点(Point)"和"线串(Linestring)"等类型。
示例数据通过SQL语句查看:
————————————————
版权声明:本文为CSDN博主「supermapsupport」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/supermapsupport/article/details/123573338

标签:CircularString,geometry,PostGIS,对象,SQL,类型
From: https://www.cnblogs.com/gzy2016Blog/p/17849834.html

相关文章

  • flotat浮点数类型的误差问题,float a=0.1; 2-a*a*100,和int(2-a*a*100); float的误差问
    来在于洛谷的《深入浅出程序设计竞赛》(基础篇)#include<stdio.h>intmain(){ floata=0.1; printf("%f%f\n",a,a*a); printf("%d\n",int(2-a*a*100)); printf("%.10f",2-a*a*100); return0;}执行结果 原因是这样的,float是浮点数,在执行界面出现的6位小......
  • MySQL数据类型
    数据类型1.MySQL中的数据类型类型类型举例整数类型TINYINT,SMALLINT,MEDIUMINT,INTBIGINT浮点类型FLOAT,DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR,TIME,DATE,DATETIME,TIMESTAMP文本字符串类型CHAR,VARCHAR,TI......
  • 使用Geotools合并多个Geometry成一个图形
    合并Geometry针对初始geometry的个数不同,可选取多种方法:一、在geometry数量少的情况下可以直接循环调用geometry的union方法://合并图形:geometryDefault为初始图形,polygon为待合并的图形Geometrygeometry=geometryDefault.union(polygon); 二、在geometry数量比较多的......
  • 基本数据类型
    一、python3基本数据类型(一)六大标准数据类型Number(数字)String(字符串)Bool(布尔值)List(列表)Sat(集合)Tuple(元组)Dictionary(字典)在六种标准类型中不可变数据(3个):Number(数字),String(字符串),Tuple(元组)可变元素(3个):List(列表),Sat(集合),Dictionary(字典)此外还......
  • 【C语言】强制类型转换表达式
    #include<stdio.h>intmain(){ doublea=3.45; printf("%f\n\n",a); printf("%d\n\n",(int)(a)); printf("%d\n\n",(int)a); printf("%d\n\n",int(a)); /*printf("%d\n\n",inta);*/} ......
  • 自动化物流运输设备模组要选择哪种类型?
    在自动化物流运输设备中,选择合适的模组类型取决于具体的运输需求和应用场景。1、同步带模组:同步带模组是一种低噪音、低成本的物流运输设备,适用于中短距离、轻型货物的运输。它采用同步带传动的方式,具有传动准确、运行稳定、维护成本低等优点,但承载能力相对较低。同步带模组适用于......
  • javap获取jni 对应数据类型
    先用javac生成*.class文件,然后javap-cCallJni.class更多帮助:javap-help......
  • Chapter 3.1 复合类型-Arrays,Slices
    数组Arrays数组在Go中很少被直接使用,因为数组的长度被作为类型的一部分被使用[3]int[5]int是不同的类型这个数组和C语言的数组很不一样,C的数组变量就是指向数组的指针,但是offset是0你不能使用一个变量代表数组的长度,类型不是在运行时确定的,它必须在编译时确定,这......
  • JAVAOOP日历之Calendar日历类型的常见方法
    1、获取当前时间 Calendarc=Calendar.getInstance();  2、为日历对象定义一个指定日期的数据 c.set(2023,1,1); 3、为日历对象加和减年、月、日 c.add(Calendar.YEAR,2);//加2年c.add(Calendar.MONDAY,2);//加2月c.add(Calendar.DATE,2);//加2日c.......
  • redis介绍使用、数据类型的使用方法
    redis介绍与安装#1redis什么 -数据库就是个存数据的地方:只是不同数据库数据组织,存放形式不一样 -mysql关系型数据库(oracle,sqlserver,postgrasql)-非关系型数据(nosql):redis,mongodb,clickhouse,infludb,elasticsearch,hadoop。。。 -没有sql:没有sql语句-not......