st_length( st_geographyfromtext( st_astext( st_intersection( ST_MakeValid(a.geom), ST_MakeValid(b.geom) ) ) ) ) AS acrossLength;
---------------------------------------------------------------------------------------------- -1.SQL测试
select * from bs.s_explorationpoint where upper(exppointid) like '%XK0%';
select * from lf.sys_layer where url is not null and serve_type='WMS' and data_type in ('工程项目','工程项目-地灾类','工程项目-测量类','工程项目-洞库类','工程项目-勘察类') order by id;
insert into lf.sys_layer (pid,cn_name,en_name,url,type,level,order_num,is_show,create_user,serve_type,data_type,elev) values
  (423, '地面层', 'fushun_site', 'tileset/o/39HBFG/tileset.json', 2, 3, 5, 0, 1, 'Tileset', '工程测量模型', 1200);
update lf.sys_layer set elev=118,cn_name='地面层' where id=427;

select concat(gb, '_', name) from bd.dlg_agnp limit 10;
select a.*, fn_uname(create_user) createName, fn_uname(update_user) updateName from lf.sys_dict a limit 10
select * from lf.sys_download where position('管道基础大数据平台' in descr)>0 order by id desc;
select ST_AsText(geom) "geom", a.*, fn_get_fullname(a.depid, 1) depName, fn_get_fullname(a.dirid, 2) dirName, fn_uname(create_user) createName, fn_uname(update_user) updateName from lf.sys_publish a

-- 添加节点
alter table lf.sys_layer add column pubid integer;
insert into lf.sys_layer (pid,cn_name,en_name,type,level,order_num,is_show,create_user,data_type) values (0,'影像','img',1,1,3,0,1,'影像数据');
insert into lf.sys_layer (pid,cn_name,en_name,type,level,order_num,is_show,create_user,data_type) values (430,'自动发布模型','auto_model',1,2,25,0,1,'自动发布模型');
select * from lf.sys_layer order by id desc limit 20;

select * from lf.sys_attach where tab = 'bs.s_explorationpoint' and tab_guid in (select eventid from bs.s_explorationpoint where exppointid = '001')
select * from lf.sys_meta where id in (1523,1525)

-- update lf.sys_meta set path = '1\' || guid || '.' || type where id in (1523, 1525);
select * from lf.sys_publish;      -- delete from lf.sys_publish
select * from lf.sys_meta_pub;     -- delete from lf.sys_meta_pub
select * from lf.sys_layer order by id desc limit 20;     -- delete from lf.sys_layer where id > 441;

select coalesce(max(order_num), 0) + 1 from lf.sys_layer where pid = (select id from lf.sys_layer where cn_name = '自动发布模型' limit 1);
select * from lf.sys_meta where id in (1523,1529,1525);
select * from lf.sys_meta where type='gdb' or position('gdb' in name) > 0;

select st_astext(geom) from bd.b_borehole limit 10;
select count(*) from bd.b_borehole -- 357824
select * from bd.b_borehole limit 10;

select * from lf.sys_layer order by id desc;
select * from lf.sys_publish
select length('a31a2492-66f0-430a-875b-24eb6f4752c2')














---------------------------------------------------------------------------------------------- -1.更新钻孔
select count(*) from bd.b_borehole; -- 357824
select count(*) from lf.sys_attach; -- 357880 = 56 + 357824
select * from bd.b_borehole limit 10; -- 基础钻孔

