开源GIS解决方案,暨GeoServer+OpenLayer结合开发总结

http://linking123.github.io/2018/07/21/%E5%BC%80%E6%BA%90GIS%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%8C%E6%9A%A8GeoServer-OpenLayer%E7%BB%93%E5%90%88%E5%BC%80%E5%8F%91%E6%80%BB%E7%BB%93/

 

– 0.感叹
– 1.文档说明
– 2.文档内容
— 2.1 GeoServer - 地图服务
— 2.2 OpenLayers - 前端渲染引擎
— 2.3 地图资源
— 2.4 地图编辑器
— 2.5 2.5d伪三维效果
— 2.6 GeoJson
— 2.7 集成到工程中
— 2.8 商业解决方案

0.感叹

原以为,此生与GIS再无交集。

因缘际会,项目上有机会重拾 GIS 相关,这就是人生啊!

看来,早年的某个举动,在未来某个时刻真的会影响人生的轨迹吧!

1.文档说明

需满足的需求:地理信息,设备信息,建筑物信息等在地图上集中展示。

本文档主要记录此次用到的一些开源地理信息解决方案的集合,使用过程等。

2.文档内容

架构图:
架构图

2.1 GeoServer - 地图服务

GeoServer

从官网下载免安装包后,运行命令:

geoserver-x.x.x/bin/startup.sh

打开默认网址http://localhost:8080/geoserver,默认端口8080可能被占用,需要自行修改。

  • workspaces:工作区
  • styles:样式
  • stores:数据存贮
  • layers:图层
  • layergroups:图层集

发布新的store时,选择字符集为utf-8,加入新的shape文件后,在数据页,一定要点击计算地图显示范围,即从数据中计算Computefrom native bounds自动计算并显示Lat/Lon Bounding Box边框数据。

部署服务器时,可直接拷贝本地 geoserver-x.x.x文件夹部署运行即可。注意自动启动与后台服务注册。

参考:

GeoServer基础教程(三):部署发布Shapefile地图数据

发布shape图层为服务

2.2 OpenLayers - 前端渲染引擎

OpenLayers OverView:

OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles「OSM, Bing, MapBox, Stamen, and any other XYZ source」, vector data「from GeoJSON, TopoJSON, KML, GML, Mapbox vector tiles」 and markers loaded from any source. OpenLayers has been developed to further the use of geographic information of all kinds. It is completely free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD).

官方实例

基本上支持所有地图资源,除了overview中介绍的,还包括百度地图、天地图等国内地图,还可以加载自发布的地图服务,如ArcGIS Server。

2.3 地图资源

利用ArcMap手绘,需要绘制室内地图(体现三维效果),自定义路径规划

2.4 地图编辑器

ArcMap 制图,请自行学习。

2.5 2.5d伪三维效果

项目中需要用到 2.5d 伪三维效果,经过搜索,找到一些参考「GeoServer官方 sld文档」、「通过sld样式拉伸渲染为伪3d建筑的地图效果通过geoserver发布」、「Geoserver伪三维SLD文件配置」、「SLD 样式 之GeoServer中设计2.5维建筑物」。

uDig自定义图层 style
可将ArcMap制作的 shapeFile 文件编辑出想要的样式。

uDig支持点线面的编辑。导入shp格式文件后,选择change style,制作自己想要的样式,然后导出xml代码到GeoServer的styles中。

2.6 GeoJson

