postgis——几何图形创建使用

–建表

postgis=# create table t_gis(name varchar,geom geometry);
CREATE TABLE

–插入数据
插入5种基本的gis类型:
点(POINT)、线(LINESTRING)、多边形(POLYGON)、内含空洞的多边形(POLYGON with a hole)、图形集合(COLLECTION)

postgis=# INSERT INTO t_gis VALUES
postgis-#   ('Point', 'POINT(0 0)'),
postgis-#   ('Linestring', 'LINESTRING(0 0, 1 1, 2 1, 2 2)'),
postgis-#   ('Polygon', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'),
postgis-#   ('PolygonWithHole', 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))'),
postgis-#   ('Collection', 'GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))');
INSERT 0 5

–查询
可以发现直接查询结果是类似这样的(WKB):

postgis=# select name,geom from t_gis limit 1;
 name  |                    geom                    
-------+--------------------------------------------
 Point | 010100000000000000000000000000000000000000
(1 row)

geometry类型数据需要通过st_astext函数来查看(WKT)

postgis=# select name,st_astext(geom) from t_gis;
      name       |                           st_astext                           
-----------------+---------------------------------------------------------------
 Point           | POINT(0 0)
 Linestring      | LINESTRING(0 0,1 1,2 1,2 2)
 Polygon         | POLYGON((0 0,1 0,1 1,0 1,0 0))
 PolygonWithHole | POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,1 2,2 2,2 1,1 1))
 Collection      | GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0,1 0,1 1,0 1,0 0)))

PostGIS提供了两张表用于追踪和报告数据库中的几何图形(这两张表中的内容相当于元数据):
第一张表spatial_ref_sys —— 定义了数据库已知的所有空间参照系统
第二张表(实际上是视图-view)geometry_columns —— 提供了数据库中所有空间数据表的描述信息。

可以通过geometry_columns视图来查看刚刚创建的t_gis这张表的相关信息:

postgis=# select * from geometry_columns where f_table_name='t_gis';
 f_table_catalog | f_table_schema | f_table_name | f_geometry_column | coord_dimension | srid |   type   
-----------------+----------------+--------------+-------------------+-----------------+------+----------
 postgis         | public         | t_gis        | geom              |               2 |    0 | GEOMETRY
(1 row)

其中f_table_catalog,f_table_schema,和f_table_name这三列分别是数据库名、模式名、空间表名。
f_geometry_column表示表中记录几何信息的属性列的列名。
coord_dimension表示几何图形的几何纬度。
srid定义引用自spatial_ref_sys表的空间参考标识符,可以发现没有指定srid的情况下默认是0
type列定义了几何图形的类型。

如果表的srid不想使用默认值,可以通过UpdateGeometrySRID函数来修改:

postgis=# select UpdateGeometrySRID('t_gis','geom',4326);
           updategeometrysrid           
----------------------------------------
 public.t_gis.geom SRID changed to 4326
(1 row)

postgis=# select * from geometry_columns where f_table_name='t_gis';
 f_table_catalog | f_table_schema | f_table_name | f_geometry_column | coord_dimension | srid |   type   
-----------------+----------------+--------------+-------------------+-----------------+------+----------
 postgis         | public         | t_gis        | geom              |               2 | 4326 | GEOMETRY
(1 row)
发布了97 篇原创文章 · 获赞 25 · 访问量 8101

猜你喜欢

转载自blog.csdn.net/weixin_39540651/article/details/104051911
今日推荐