-- update bd.b_borehole set path = 'Drill\' || path;
-- insert into lf.sys_attach (name, guid, path, tab, tab_guid)
select substr(path, length(path) - position('\' in reverse(path)) + 2), eventid, path, 'bd.b_borehole', eventid from bd.b_borehole;
---------------------------------------------------------------------------------------------- 00.SQL查询
insert into lf.sys_meta_pub (metaid, pubid) select 1, 1 from (select 1) temp where not exists (select 1 from lf.sys_meta_pub where metaid = 1 and pubid = 1);

select * from bd.dlg_agnp where ST_Intersects(geom, ST_Buffer(ST_PointFromText('POINT (100.746244878 35.588071316)', 4326), 10.0 / 1852 / 60)) limit 20;
select * from bd.dlg_agnp where ST_Intersects(geom, ST_Buffer(ST_PointFromText('POINT (100.746244878 35.588071316)', 4326), 10.0 * 0.00000899928)) limit 20;

select * from bd.dlg_agnp where ST_Intersects(geom, 
  ST_GeomFromText('POLYGON((100.746245 35.588161,100.746167 35.588135,100.746134 35.588071,100.746167 35.588008,100.746245 35.587981,100.746323 35.588008,100.746355 35.588071,100.746323 35.588135,100.746245 35.588161))', 4326)
)

select * from bd.dlg_25w_boul where ST_DWithin(geom, ST_GeomFromText('POINT (101.9281 36.58675)', 4490), 10000.0 / 1852 / 60) = true limit 20;

select id,cn_name,en_name,url,serve_type,data_type from lf.sys_layer where url is not null and
  serve_type='WMS' and data_type in ('工程项目','工程项目-地灾类','工程项目-测量类','工程项目-洞库类','工程项目-勘察类') order by id;

select modular1,modular2 from lf.sys_operate where modular1 not in ('综合展示','数据质检','数据管理','数据交换','服务管理','系统对接','运维管理');
delete from lf.sys_operate where modular1 not in ('综合展示','数据质检','数据管理','数据交换','服务管理','系统对接','运维管理');
select id,cn_name,elev from lf.sys_layer where cn_name in ('火车站','地下管线','中卫站','庆阳站','地层示例');

select * from lf.sys_user where uid='FME';
select * from lf.sys_token where token='c36e4f94-dfde-401e-9967-2c4a449f1300';
update lf.sys_token set type=1,create_user=61,duration=5256000,create_time='2023-03-03 19:00:00',expire='2033-03-03 19:00:00'
where token='c36e4f94-dfde-401e-9967-2c4a449f1300';

select gid, pipename, segname, ST_AsText(ST_LineMerge(geom)) "wkt"
from bs.m_pipesegment
where pipename is not null and not ST_IsEmpty(geom)
order by pipename, segname;
---------------------------------------------------------------------------------------------- 01.创建空间扩展
create extension postgis;
create extension pgrouting;
create extension postgis_raster;
create extension postgis_topology;
create extension fuzzystrmatch;
create extension postgis_tiger_geocoder;
create extension address_standardizer;
create extension "uuid-ossp";

select uuid_generate_v4();                    -- uuid，36位
select split_part('12.34.56.78', '.', 1);     -- 切割
select substr('FY2021', 3, 2);                -- 提取
select substr('FY2021', 3);                   -- 提取
select substring('FY2021' FROM 3 for 2);      -- 提取
select position('23' in 'w123456');           -- 位置
select md5('');                               -- MD5
select concat('aa', 'bb');                    -- 连接
select concat_ws('_', 'a', 'b');              -- 连接
select chr(97);                               -- ACSII值转字符
select ascii('x');                            -- 字符转ACSII值
select to_hex(31);                            -- 转16进制
select length('aabbcc');                      -- 字符长度
select reverse('aabbcc');                     -- 反转
select initcap('aabbcc');                     -- 首字母大写
select replace('aabbcc', 'bc', 'xy');         -- 替换
select left('abcde', 2);                      -- 左截取
select right('abcde', 2);                     -- 右截取
---------------------------------------------------------------------------------------------- 02.查询连接数
show max_connections;
select count(1) from pg_stat_activity;

-- 查询表架构和表名
select oid,table_catalog,table_schema,table_name
from information_schema.tables t1, pg_class t2 
where table_schema = 'bd' and t1."table_name" = t2.relname
order by table_catalog,table_schema,table_name;

-- 查询字段信息
select e.table_catalog, e.table_schema, c.relname "tab", cast(obj_description(c.oid) as varchar) "desc", a.attnum "num", a.attname "col",
  d.typname "type", concat_ws('', d.typname, SUBSTRING(format_type(a.atttypid, a.atttypmod) from '(.*)')) "type2", b.description "bak"
from pg_attribute a left join pg_description b on b.objoid = a.attrelid and b.objsubid = a.attnum
  left join pg_class c on a.attrelid = c.oid
  left join pg_type d on a.atttypid = d.oid
  left join information_schema.tables e on e.table_name = c.relname
where a.attnum >= 0 and reltype > 0 and a.attname = 'updateuser' and d.typname != 'int4' --and relnamespace in (29257,20582)
order by c.relname desc, a.attnum asc;

select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from pg_constraint inner join pg_class 
on pg_constraint.conrelid = pg_class.oid inner join pg_attribute on pg_attribute.attrelid = pg_class.oid and pg_attribute.attnum = pg_constraint.conkey[1]
inner join pg_type on pg_type.oid = pg_attribute.atttypid where pg_class.relname = 'sys_user' and pg_constraint.contype='p';
---------------------------------------------------------------------------------------------- 03.查询
select depid from bd.dlg_25w_boul where depid > 0 and depid != ALL(fn_rec_array(38, 'dep'))
and ST_Intersects(geom, ST_PolygonFromText('POLYGON ((115.94927385452 32.3754479115071 0,121.989371092554 32.2766788010181 0,121.850621222894 29.6874200067864 0,115.9727267226 29.7835368627922 0,115.94927385452 32.3754479115071 0))', 4490))
group by depid;

select * from lf.sys_dir where id in (select min(id) from lf.sys_dir where name in ('测量（ESV）','勘察（EGE）','地灾（EGD）','洞库（EGD）') group by name);
select * from lf.sys_dir where pid = 1;
select * from lf.sys_dir order by id;

select * from lf.sys_token where create_time >= '2022-09-29' and create_time <= '2022-09-30';

select * from lf.sys_token where to_char(create_time,'yyyy-MM-dd') = '2022-09-30';

select fn_rec_query(depid,'dep') depName,fn_rec_query(dirid,'dir') dirName,fn_ver(verid) verName,fn_uname(createuser) createName,fn_uname(updateuser) updateName from bd.dlg_agnp limit 5;

select ns,tab from lf.sys_dict a where not exists (select id from lf.sys_dict b where b.ns=a.ns and b.tab=a.tab and b.field='gid') group by ns,tab; -- 查询字典中不存在gid的表
----------------------------------------------------------------------------------------------
