需求: 实现 污染物浓度分布地图 ;
现有资源:1)服务端利用插值算法 生成了 非常多的数据,具体是 1米乘1米 区域是一个 经纬度+浓度数据;
2)前端用的 Openlayer,后端 GeoServer;数据库 PostGIS + postgresql;
我的问题是: 1) 后端的那些 数据(经纬度+浓度值), 咋存储呢? 用 PostGIS 什么数据类型 才能 用 GeoServer 生成地图服务;用点?还是 面,如果是面 1米乘1米 不得 很多经纬度数据;
2)前端 是要 根据时间 去查询 后端的 地图服务的,GeoServer 需要根据时间生成 ,比如 5分钟 一个时间点 生成一个 png地图,怎么实现呢;
3)具体 这个 地图 我也不懂,栅格的 或者,有人说等值面 ? 请给点 指导;
数据可以用点文件来存储,也可以直接处理为栅格图层存储,也可以直接用普通表来存储,根据功能来确定需要的存储方式;
栅格图层可以直接发布成浓度热力图服务,前端用openlayer可以用url加载展示;
也可以直接将经纬度和浓度以jason返回前端,前端用heatmap来渲染,代价就是传输数据量大,前端渲染压力也大,也存在泄漏数据风险,不建议采用;
根据时间查询这个功能,要求后端必须实时更新数据,数据一方面用于查询一方面用于展示,查询部分query就可以了,展示部分的话就5分钟发一个地图服务;
等值面本身也是栅格,只是浓度的一种呈现方式而已。
1) 答 :PostGIS地理数据类型现在仅支持最简单的要素,包括点(Point),线(LineString),面(Polygon),多点(MultiPoint),多线(MultiLineString),多面(MultiPolygon)以及混合数据类型(GeometryCollection); 应该是用 把数据转化成 等值面后 Polygon可以满足你的要求;
2)答:GeoServer 有 api的,自己去 百度查查;
3)等值面 可以实现,查查 这个wcontour