说明:

最近项目中遇到一个需求,需要统计管网的长度,但管网数据量非常大,前端用openlayers接口统计直接就奔溃了。

后尝试使用调后台接口查数据库的方式,虽然可行但是又要多一层与后台交互的工作。

后来研究发现,GeoServer还能发布数据库表或视图,这样的话就可以跳过后台直接查询数据库了,完美解决了统计大数据的问题。

解决方案:

1、登陆GeoServer ==> 找到图层目录 ==> 添加新的资源

2、添加新图层里选中以PG为源的图层,点击“配置新的SQL视图”

3、从上至下,填完信息,并点击保存

4、保存sql源后,进行发布

5、依次填入正确信息即可发布

6、发布成功后,在Layer Preview里进行验证,下拉表中选则GeoJson(发布的数据库表没有图形要素信息,所以只能看到GeoJson)

7、代码调用url:

http://localhost:8080/geoserver/gas/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=gas%3Atest_pipe&maxFeatures=50&outputFormat=application%2Fjson

8、附上SQL

CREATE OR REPLACE FUNCTION public.func_pipelength()
RETURNS TABLE(pipetype integer, pipelength double precision) AS
$BODY$
BEGIN
RETURN QUERY
select 1 as pipetype,sum(st_length(geom)) as pipelength from t_pressureline tp left join t_pressureline_type tpt on tp.pressuratingcode = tpt.id where tpt.belong = 1
union
select 2 as pipetype,sum(st_length(geom)) as pipelength from t_pressureline tp left join t_pressureline_type tpt on tp.pressuratingcode = tpt.id where tpt.belong = 2
union
select 3 as pipetype,sum(st_length(geom)) as pipelength from t_pressureline tp left join t_pressureline_type tpt on tp.pressuratingcode = tpt.id where tpt.belong = 3
union
select 0 as pipetype,sum(st_length(geom)) as pipelength from t_pressureline tp left join t_pressureline_type tpt on tp.pressuratingcode = tpt.id where tpt.belong is null;
END;

问题:

在尝试过程中还是遇到不少问题的,在此记录一下,以后再用时可以继续深入研究

1、GeoServer发布后,常常遇到这个错,度娘说是返回数据的格式问题,但是不知道怎么查。

GeoServer 查询sql视图的更多相关文章

  1. Sql Server的艺术(六) SQL 子查询,创建使用返回多行的子查询,子查询创建视图

    子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中. 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据. 子查询可以在SELECT,INSERT,UPDA ...

  2. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  3. 数据库系统学习(七)-SQL语言之复杂查询与视图

    第七讲 SQL语言之复杂查询与视图 基本内容 子查询 IN与NOT IN谓词子查询 判断某一表达式的值是否在子查询的结构中 非相关子查询 相关子查询 theta some /theta all谓词子查 ...

  4. SQL复杂查询和视图(2)

    分组查询 SQL可以将检索到的元组按某一条件进行分组,分组是属性值相同的为一组 求每个学生的平均成绩 SELECT sn,AVG(score)FROM scGROUP BY sn 先按sn进行分组,即 ...

  5. [转]查询 SQL Server 系统目录常见问题

    查询 SQL Server 系统目录常见问题 http://msdn.microsoft.com/zh-cn/library/ms345522.aspx#_FAQ4 下列部分按类别列出常见问题. 数据 ...

  6. 关于SQL视图的创建和使用方法

    SQL视图的创建和使用 视图这个东西在其他的软件中,我们也经常看得到,例如word中就有视图,我们不难发现,视图似乎是一种显示方式,就像WORD一样,有几种显示版面,这就是视图,那么SQL中的视图又该 ...

  7. 查询Sql Server数据库对象结构

    查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...

  8. SQL Server T—SQL 视图 事务

    一 视图 视图是存储在数据库中的查询的SQL 语句, 视图是从一个或多个表或视图中导出的表,是一张虚表,只能对视图进行查询,不能增.删.改. 对视图进行修改要在相应的基本表中进行修改,修改会自动的反应 ...

  9. 高级数据查询SQL语法

    接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL语法, ...

随机推荐

  1. MyBatis 示例-传递多个参数

    映射器的主要元素: 本章介绍 select 元素中传递多个参数的处理方式. 测试类:com.yjw.demo.MulParametersTest 使用 Map 传递参数(不建议使用) 使用 MyBat ...

  2. abp(net core)+easyui+efcore实现仓储管理系统——EasyUI之货物管理六(二十四)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  3. MySQL基础篇(3)常用函数和运算符

    一.字符串函数(索引位置都从1开始) CONCAT(S1,S2,...Sn): 连接S1,S2,...Sn为一个字符串,任何字符串与NULL进行连接的结果都是NULL INSERT(str,x,y,i ...

  4. django-Views之常见的几种错误视图代码(三)

    1.404 page not found(找不到对应的页面) 2.500 server error(服务器错误) 3.400 bad request(无效的请求) 4.403 HTTP forbidd ...

  5. Linux下安装db2V9.7

    vi /etc/hosts(127.0.0.1 localhost192.168.1.53 linux-wmv8) vi /etc/services db2inst1 50000/tcp(加在最后) ...

  6. docker入门级详解

    Docker 1 docker安装 yum install docker [root@topcheer ~]# systemctl start docker [root@topcheer ~]# mk ...

  7. SOLID原则、设计模式适用于Python语言吗

    在阅读 clean architecture的过程中,会发现作者经常提到recompile redeploy,这些术语看起来都跟静态类型语言有关,比如Java.C++.C#.而在我经常使用的pytho ...

  8. python中基本运算符

    基本运算符 a // b 取整 a % b 取余 a ** b a 的b次方 a == b 判断运算符左右两边值是否相等 a != b 判断运算符左右两边值是否不等 a > b a >= ...

  9. Okhttp 请求流程梳理

    最近在看 Okhttp 的源码.不得不说源码设计的很巧妙,从中能学到很多.其实网上关于 Okhttp 的文章已经很多了,自己也看了很多.但是俗话说得好,好记性不如烂笔头,当你动手的时候,你会发现你在看 ...

  10. 学习笔记41_Spring.Net

    Spring.Net:由容器负责创建对象,容器读取配置文件来初始化对象,配置文件须符合 Spring.Net范式: 准备材料: Common.Loggin.dll,Spring.Core.dll 第一 ...