OGC定义了两种描述几何对象的格式,分别是WKB(Well-Known Binary)和WKT(Well-Known Text)。 在SQL语句中,用以下的方式可以使用WKT格式定义几何对象:
几何类型     WKT格式
点     POINT(0 0)
线     LINESTRING(0 0,1 1,1 2)
面     POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))
多点     MULTIPOINT(0 0,1 2)
多线     MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))
多面     MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))
几何集合     GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))

本文通过实例演示几何对象的定义。
1.建表

CREATE TABLE postgis2d (
      id SERIAL PRIMARY KEY,
      name VARCHAR(128),
      geom GEOMETRY
    );

2.添加GIST索引

CREATE INDEX postgis2d_gix ON postgis2d USING GIST (geom);

3.插入数据
3.1 点(POINT)

INSERT INTO postgis2d (name, geom) VALUES ('p1',
      ST_GeomFromText('POINT(0 0)', 26910)
    );
    INSERT INTO postgis2d (name,geom) VALUES ('p2',
      ST_GeomFromText('POINT(5 0)', 26910)
    );
    INSERT INTO postgis2d (name,geom) VALUES ('p3',
      ST_GeomFromText('POINT(0 10)', 26910)
    );

或使用多点(MULTIPOINT)

INSERT INTO postgis2d (name,geom) VALUES ('p3',
      ST_GeomFromText('MULTIPOINT((0 0),(5 0),(0 10))', 26910)
    );

QGIS中显示几何如下:

3.2 线(LINESTRING)

INSERT INTO postgis2d (name, geom) VALUES ('L1',
      ST_GeomFromText('LINESTRING(0 0,1 1,1 2)', 26910)
    );
     
    INSERT INTO postgis2d (name, geom) VALUES ('L2',
      ST_GeomFromText('LINESTRING(1 0,2 1,2 2)', 26910)
    );

或使用多线(MULTILINESTRING)

INSERT INTO postgis2d (name, geom) VALUES ('L1',
      ST_GeomFromText('MULTILINESTRING((0 0,1 1,1 2),(1 0,2 1,2 2))', 26910)
    );

QGIS中显示几何如下:

3.3 多边形(POLYGON)

INSERT INTO postgis2d (name, geom) VALUES ('p1',
      ST_GeomFromText('POLYGON((4 0,8 0,8 4,4 0))', 26910)
    );
     
    INSERT INTO postgis2d (name, geom) VALUES ('p2',
      ST_GeomFromText('POLYGON((1 1, 2 1, 2 2, 1 2,1 1))', 26910)
    );

或使用多边形集合(MULTIPOLYGON)

INSERT INTO postgis2d (name, geom) VALUES ('p2',
      ST_GeomFromText('MULTIPOLYGON(((4 0,8 0,8 4,4 0),(1 1, 2 1, 2 2, 1 2,1 1)))', 26910)
    );

QGIS中显示几何如下:

3.4 几何集合

INSERT INTO postgis2d (name, geom) VALUES ('c1',
      ST_GeomFromText('GEOMETRYCOLLECTION(POLYGON((4 0,8 0,8 4,4 0)),LINESTRING(2 3,3 4))',26910)
    );

