openlayers+geoserver+postgre加载海量数据的办法

geoserver+postgre加载海量数据的办法

最近在开发GIS系统,碰巧遇到了海量数据加载的问题。特以博客以记之

1.openlayers解决点的海量数据加载

openlayers加载海量点数据openlayer在官网提供了支持,主要是通过聚合来实现:

https://openlayers.org/en/latest/examples/cluster.html

2.openlayers加载非点状海量数据

主要是通过postgreSql来过滤掉一部分数据,过滤通过缩放级别zoom来限制,当缩放到一定区域时逐渐提高加载的数量,使得加载的feature在缩放到指定的级别时总是大体保持相同的数量。

核心方式: 缩放级别*k >= Feature长度倒叙的列表

使用GeoServer 的SQLView

select  pipelineid,shape,tenantid,linename,devicemodel,pointlength,depth,projectid,sectionid,jobid,createtime,color,createuid,deviceid from 
(
select * ,row_number() over(partition by projectid order by ST_Length(shape) desc) as rn from pm_spatial_design_pipeline
) as r
where 1=1 and
case 
when %all%=1 then
0=0
else
rn <= %maplevel%
end and tenantid like '%tenantid%%'

在这里插入图片描述

然后请求http设置如下

let geoServerAddress = getGeoServerAddress();
    zoom = parseInt(zoom)
    if(type === 1) {
      if(zoom > 10) {
        return `${geoServerAddress}/geoserver/szygis/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=szygis:${layerName}&outputFormat=application/json&viewparams=maplevel:1;all:1;`;
      } else {
        return `${geoServerAddress}/geoserver/szygis/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=szygis:${layerName}&outputFormat=application/json&viewparams=maplevel:${(zoom * 4)};`;
      }
    } else {
      return `${geoServerAddress}/geoserver/szygis/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=szygis:${layerName}&outputFormat=application/json&srsname=`
    }

通过maplevel设置加载数量
all 是否加载所有
tenantid 租户id

这样使得始终加载的数据是常数,在全屏的时候间接的进行抽稀

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
路径分析是指在地理信息系统中,根据给定的起点和终点,在网络数据中找到最佳或最短的路径。在本例中,我们将使用PostgreSQL数据库、GeoServerOpenLayers来实现路径分析。 首先,我们需要将网络数据导入PostgreSQL数据库。我们可以使用PostGIS插件来处理空间数据,它提供了丰富的空间分析功能。将网络数据导入数据库后,我们可以使用SQL查询进行路径分析。 接下来,我们需要将数据库中的数据发布到GeoServer中。GeoServer是一个开源的地理信息服务器,它可以将数据库中的空间数据发布为Web服务。通过GeoServer,我们可以将网络数据以WMS或WFS的形式发布出去,供OpenLayers进行可视化展示和交互。 最后,我们可以使用OpenLayers来在Web页面中显示地图,并实现路径分析的可视化。OpenLayers是一个开源的JavaScript库,它提供了丰富的地图显示和交互功能。我们可以使用OpenLayers的API来加载GeoServer发布的网络数据,并通过JavaScript代码来实现路径分析的功能。例如,我们可以在地图上绘制起点和终点,并使用OpenLayers的路线计算函数来找到最佳路径,并将其显示在地图上。 在整个过程中,PostgreSQL提供了数据存储和查询的功能,GeoServer提供了数据发布的功能,而OpenLayers提供了地图的可视化和交互功能。通过这些工具的结合,我们可以实现路径分析的功能,从而为用户提供最佳或最短路径的查询和展示。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值