猿创征文|从JAVAER到GISER的进击之路

前言

一、结缘

       从职业之初便是一名java开发者,一直专注于java领域的开发和项目建设。在过往的项目中,最初在2013年左右,在做一个包含有地图应用的项目。可以说是第一次接触了gis,那时候还没有自研gis的需求,因为是外网项目,当时采用的是采用直接接入百度地图的方式。也是这时接触了gis,就算是与gis的结缘。初相识,觉得这打开了一个全新的世界,尤其是其推出的街景服务,以立体的模式让人直观观察这个世界,但那时候对gis的认识比较浅,没有深入到底层的一些数据处理,服务请求等等。而后,这个项目过后,基本没接触过gis项目。16年的时候,在项目中要接入一个离线的地图报表展示,需要在中国地区上展示公司各子公司的位置、服务情况以及营销收入情况。这里会用到geojson,对这种gis数据有了第一印象。

 二、与gis同行

       2017年开始,加入了一个新的项目。这个项目最重要的核心就是WebGis,不仅仅是使用地理信息系统,而且是深入的去学习,并掌握。构建出一个高可靠,高性能的GIS,同时在此基础上构建一些上层应用,去替代arcgis,supermap,mapgis等。在这里算是真正的是一名gis开发者了,并一路同行到现在。

缘由

       上学期间,学的是计算机专业,从来没有接触过GIS。地理信息系统与计算机几乎是两个完全不同的专业,许多知识是不一样的。在课题中第一次接触gis时,完全是懵的。原来项目中调用过百度地图,还自以为有一些gis经验,真正接触gis时才发现。在线调用地图,都不敢说是gis开发者。因为这都没有接触gis的核心。

      不了解空间数据,不知道矢量数据,不知道栅格数据,地理信息的基础知识完全没有。连数据处理都不清楚,更谈不上空间的分析,服务的发布。因为项目的需要,由此需要快速掌握地理信息,并快速应用在项目上。

学习路线

一、补根基

       因为缺乏专业基础知识,于是便需要对gis的基础知识进行学习。得益于现在良好的在线教育平台,有慕课,有B站,有在线大学。在这些平台上都有许多的视频资料,可以帮助你快速掌握这些知识,当然只是学习,也是为了项目使用,对于基础知识,仅限于掌握一些专业知识。B站上的一些专业视频,南师大汤国安教授、北师大张锦水教授、西南大学田永中教授他们的视频都是非常值得推荐的视频。

二、webgis数据管理

       在gis中,很多都是围绕数据来展开的。WebGIS的数据大致可以分为三种,一种是地图、影像数据,一种是空间属性数据、一种是业务数据。地图、影像数据一般是一些png或者其他格式的数据组成。在GIS中有个很重要的概念,即影像金字塔。这个概念主要是为了加速地图在前端的显示。而我们准备地图、影像数据时,也一般会首先对这些数据进行切图。 

        空间属性数据,是通过一些工具将已经整理好的数据进行入库。对于AGS,只有连接的是入库数据的mxd,才能发布成FeatureServer服务,以供数据的编辑。当然,空间数据入库后还可以支持业务逻辑的使用。

       第三种数据,业务逻辑数据,是每个Web项目必须有的,它根据不同的业务需求将业务所需的数据进行采集和入库。

三、webgis架构

       Web + GIS 就是,在Web网页上的GIS系统,我们可以在网页(浏览器)上进行GIS数据处理操作、可视化展示等。 WebGIS 三层架构主要为展示层、地图服务层、数据层,通过UML图形进行理解:

四、空间分析

      (1)传统数据库管理的是不连续的、相关性较小的数字和字符;而空间数据是连续的,具有很强的空间相关性。

      (2)传统数据库管理的实体类型少,并且实体类型之间通常只有简单固定的空间关系;而空间数据库的实体类型繁多,实体类型之间存在着复杂的空间关系,并且能产生新的关系(如拓扑关系)。

     (3)地理空间数据存储操作的对象可能是一维、二维、三维甚至更高维。一方面我们可以把空间数据库看成是传统数据库的扩充,另一方面,空间数据库突破了传统的数据库理论,如将规范关系推向非规范关系。而传统数据库系统只要针对简单对象,无法有效的支持复杂对象(如图形、图像)。

      (4)地理空间数据的实体类型繁多,不少对象相当复杂,地理空间数据管理技术还必须具有对地理对象(大多为具有复杂结构和内涵的复杂对象)进行模拟和推理的功能。但是,传统数据库系统的数据模拟主要针对简单对象,管理的实体类型较少,因而,无法有效地支持以复杂对象为主体的GIS领域。

      (5)空间数据库有许多与关系数据库不同的显著特征。空间数据库包含了拓扑信息、距离信息、时空信息,通常按复杂的、多维的空间索引结构组织数据,能被特有的空间数据访问方式所访问,经常需要空间推理、几何计算和空间知识表达等技术。

        在空间处理分析中,会需要处理大量的空间分析,postgis是空间数据库中非常好的一款产品。它提供了丰富的函数支持。

常见的空间关系(Geometry Relationships)包括:

