–建表
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)