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解决方案的大体框架。

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

  1. 开源GIS软件初探(转载)

    到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不错 ...

  2. 开源GIS浅谈 【转】

    http://blog.csdn.net/happyduoduo1/article/details/51773850 谈到GIS软件,首先让我们想到的是GIS界的龙头大哥ESRI公司旗下的ArcGIS ...

  3. 第一章 开源GIS选型

    系列文章目录 第一章 开源GIS选型 第二章 Geoserver+QGis开发环境搭建 第三章 Openlayers前端接入 文章目录 系列文章目录 前言 一.什么是GIS? 二.为什么使用开源GIS ...

  4. GIS发展及开源GIS

    平台的对峙 开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE, 而微软也正式发布了 ...

  5. 开源GIS系统(转)

    开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE, 而微软也正式发布了.NET2. ...

  6. 开源GIS系统(转载)

    开源GIS系统(转载) 平台的对峙 开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaE ...

  7. 开源GIS系统现状分析(转)

    原文地址:http://www.gispark.com/html/open%20source/2006/1116/465.html 平台的对峙 开发者都希望自己的软件能够运行在尽可能多的计算机上.然而 ...

  8. GIS项目中数据开源、工具开源、开发开源的解决方案

    GIS项目中数据开源.工具开源.开发开源的解决方案 参考文章: (1)GIS项目中数据开源.工具开源.开发开源的解决方案 (2)https://www.cnblogs.com/naaoveGIS/p/ ...

  9. 开源GIS(二)——openlayers加载Arcgis和geoserver在线离线切片

    一.引言 开始开源gis的不归路,第一课便是加载底图,底图目前主流的都是wmts,以后会研究一下wms,本文介绍了普通网络在线切片(如谷歌百度高德等).Arcgis在线切片与离线切片.openlaye ...

最新文章

  1. LMDIF_函数用法
  2. wxWidgets:wxRichTextCtrl概述
  3. 人工智能大幕开启 安防行业已成先头部队
  4. Android 中英文语言切换
  5. springcloud config服务端配置(二)
  6. 【java】java 并发编程 BlockingQueue 和 BlockingDeque
  7. 已设置的指纹解锁怎样解除_指纹锁哪个牌子更好用?
  8. 携程初赛 携程全球数据中心建设 球面上两点的最短距离 + 最小生成树
  9. ACM_一道耗时间的水题
  10. Could not get resource ‘https://dl.google.com/dl/android/maven2/com/android/
  11. pmp 第六版 模拟卷3疑难问题
  12. 接入技术——长途呼叫的典型路由
  13. MVC实现局部视图刷新
  14. 总结一下m3u8格式相关问题
  15. vb与c语言数组传递,在VB中调用C/C++语言编写的dll,数组参数的传递
  16. uniapp使用讯飞语音合成
  17. 区块链的命和血汗工厂的病
  18. CAN总线学习心得:zlg关于can帖子汇总【转】【强烈推荐】
  19. flex 实现水平布局 三等分
  20. 如何修改项目中Git远程仓库地址?

热门文章

  1. kickStart脚本
  2. Linux中find用法
  3. 如何评价强gis与弱gis_什么是gis的简化解释
  4. 女朋友天天气我怎么办_关于我的天气很奇怪
  5. Pytorch高阶API示范——线性回归模型
  6. 434. 字符串中的单词数
  7. 目录指南中的Python列表文件-listdir VS system(“ ls”)通过示例进行解释
  8. kotlin编写后台_在Kotlin编写图书馆的提示
  9. facebook.com_如何降低电子商务的Facebook CPM
  10. jquery元素节点操作