{"type": "Feature","geometry": {"type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "Dinagat Islands"}
}

载入 GeoJson 属性图层,更灵活的展示数据,也可从后台拼接这种数据格式。

GeoJson加入Feature图层: 转换,工具, 使用

多层地图,及属性图层叠加

shape to geoJson

geoJson 生成

2.7 集成到工程中

因为我是按照 教程 用nodejs来开发前端的,所以涉及一个集成的问题。如果是直接引用openLayers的资源则不存在这个问题

前端开发完成,如果需要写成动态,可能需要集成到其他工程中。

如我集成到 Java Web 中,在 Tomcat 中发布,虽然官方只用了一句copy the dist/ folder to your production server.说可以把生成的源码直接copy到web服务中,但由于jsp的特点,需要局部改造。所幸改造难度不大,需要注意的是切换地图时,需要先清空map容器,如下

$("#map").html("")

因为 html 标签是复用的,map容器需要先清空。然后再重新请求地图资源。

2.8 商业解决方案

在调研过程中,发现一家专业制作室内地图的公司,记录下来备用。

公司名为蜂鸟云(不是那个送外卖的哦),经过与商务沟通,了解到他们是按面积阶梯性收费,综合起来也不是很贵,而且满足离线部署这一项很符合我们的业务需求,但由于地图数据不受自己的控制,最终舍弃了这个方案。(这不属于商业秘密吗?如有违反,请联系本人侵删。)

需求方提供标准CAD文件,由他们绘制底图,这个就是按面积收费的;地图数据部署在云服务上,可以无限次编辑,下载,离线部署。

哦,说一下他们的地图坐标系,支持坐标系转换,支持大部分坐标系。室外是地理坐标系 WGS 84(4326),室内是投影坐标系。

商业上来说,这家服务真的可以考虑。

以上,为在项目开发中用到的 开源GIS解决方案的大体框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TOJ---2621--全排列

这个方法 是超神教我的 --- 全排列的方法太多种了 感觉他这种写的 字典序法 是最简单的 最容易让人接受的 而且在时间复杂度和空间复杂度上 都可以让人接受 我待会将具体每步做法简要写一下...-> 我现在被一个 三角形给 深深烦死了 。。。。。。贴个代码 来 缓解下..... 1 …

Azure 和 Linux

Azure 正在不断集结各种集成的公有云服务,包括分析、虚拟机、数据库、移动、网络、存储和 Web,因此很适合用于托管解决方案。 Azure 提供可缩放的计算平台,允许即用即付,而无需投资购买本地硬件。 Azure 允许根据客户端所需的任何…

java获取classpath以外的路径

最近在使用以前写过的代码生成器(从表名可生成所有的代码)的时候,发现生成的文件都在classpath目录下,所有的文件都得自己拷到工程目录下,于是,想优化一下,取得classpath目录以外的路径&#xf…

月份第一天_4月份的第一天,全省迎来晴暖天气~

2019年4月1日早上好北方新农村准时准点播报~▼▼▼今天是2019年4月1日星期一辽宁的天气小孩的脸说变就变上周末突如其来的一场雪,让辽宁大部分地区“措手不及”已经开始回升的温度瞬间跌落到谷底。但不管怎样,随着节气的更迭,冷空气终究大势已…

Windows系统下搭建Git本地代码库

近由于工作需要,要把工作代码做一下版本管理。工作代码也不方便放到github上,也不想付费建私密库,公司也没几个人,所以就想着搭建一个本地Git版本库,来做版本管理。搭建过程如下。 系统环境:Dell OptiPlex…

mac 下终端 操作svn命令 以及出现证书错误的处理方法

首先,转载地址:http://hi.baidu.com/zhu410289616/item/eaaf160f60eb0dc62f4c6b0e 还有一个地址:http://www.cnblogs.com/heiniuhaha/archive/2011/11/11/2245594.html 解决证书出错,错误见下图: 解决方法:…

Linux shell multifile content replace with sed

#!/bin/bash# Linux shell multifile content replace with sed # 声明: # 本源代码主要是利用两份(中、英文)具有相同键值对的json数据,对html内的中文进行 # 自动化文本替换的代码。 # # …

jquery实时监听输入框值变化

在做web开发时候很多时候都需要即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感。而采用onchange时间又往往是在输入框失去焦点(onblur)时候触发,有时候并不能满足条件。 首先看一下dom中元素事件&…

文件过滤_jmeter(七)-BeanShell对数据过滤保存文件

在测试中有时需要对参数化数据进行过滤,实现保存到一个文件。如:某项目,从数据库查询到10万条用户数据,因为有的用户没有权限或者过期了,需要对这份数据筛选出来能正常使用的用户。如下使用beanshell实现此功能。原文件…

如何在mac系统下搭建git服务器

https://zhidao.baidu.com/question/1823748339128066228.html 第一步,下载gitblit http://gitblit.com/ 这里当然是选择linux/osx的版本。下载下来是一个.tar.gz的压缩文件,我下载时最新版本是gitblit-1.7.1.tar.gz 第二步,配置gitblit 创建目录&…

高级开发面试题

1.以前公司做过哪些项目; 2.这些项目都用到哪些技术; 3.redis里有哪些数据类型,对比memcache和redis; 4.目前平台的系统架构; 5.dubbo的server分了几个,怎么分的; 6.集群的负载策略;…

部品se分析_汽车储物箱部品模具,二色产品模具专业厂

汽车储物箱部品模具PVC塑料型材挤出模具是挤出生产线的核心部分,它包括口模(又称模头)、定型模、冷却水箱等。口模通过法兰盘与挤出机机头上的法兰盘组装在一起,安装加热圈、加热板,接通电源和热电偶。定型模和冷却水箱装用螺钉固定在定型台&…

WordPress二次开发经验简短总结

1.建议直接在客户给的服务器环境上安装WordPress程序再二次开发,如果在自己的开发机上安装好后再迁移过去,不同版本数据库或不同版本PHP环境可能会砸出坑。 2.由于国情原因,大陆访问googleapis.com呈现龟速特征,参考我之前的文章…

【Lucene4.8教程之五】Luke

一、Luke基本内容 1、Luke简介 Luke可用于查看Lucene创建的索引,并对其进行基本操作。 2、创建Luke (1)从Github上下载源文件 https://github.com/tarzanek/luke (2)解压文件后,打开DOS窗口,进入…

计算mView在view周围的位置

为什么80%的码农都做不了架构师?>>> /*** 计算mView在view周围的位置** param view** param mMargin mView与view或边界的间距* * titleBarHeight 标题栏的高度* mContext当前的Activity*/private void aroundView(View view, float mMargin) …

微信小程序6 - 页面之间传参及通知系统封装

1. 简单传参 wx.navigateTo({url: /pages/demo/index/index?id1})/pages/demo/index/index.js 中onLoad(options){var id options.id; //获取通过url参数传递来的参数}2. 复杂传参var json JSON.stringify({a:1});wx.navigateTo({url: /pages/demo/index/index?json json})…

aardio教程_官方AARDIO课程已经开课了!学习的速来报道!

aardio视频培训课程(2018新版)因为课程都是制作视频 - 所以上课时间不受限制。1、本次课程共计50节视频课程,每周一课,培训时间为一年(1月15日以后报名按报名交费时间开始计算)。2、所有参加本次培训课程 ,可同时获取为期2年的技术支持服务(1…

php 开源建站工具 -- 资料收集

迅睿 CMS 开源建站程序 XunRuiCMShttps://www.xunruicms.com/

神马是代码简单的cmd模式,这就是!

小狼正在研究 “怎么查找连在一起的同色方块?”算法问题 ,突然感觉我是不是需要一种开发模式,不然感觉自己的代码好乱的。 可能是研究算法吧,导致小狼的思路特别清晰,加上也用了差不多1年的nodejs、seajs,对…

找出数组中两个只出现了一次的数

原题:给一组数,只有两个数只出现了一次,其他所有数都是成对出现的。怎么找出这两个数。编写函数实现。 对于一组数中只有一个数只出现一次,其他所有数都是成对出现的,我们采用了对全部数组元素进行异或,经过…