前言
这学期又选了辛老师的课。。。。。连续三个学期鏖战亚利欣,完全不虚,大学最熟悉的两个老师是两个最“可怕”的老师orz

GIS
GIS全程是地理信息系统,geography information system,简单一点说就是地图,最常见的就是谷歌地球,还有百度地图高德地图等等,非常有用,有一系列的衍生应用。比如,城市规划,滴滴打车,外卖,快递……
我以前一直觉得地图很神奇,不过其实难者不会,会者不难,只要学习了GIS,就知道地图不是那么的高深了。
为啥要学GIS不调用百度地图现成的API之类的呢,据我们强悍牛x又有钱的辛老师所说,公交系统的电脑是不允许联网的,这个时候百度地图就失去了用武之地,只能依靠GIS来完成地图的显示了。
基本概念
图层
图层其实挺常见的,在PS里也有图层一说。甚至在PPT里,选取一章图片,都有“浮到顶层”,“沉到底层”之类的说法。这也是图层的一个体现。图层是为了方便管理地图上的信息,将具有相似性的特征物体作为一个图层统一管理。比如,一个地图上有两个图层,一个是街道,一个是建筑,我如果想对所有的街道加上标注直接对图层修改就可以了,可以应用到这个图层上的所有物体。如果每一个物体都各自为战,那么管理器来将会是非常麻烦的一件事情。这其实是很好的一个思想,比如编程语言里的类,也是为了方便管理相似的东西,每当需要用的时候,我们只要实例化一个类就可以了,最主要的原则就是减小重复编程,为我们服务。
矢量(空间数据)
GIS里的空间数据分为点、线、面三种类型。对应着point,line,polyline。他们最主要的特点就是经纬度,点好理解,每一个点对应一对经纬度。我以前一直很好奇线和面是怎么存储的,因为在我看来存储一个点需要2个int类型数据,那么一条线有无数个点,存储无数组经纬度?不过其实在计算机里,线和面只不过对应着一组点而已,显示的时候把这些点按照顺序连起来就行。当然不可否认的是这样做会有精度丢失,但是与其带来的好处相比,它几乎成了唯一的选择。
额外的一些要素
marker标注,显示某些地区的信息
popup弹出提示
学习过程

添加图层,显示图层,转换shp文件
最基础的办法就是直接把geoserver.war给拷贝到tomcat的webapps目录下,然后直接运行tomcat,访问geoserver就可以了,就像访问一个项目一样,geoserver良心的一塌糊涂
然后用管理员用户密码登陆进去之后就会有一些预览的图层Layer,可以直接预览

直接就可以点击放大缩小等功能了,还挺有意思的。
如果要添加图层,先创建workspace(如果没有),在设定Store(如果没有),然后将图层一层一层添加进去。如果需要还可以把layer给弄成layer group,一起显示。
用uDig美化地图
我其实特别不喜欢这种图形化工具,但不得不说uDig还是很良心的。但我实在是感觉这不就是把代码给换成了点按钮吗,写代码我还能自动补全给点提示,这按钮万一给放在一个什么角落我哪知道它在哪。 不过,在有一些地方,图形化软件有着无可替代的优势,比如,需要添加点,线,面的时候,这种所见即所得的工具非常的有用,并且有利于观察物体相互之间的关系,而不是非常数据化的经纬度。
标注和popup,轨迹
标注其实很简单,在Geoserver里面就是一个类,把他加到图层里就完了。还能显示popupp,popup就是你点一个弹出附加信息。还可以把图标给换成你自己的图片,随便设在什么地方。

地图数据进mysql数据库
这个主要看咋设计表。无论怎么设计,总归需要有经纬度的。如果放在数据库里,就可以有很多有趣的操作了,比如查询,比如标出最近的信息点,比如测距侧面积



点线面交互
自己画点线面放在数据库,还可以存东西
整合
完整的模式其实应该是这样,服务器端有tomcat,并且有geoserver所对应的数据,客户端的程序只需要网页,网页里面的链接指向服务器里的数据,但是如果你想在自己的一台电脑上体验完整过程的话,可以装一个虚拟机,在虚拟机里安装tomcat和geoserver,然后在宿主机访问虚拟机的ip和端口,把虚拟机当做一个服务器来用,我这个大作业就是这么干的。还是不错的,不过要记得,虚拟机的防火墙需要关闭,并且宿主机访问的速度可能会稍稍有些慢。
最后还是稳稳的
具体的细节问题,以及我踩到的不少坑,可能会在后期陆陆续续加上。今天先到这儿吧。