OGC定义的几何要素的更多相关文章

  1. OGC 的WCS WFS 及WMS 服务

    OGC--Open Geospatial Consortium--开放地理信息联盟,是一个非盈利的志愿的国际标准化组织,引领着空间地理信息标准及定位基本服务的发展目前在空间数据互操作领域,基于公共接口 ...

  2. OGC 的 WMS、WFS 及WCS服务(转)

    OGC——Open Geospatial Consortium——开放地理信息联盟,是一个非盈利的志愿的国际标准化组织,引领着空间地理信息标准及定位基本服务的发展目前在空间数据互操作领域,基于公共接口 ...

  3. Arcgis 几何网络分析

    ArcGIS:网络分析(转)   由于之前对网络分析的理解有很多问题,所以在网上找了一些资料,这是其中一篇我觉得比较好的,所以就整理了一下,发到网上来,留个底吧,呵呵 注:关于几何网络的建立见前面的& ...

  4. 如何创建一个要素数据类 IField,IFieldEdit,IFields,IFieldsEditI,GeometryDef,IGeometryDefEdit接口

    如何创建一个要素数据类 创建要素类用到了IFeatureWorkspace.CreateFeatureClass方法,在这个方法中有众多的参数,为了满足这些参数,我们要学习和了解下面的接口. IFie ...

  5. Qt+QGis二次开发:创建临时图层并添加要素

    开发环境:Win10 + VS2010 + Qt 4.8.6 + QGis 2.14.4 其实本文实现的功能类似于QGis中“添加文本数据图层”的一个简化版,本文不会涉及到对话框的使用,不通过与用户互 ...

  6. QGis C++ 开发之创建临时图层并添加要素

            开发环境:Win10 + VS2010 + Qt 4.8.6 + QGis 2.14.4 其实本文实现的功能类似于QGis中“添加文本数据图层”的一个简化版,本文不会涉及到对话框的使用 ...

  7. Direct2D教程III——几何(Geometry)对象

    目前博客园中成系列的Direct2D的教程有 1.万一的 Direct2D 系列,用的是Delphi 2009 2.zdd的 Direct2D 系列,用的是VS中的C++ 3.本文所在的 Direct ...

  8. ArcEngine开发各种几何错误代码

    E_GEOMETRY_AMBIGUOUSPARTTYPE - Static variable in interface com.esri.arcgis.geometry.esriGeometryErr ...

  9. 利用IIdentify接口实现点选和矩形选择要素

    duckweeds 原文利用IIdentify接口实现点选和矩形选择要素 Identify接口定义了获得要素图层单个要素的属性的捷径方法.它有一个Identify方法,返回一个IArray数组对象. ...

随机推荐

  1. Linux系统下RAID5和RAID10的磁盘阵列配置

    前提了解:1988年由加利福尼亚大学伯克利分校发表的文章首次提到并定义了RAID,当今CPU性能每年可提升30%-50%但硬盘仅提升7%,渐渐的已经成为计算机整体性能的瓶颈,并且为了避免硬盘的突然损坏 ...

  2. mysql Starting MySQL..The server quit without updating PID file

    可能的原因和解决办法 1.可能是/usr/local/mysql/data/rekfan.pid文件没有写的权限解决方法 :给予权限,执行 chown -R mysql:mysql /var/data ...

  3. C++Primer第五版 练习8.6答案详解

    重写7.1.1节书店程序(第299页),从文件中读取一个交易记录.将文件名作为一个参数传递给main. 本题所需源文件如下: Sales_data.h文件: #pragma once #include ...

  4. MongoDB的关闭

    关闭 1,非后台运行时,关闭对话,或者ctrl+c 2,登录数据库执行:db.shutdownServer(); 3,带数据目录,关闭服务器,安全   mongod --shutdown --dbpa ...

  5. Not so Mobile UVA - 839(二叉树的先序遍历)

    #include<iostream> using namespace std; int solve(int &W) /*这里一定要用引用,为了赋给它值*/ { int wl, dl ...

  6. k8s安装之grafana.yaml

    这个作展示,够用. 为了使用nginx统一管理, 这里将grafana放在子目录下. - name: GF_SERVER_ROOT_URL  value: "%(protocol)s://% ...

  7. php5.6 的mcrypt_encrypt 函数可以和5.5.9的行为一样

    php5.5.9 -----------------------$output = "test  php !!" $key = "abcd123456789"; ...

  8. Java中判断字符串是否为数字

    转载:https://blog.csdn.net/u013066244/article/details/53197756 用JAVA自带的函数 public static boolean isNume ...

  9. redis 缓存问题,转载:https://www.cnblogs.com/liangsonghua/p/www_liangsonghua_me_22.html

    缓存穿透: 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且处于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义 ...

  10. c语言逆序

    #include <stdio.h> #define MAXS 20 void reverse( char *p ); void reverse( char *p ) { int i = ...