欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL:常见空间与属性数据库的操作

程序员文章站 2022-04-13 22:15:26
...

PostgreSQL数据库与对应的空间拓展postGIS的初步使用总结

属性操作:(以下表名用table表示,字段名用field表示)

//创建表语句:

create TABLE framework1.table1
(
  gid integer NOT NULL DEFAULT ......,
  field1 type1,
  field2 type2,
  geom geometry(PointZM),
  CONSTRAINT table1_pkey PRIMARY KEY (gid)
)

//查询语句:

select table.field from table where field = DDD;  

//插入语句:

insert into table(field1,field2,field3,field4,field5,field6) values('SS1','SS2','SS3',DD1,DD2,DD3);

//复制表中某字段的所有内容到另一字段

update table1 set field2= field1 ; 

//将表中某一字段所有值均赋为SSS

update table1 set field2= 'SSS' ; 

空间操作

//创建空间信息

select AddGeometryColumn('table_name','column_name',new_srid,'MULTIPOINT',dim); //参数依次为表名、字段名、坐标系代号、几何类型、维度

例:

select AddGeometryColumn('own_point','point_geom',4326,'MULTIPOINT',3);
//加载GIS数据,例:
insert into roads(road_id, roads_geom, road_name) values(1,st_geomfromtext('linestring(191232 243118,191108 243242)',-1),'Jeff Rd')

//转换数据显示 

select ST_AsText(geom) FROM public.table1;
select ST_AsEwkt(geom) FROM public.table1;
SELECT gid, ST_AsText(geom), ST_AsEwkt(geom), ST_X(geom), ST_Y(geom) FROM public.table1;

//显示表中任意两个几何对象的距离(第三个参数为可选项,可指定椭球参数(椭球体名、半主轴长、扁率)计算)

SELECT ST_Distance_Sphere(p1.geom,p2.geom,'SPHEROID["GRS_1980",6378137,298.257222]') FROM table1 AS p1, table2 AS p2 WHERE p1.gid > p2.gid;

//判断某点与表中几何对象的距离关系(以point(121,32)为例,找出距离在1000以内的表中所有几何对象)

select st_distance(p1.geom::geography, ST_GeomFromText('POINT(121 32)', 4326)::geography) from table1 as p1 where ST_dwithin(p1.geom::geography, ST_GeomFromText('POINT(121 32)', 4326)::geography, 1000);

类似还有st_Contains(...)函数、st_covers(..)函数等。都可以在数据库->架构->函数里查看。

具体关于geometry的几何关系的详细说明,可以参考PostGIS中的Geometry相互关系

关于PostGIS常用函数的使用,可以参考PostgreSQL+PostGIS 的使用【转】

在导入shp数据到数据库时,若没有设置srid,则会默认srid为0。可通过ST_srid(geom)函数查询。srid为0时,PostGIS无法获知你数据的坐标系,也就无法使用st_transform()函数进行转换。首先需要设置自己数据的srid。语句如下:

SELECT UpdateGeometrySRID('table','geom',4326);     
SQL语句通俗记法:

with-->“和”,as-->“指代为”,where-->“条件--当”,from-->"从哪里"

..本人新手,正在学习,持续更新,欢迎指导。