网站首页 > 技术文章 正文
地图数据以海量著称,传统的做法是建立空间索引,优化查询等,这些并没有解决如何有效的组织地图数据,提高地图访问效率的问题。用GeoServer可以在用户之间迅速共享空间地理信息。
首先,本文实现的结果图给大伙展现一下:
放大的样子:
颜色是通过属性中某个字段值来分级的,可以自定义。
上面功能是用ArcGIS切片好数据,在Geoserver 中发布,并用google地图作为底图展示的效果。
一、ArcGIS是什么?
ArcGIS由ESRI公司开发,是一款创建和绘制各种不同形式地图的软件。
本文所采用的地图数据一般由测绘人员采集,经过gis数据处理人员绘制成图再打包给开发人员经过代码处理展示在网页端。
以下是ArcGIS的切片地图原图,图中密密麻麻分成了6000多个面,每个面是把地图放大后,一点一点勾勒出来,再加入属性数据,这是一项非常耗时+耗精力+耗眼睛的工作。
二、Geoserver是什么?
顾名思义,是一个server,利用它可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer可以比较容易的在用户之间迅速共享空间地理信息。
值得一提的是,它是开源的,而ESRI公司开发的同类型产品ArcServer却是一款收费的GIS服务器,而且价格比较高。
三、为什么Geoserver这么高效?
随着瓦片的概念被提出以来,利用金字塔模型缓存地图瓦片的模式代替传统地图框架,大大提高了网络地图的响应速度。
如图所示,在某一个点上用一定的切片算法对地图进行切片,比如经纬度步长等比例分割成的瓦片(小图片)缓存起来,如果地图比例尺比较大,则只展示第一张图,随着地图放大,会同时发生四次请求来加载第二层的四张图片,直至放大加载到金字塔最后一层的所有图片。
当需要定位一个地方时,可以根据刚才的经纬度步长来计算具体位置。
四、怎么把ArcGIS的.shp文件发布到Geoserver里?
1.配置环境
搭建GeoServer环境需要安装包:Java JDK 7、Tomcat 7 、geoserver.war(最新版本的GeoServer 2.0.2版已经内置了HTTP服务器)。
把geoserver.war放在Tomcat的webapp下启动就可以访问了。
用户名是admin,密码是geoserver,登录后页面如下:
2.加入style
打开GeoServer界面,点击Styles,如图
进入新页面后,点击Add new style
在新打开的页面,Name命名为liugh,在代码区添加代码,然后点击页面中的Validate按钮,如果代码没有问题,在页面的顶部会提示“No validation errors”,然后点击Submit提交
也可以直接导入styles文件,如下图,点击SLD file的浏览按钮,导入mystyle.sld文件,然后点击Upload,上传成功后点击Validate检查代码,按Submit提交,步骤和上面的相同
3.发布地图
style设置成功后,添加ArcGis切片好的数据
单机后进入如下页面,我们可以看到前文提到的ESRI公司,这里需要.shp文件。
点击后,开始设置地图名称、路径等信息,注意,地图文件的路径中千万不要有中文,否则地图无法显示
保存后弹出以下页面,点击发布
设置坐标系和边界
先不要点击下方的保存,点击发布选项卡
把刚才设置的style加进来
然后点击最下方的保存就发布成功了
4.查看发布的地图
在打开的页面中找到刚刚添加的图层,点击OpenLayers
最终展示效果如下:
到这里我们的地图发布就完成了,如何把它加载到谷歌地图里展示呢?敬请期待下一篇文章:
高效访问海量地图数据--用OpenLayers访问Geoserver发布的地图
猜你喜欢
- 2024-10-20 详解grafana常见报错internal server error如何解决
- 2024-10-20 python教程之FTP相关操作(python2 ftp)
- 2024-10-20 僵尸毁灭工程联机教程 僵尸毁灭工程联机服务器设置
- 2024-10-20 tftp为何timeout?为何server error:(1)File not found
- 2024-10-20 MySQL server PID file could not be found!失败
- 2024-10-20 esp8266_server 的 streamFile 方法
- 2024-10-20 Java IO之字节流详解,文件字节输出流,文件字节输入流
- 2024-10-20 SQL server 2008 R2 图文安装教程(附资源)
- 2024-10-20 GET!无法连接数据库,SOLIDWORKS Electrical解决方法
- 2024-10-20 理解Python Traceback(回溯)(python的回溯和递归)
- 1517℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 594℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 521℃MySQL service启动脚本浅析(r12笔记第59天)
- 489℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 489℃启用MySQL查询缓存(mysql8.0查询缓存)
- 477℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 456℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 454℃MySQL server PID file could not be found!失败
- 最近发表
-
- PS所有滤镜的说明(六)(ps滤镜详解)
- 5款小白也能用的在线图片编辑器!电商效率飙升就靠它!
- Java变量(java变量有什么作用)
- Java面试常见问题:Java注解(java中的面试题)
- Java编程入门第一课:HelloWorld(java编程从入门到实践)
- Java基础教程:Java继承概述(java里继承的概述)
- java基础之——访问修饰符(private/default/protected/public)
- 如何规划一个合理的JAVA项目工程结构
- 将机器指令翻译成 JavaScript -- 终极目标
- Web 服务器基准测试:Go vs. Node.js vs. Nim vs. Bun
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)