相等(Equals):几何形状拓扑上相等。
脱节(Disjoint):几何形状没有共有的点。
相交(Intersects):几何形状至少有一个共有点(区别于脱节)
接触(Touches):几何形状有至少一个公共的边界点,但是没有内部点。
交叉(Crosses):几何形状共享一些但不是所有的内部点。
内含(Within):几何形状A的线都在几何形状B内部。
包含(Contains):几何形状B的线都在几何形状A内部(区别于内含)
重叠(Overlaps):几何形状共享一部分但不是所有的公共点,而且相交处有他们自己相同的区域。

常见的空间操作(Geometry Operations)包括:

缓冲区:st_buffer(geom,distance)或者st_buffer(wkt,distance)
相交计算:st_intersection(geom,geom)或者st_intersection(wkt,wkt)
合并计算:st_union(geom,geom,…)或者st_union(wkt,wkt,…)
差异计算:st_difference(geom,geom)或者st_difference(wkt,wkt)
对称差异分析: st_symdifference(geom,geom)

工作经验

       在5年都的项目工作中,学会了很多的专业知识。我们采用的开源的webgis路线,因此不依赖于arcgis、supermap、mapgis等等厂商,拥有完全自主的gis开发能力。从基础的数据采集、处理、存储、分析、可视化、应用等等方面。在空间可视化方面,不仅在传统二维上有成熟的技术体系,而且在实景三维上也积累一定的经验。

       在数据处理方面,基于gdal实现了自主化自动化的数据采集与处理,实时入库。编写高效的数据入库软件,避免了传统gis数据表膨胀的问题。而采用gdal数据处理框架,既保留了地理数据处理的专业性,也提升了高效性和可靠性。

     二维数据可视化上,采用了leaflet这样的轻量级架构,满足了pc端、移动端这样的多端兼容展示的需求。下面是一个基于leaflet的二维风场展示效果。

       三维方面使用开源的cesiumjs,掌握了三维地图、地形、倾斜摄影、bim等技术。现在如火如荼的实景中国的建设,基础框架也离不开cesium,很多都是基于cesium平台进行开发的。

过往项目

        在5年的工作当中,参加过好几个gis项目的开发。当然,后台架构还是采用熟悉的java以及spring boot技术栈。这为当下微服务的扩展提供了良好的基础。根据用户的规模和应用场景,可以选择进行无缝的微服务改造。技术栈框架如下:

        曾经做过的项目有基于gis的土地征收系统、智能房产估价系统、智慧消防系统、数字园区系统等等。这些系统都是基于gis的上层应用项目。经过这些项目的锻炼,也不断加深对gis的认识,同时积累了一些gis的工作经验。

 

经验心得

1 中间件

       开发时,我们要选择适合自己的中间件。不同的中间件有其特性,如果是一般项目,tomcat等是很合适的,其使用方便,相关技术支持和资料也很好查找。但是如果是大型的集群项目,Weblogic和WebShpere可能是更好的选择,但是这两个中间件首先配置就是有难度的,同时不同的版本,可能对某些jar包的支持存在问题。如果项目必须使用国产的中间件,TongWeb和Apusics是不错的选择。

2 地图服务器

        在WebGIS中,与其他一般的Web工程有明显区别的就体现在地图服务器上面。一般的地图服务器都由已有的软件商提供了解决方案,比较流行的有AGS、Geoserver、MapServer、SuperServer等。利用这些地图服务器我们能很好的实现地图的发布以及对一些空间查询和空间操作的支持。

3 业务服务器

      业务服务器是Web项目里不可获取的一环。不管是利用哪些已有框架编写,比如Spring、Struts、Hibernate等,我们一般还是会将业务服务器的实现分为三个层次,即有名的MVC模式。而不同的框架里这三个层次的实现各有差别。

      随着国产化和开源化大潮的来临,也随着技术的进步,未来我们的gis产业完全可以实现国产化和自主化,同时会提供一些低代码开发环境,让大家能低成本接入gis应用。真正飞入平常百姓家。

GIS 可视化框架的典型应用场景

       地图数据可视化工具是用户实现多源数据及资源的管理与可视化、跨部门协同分享以及便捷发现和使用 GIS 资源的重要工具,是实现“平台+应用”模式落地的重要助力,而地图作为一种广泛通用的数据呈现方式,能够对多类需求进行支撑,部分典型场景如下。

(1)支撑网格化管理

        将资源、用户、消费等数据进行上图和可视化,支撑网格化管理。而通过 GIS 可视化框架,可以实现对上述数据的快速可视化配置,并进行发布,为网格化管理提供 GIS 能力支撑,提升对应用的支撑效率。

 (2)支持经营管理分析决策

       利用 GIS 可视化框架,可以对各类经营数据进行快速可视化,为管理者的经营分析决策提供支持。

 (3) 支撑大屏展示,快速构建可视化视图

        在大屏展示场景中,需要将相关的空间数据进行快速可视化,以大屏的方式进行呈现,通过 GIS 数据可视化框架,通过将数据快速接入,以所见即所得方式进行在线可视化配置,实现信息的快速发布与展示,能够及时满足地图数据可视化需求。

        最后祝愿IT朋友们工作顺利,完事顺利。平时注意锻炼身体,因为身体是革命的本钱,行文仓促,有许多不足之处,欢迎广大朋友批评指正,再次感谢。

猜你喜欢

转载自blog.csdn.net/yelangkingwuzuhu/article/details/126818216