WebGIS结课大作业记录(主要靠编故事)

发布于 2023-05-29  487 次阅读


每到期末都想给学期初选课的自己俩个大嘴巴子,现在更想给上第一节课时给老师画饼的自己一个大逼斗。现在离截止日期还有三天,看看三天时间能编出一个什么样的webgis项目。

首先思考一下系统架构:

数据库就用PostgreSQL,毕竟我们组的矢量数据都太大了,动辄几十万地块,不用postgis的r树空间索引的话加载太慢了。目前设想是将矢量数据的位置数据和属性数据分开存储,不想用简单的属性表来描述,之前每个月的数据都是由多个数据融合得到,感觉这点可以做改进,比如这个地块这个月5号有一份数据,25号有一份数据,或者还有不同卫星的数据,以前总是求个平均,然后就记载属性表里当作这个月的属性值了,这样丢失了很多有效信息而且不够准确,肯定会影响后续模型的精度,所以要是把属性数据用一个数据专门记录,包括信息来源,时间,分辨率,精度等等,肯定对后续处理有好处。当然不知道时间来不来得及。

后端的话就是GeoServer+MyBatis吧,之前跟老师吹牛逼用Springboot,估计是来不及现学了。

前端的话就是Cesium也够用了。

首先准备做个基础的数据展示,最好能获取属性数据用echarts之类的库画个图表。

此外的话再编个故事吹个高性能处理平台,从GEE自动下载数据赋值到地块,其实就是写个爬虫自动运行GEE脚本,然后再调用之前GIS开发课写的GDAL代码做个分区统计。

初步设想是这样,然后开始开发(各种调包,复制粘贴)

postgreSQL和GeoServer之前都做过,轻车熟路,Cesium没用过,反正JS包,直接下载放文件根目录,抄一下老师的html代码,ok成功运行。之后就是连接GeoServer发布的数据,设置初始视角位置。

连接GeoServer时需要启用GeoServer的跨域,按网上步骤来重启GeoServer直接无法访问了,仔细一看,新版web.xml的配置代码和旧版不一样,复制过来就好了。

geoserver安装及跨域问题解决方案_1 + 1=王的博客-CSDN博客

新版长这样

    <filter>
      <filter-name>cross-origin</filter-name>
      <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
      <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>*</param-value>
      </init-param>
      <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
      </init-param>
      <init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>*</param-value>
      </init-param>
    </filter>

旧版长这样

<filter>
    <filter-name>cross-origin</filter-name>
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
    <init-param>
      <param-name>chainPreflight</param-name>
      <param-value>false</param-value>
    </init-param>
    <init-param>
      <param-name>allowedOrigins</param-name>
      <param-value>*</param-value>
    </init-param>
    <init-param>
      <param-name>allowedMethods</param-name>
      <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
    </init-param>
    <init-param>
      <param-name>allowedHeaders</param-name>
      <param-value>*</param-value>
    </init-param>
  </filter> 

现在页面长这样

地块只是简单显示,不好看且不透明,下面用QGIS设置一下样式。

QGIS可以导出sld样式由geoserver调用

使用qgis生成SLD样式 — GeoServer 2.19.x User Manual (osgeo.cn)

之后后端就用jdbc简单写了一下属性信息的查询,前端用ECharts绘图绘制一下ndvi曲线就交差了

届ける言葉を今は育ててる
最后更新于 2023-06-29