webgis从基础到开发实践_开源WebGIS教程系列——11.1 GISLite 的开发背景与设计

地理信息门户可以帮助人们更容易地发现、访问和使用地理空间信息, 是地理信息发布、服务和共享的重要环节。许多国家都很重视地理信息门户的 建设,把它作为国家空间数据基础设施(spatial data infrastructure,SDI)的重要组成部分。

GISLite 是地理数据发布的一个项目,使用了本书前面章节中的一些地理信息与互联网方面的一些技术, 做的一个功能简单的 GIS 数据发布系统,以形成一个小型的静态网站,方便地理空间数据的查看与管理。本书两位作者负责与参与的数据中心与知识服务项目的工作,很多数据就通过这种方式发布出来。

由于 GISLite 实现之初写的比较匆忙,没有经过好的设计;而且其处理的内容也比较简单,后面也没有再经过仔细的修改。而且随着使用,代码也在更新之中。在这一章进行说明时,会对设计的思想与涉及的代码进行一些说明, 但不会太详细,以避免代码更新之后与书的内容对应不起来。发布一个版本也许是一种解决的方法,但随时使用最新的代码可能更好一点。

项目的地址为 https://www.osgeo.cn/gislite/ , 这个功能也集成到本书的配套网站中, 通过 http://webgis.cn/gislite-index.html 访问。

先来了解一下开发的背景与设计。

9ce01c8c9546f530ed6f403d04ce5515.png

11.1.1. 开发背景

在数据中心工作,经常会有一些地理空间数据需要通过 WebGIS 技术发布出来 。前面提到过数据共享。现在数据共享的工作越来越多。在数据共享中,很多的内容需要充分公开地向用户发布出来。

元数据是了解数据的一种方式,它包含了数据的大小, 各个方面的属性,以及空间范围。科学数据一般也都有缩略图,缩略图也是一个可视化的方式。地理信息方面的一些数据,就是这种方式来快速了解。使用 WebGIS 技术可视化效果更好一些, 而且也是一个管理的一个方式,因为所有的数据能看见,当用的时候,查找更加方便。

在实际使用 WebGIS 技术发布数据时,存在有以下的问题:

  1. 有大量发布的需求,需要经常进行配置。也需要进行重新的转换;

  2. Mapfile 的编辑修改需要较多专业的知识;

  3. 发布后需要进行查看,以进行检查;

  4. 数据发布过程需要的步骤较多,需要通过程序工具集成到一起。

11.1.2. 设计的基本思路

基于以上背景,建立了 GISLite 项目,基本设计思路如下。

GISLite是一个基于开源GIS技术开发,使用了静态网站形式的GIS数据发布的应用程序。基于 MapServer 的服务器端 GIS 数据图层发布管理系统。用于解决发布较多数量的地图时的数据更新、样式修改,以及不同样式组合应用的问题。解决办法是使用 XLSX 文件定义样式,利用MapServer、MapProxy实现GIS数据图层发布管理。主要面向GIS开发人员、学生以及GIS爱好者。

使用 XLSX 是工程实践的妥协。作为一种二进制的文件形式,XLSX 的修改无法使用 Git 等代码管理工具进行历史的记录, 也就无法进行回溯与比较,所以并不能算是一种好的记录方式。在定义 Mapfile 时,其实也可以使用 XML 或 YAML 。YAML 已经比较容易编辑修改,但是依然容易出错。而使用 XLSX 建立好模板,则不需要进行太多的说明,普通的工作人员就可以使用其来修改与更新地图的样式。考虑到地图的样式可能不必需要太多的代码级别的仔细核对,所以最终决定了使用这种方式。

尽量实现数据源唯一性,使用 XLSX 文件定义样式。主要实现 GIS 数据图层的发布,但也实现了多源数据发布为单个地图瓦片, 以及多个图层发布为图层分组的功能。主要有以下特点:

  • 基于 MapServer 、 MapProxy ;

  • 使用开放电子表格格式 XLSX 定义样式 ;

  • 可用于团队地理信息数据快速发布管理 。

11.1.3. 静态网站的优点

在 GISLite 设计中,参考了静态网站程序的方案。

近年来,作为传统动态网站基础架构的替代方案,现代静态网站生成器日渐盛行。许多导致静态网站失败的限制已不复存在。现在,每周都会有新的静态网站生成器发布。简单来说,静态网站生成器就是一个由轻量的标记语言以及模版语言和元数据以及 CSS 预处理器, 加上可以编译成 JavaScript 的语言构成的用来生成静态 HTML , CSS 和 JS 文件的程序。

以 PHP 应用为例,PHP 项目得到广泛应用的一个原因,就是易于部署。项目整体打包在一起,拷贝到约定的目录下,配置好相关的一些参数,就可以运行起来。将数据与程序独立出来,程序提供了功能的接口。

静态网站有以下优点:

  1. 访问速度快

即使是优化最好的动态网站,其性能也无法同静态网站相比。并且,对于动态网站而言,缓存失效非常难以恢复,尤其是需要充分利用 CDN 的分布式缓存。静态网站所有内容都储存在 html 里面,不需要后台服务器对内容进行渲染, 避免了查询数据库等操作,而且可以充分利用缓存和 CDN 。

  1. 非常安全

动态网站容易遭受蠕虫攻击。据保守估计,超过 70% 的 WordPress 部署容易因为已知漏洞遭受攻击 (超过23%的 WEB 网站以 WordPress 为基础构建)。网站安全两大威胁 SQL 注入和 XSS(cross-site scritpting)攻击, 静态站点都可以很好的避免。

  1. 易于部署

静态网站没有后端要求,想部署在哪儿就部署在哪儿。服务器端配置简单。只需要一个 web 服务器程序(apache、nginx)。

  1. 利于版本控制

静态网站是由静态文件组成,所以非常容易使用 Git 等工具进行版本控制,非常容易维护。

     5.易于集成

另外还有一点就是易于集成。在本书的配套网站中就集成了 GISLite 发布的数据, 见 http://webgis.cn/gislite-index.html 。

基于以上静态网站的特点,适合地图发布服务的应用。因为在用户使用过程中只是浏览、查看,不需要更新、删除等操作, 没有动态网站的需求。

11.1.4. 程序配置

GISLite 基于 MIT 协议开源发布,托管在 github,下载程序, 源代码网址为:https://github.com/bukun/GISLite.git 。

在开始之前,首先下载部署 GISLite 的实例,来了解一下。以下的操作都 以 Ubuntu/Debian 为例。

服务器端的安装配置

程序的运行需要操作系统与应用程序的支持。服务器端的基本环境包括本书涉及的 Apache 、 Python3 、MapServer ;Python 语言所需要的环境包括本书前面章节介绍的 mappyfile 、 MapProxy , 以及 GDAL 、 Markdown、OpenpyXL 等模块。

  1. OpenpyXL 是一个Python库,用于读取/写入Excel xlsx / xlsm / xltx / xltm文件。

  2. Markdown 是一种标志语言,Python-Markdown 则用来进行解析处理。

  3. GDAL 是栅格和矢量地理空间数据格式的转换器库,作为一个库, 它为调用的应用程序提供了所有支持的格式的单个栅格抽象数据模型和单个矢量抽象数据模型。它还带有用于数据转换和处理的各种有用的命令行实用程序。

GISLite 综合使用了本书介绍的技术,在安装使用时首先需要基本的 WebGIS 运行环境。在操作系统中运行如下命令安装基本的环境,由于 mappyfile 未包括在 Debian 源中, 需要使用 Python 的 pip 命令安装。

sudo apt install -y apache2 php libapache2-mod-fcgid cgi-mapserver mapserver-bin libapache2-mod-phpsudo apt install -y python3-openpyxl python3-mapproxy python3-markdownsudo apt install -y build-essential  python3-gdal python3-pippip3 install mappyfile

程序安装与配置

为了进行说明,先将 GISLite 配置安装一下。

首先获取源代码, 使用命令:

git clone https://github.com/bukun/GISLite/

GISLite 运行需要有数据支持,可以到 http://webgis.cn 网站将示例数据下载下来。

有了数据之后,需要使用配置文件将说明项目的地址、数据的位置等信息。由于 Python 语言的特征,直接将配置信息写到 .py 文件中。cfg_demo.py 文件是一个包括配置信息的模板文件, 程序运行时需要 cfg.py 文件。将 cfg_demo.py 文件复制为 cfg.py , 并进行相应的修改。

下面是一个基本的例子,进行一下简要说明。

TILE_SVR = '192.168.56.1:8011'GIS_BASE = '/home/bk/opt/geodemo'SITE_WS = '/home/bk/github/GISLite'USER = 'bk'

这几个变量是必须要定义的。

  • TILE_SVR 声明服务器端瓦片服务的地址与接口,

  • GIS_BASE 声明地理空间数据库所在的目录,

  • SITE_WS 声明项目(即代码库)的目录,

  • USER 声明进行操作的用户名,这个用户需要在 sudo 组内。

cfg.py 中的定义是比较灵活的。如果要使用远程部署,可以将服务器登陆的信息放到这里:

machines = {    'aliyun3': {'u': 'bk',                'h': '192.168.56.1',                'p': 'passwd',                'ws': 'workspace'},}mach = machines['aliyun3']

现在可以在代码仓库下运行:

python3 build_gislite.py

运行后会生成地图图层的 Mapfile ,网站 HTML 文件,以及运行 MapProxy 需要的文件。这会生成一个静态的网站。其中 Mapfile 是由主文件与各图层定义的 Mapfile 组成。

文件生成后,需要使用下面命令将 MapProxy 服务运行起来:

cd wcs_imgmap/usr/lib/python3-mapproxy/mapproxy-util serve-develop ./mapproxy.yaml -b 0.0.0.0:8013

在 Web 浏览器内打开就可以浏览发布的 GIS 数据了 。

以上就是《开源WebGIS》教程系列——11.1 GISLite 的开发背景与设计的

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

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

相关文章

Oracle数据库及在DOS命令下面的简单操作

在Oracle数据库注释用--表明为注释,但以下用//或--代表解释;数据库不怎么区分大小写; 先说说一些简单Oracle数据库操作的语句: 使用语句创建普通用户: Create user username identified by password; //创建普通用户 Grant reso…

CSS属性(display)

1.display属性 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>08display属性</title><style>.c1 {background-color: red;/*display: none; !* 让其在页面上不显示 *!*//*display: i…

产品发布系统_【产品发布】第3期|阀门遥控系统

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;常熟瑞特电气股份有限公司的阀门遥控系统是一款经典的产品线&#xff0c;包括了全系列的液压执行器&#xff0c;电液执行器&#xff0c;微型动力单元&#xff0c;液压动力泵站&#xff0c;液压电磁阀箱等产品。阀门遥控…

大数据就业前景,分析的太到位了

大数据广泛应用于电网运行、经营管理及优质服务等各大领域&#xff0c;并正在改变着各行各业&#xff0c;也引领了大数据人才的变革。大数据就业前景怎么样&#xff1f;这对于在就业迷途中的我们是一个很重要的信息。 随着大数据时代的到来【这次国家教育部也改革动真格了】&am…

多麦克风做拾音的波束_麦克风丨人声应该用动圈话筒还是电容话筒?

无论是在您最喜欢的乐队的纪录片中&#xff0c;还是在电影中那些有关录音棚里的场景中&#xff0c;似乎都存在着一个共同的主题&#xff0c;那就是&#xff1a;歌手们都在使用大振膜的电容麦克风进行录音。我知道人们应该从别人的经验中汲取精华&#xff0c;事半功倍。但是我并…

java框架mybatis配置文件总结一

先新建个java EE的项目 该配置文件必须在src的目录下面&#xff0c; 新建一个xml 文件&#xff1a; 建完后发现它会自动建在web目录下面&#xff0c;我们把这个文件移到src目录下面&#xff1a; &#xff08;注&#xff1a;对了&#xff0c;该文件的编码最好用utf-8的no bom,…

测试:脱离VS2010使用自动化测试时出现 6DA215C2-D80D-42F2-A514-B44A16DCBAAA 错误

在前一系列IronRuby中一直是围绕这UI自动化测试来写的&#xff0c;今天基本测试框架完成了&#xff0c;测试人员没有安装VS2010&#xff0c;不知道能否跑&#xff0c;所以就在测试人员机器上跑跑看&#xff0c;但是问题就出现了 现象 运行run.bat跑单元测试时&#xff0c;出现以…

Linux的远程连接及Linux系统下Tomcat部署

Linux的远程需要用的软件有Xshell&#xff0c;Xftp 本人使用VMware12Pro虚拟机&#xff0c;Linux系统为CentOS7&#xff0c;使用局域网进行远程连接 Xshell和Xftp没有安装的话可以取官网下载&#xff0c;但Xshell需要验证信息&#xff0c;所以也可以去360电脑软件下载 在VMw…

uniapp图标_uniapp扩展自定义uniIcon组件图标

1、访问Iconfont-阿里巴巴矢量图标库&#xff0c;下载自己想要的图片&#xff0c;下载svg格式备用2、通过百度字体编辑器打开本地最新的uni.ttf文件(http://fontstore.baidu.com/static/editor/index.html#)&#xff0c;打开之后可以看到所有的uni所有图标都在里面3、导入第一步…

Spring Boot 日志的使用及logback.xml的使用

当前是市场上使用的日志框架有很多&#xff0c;比如&#xff1a;JUL、JCL、Jboss-logging、logback、log4j、slf4j....等等&#xff1b; 但是日志主要分为两类&#xff0c;日志门面和日志实现两类&#xff1b;日志门面可以说是日志框架的抽象层&#xff0c;主要实现是的日志实…

MongoDB数据库的迁移

最近公司开始要换服务器啦&#xff0c;MongoDB上面的数据又得迁移&#xff0c;还是记录一下比较好。 1&#xff09;、将MongoDB的压缩包解压至相对应的路径(压缩文件在本地服务器的地址192.168.0.22的/opt/zip文件下面) 2&#xff09;、配置好mongodb.conf文件&#xff0c;配…

excel vba 如何将日期周几转换成文字_这5个超实用的Excel技巧,让你的办公效率更高...

导读&#xff1a;对于办公职员来说&#xff0c;Excel是几乎每天都会接触的办公软件。在Excel中&#xff0c;有非常多的小技巧&#xff0c;学习这些小技巧需要不断的积累和应用&#xff0c;今天指北针就来给大家分享5个超实用的Excel技巧&#xff0c;让办公变得更加有效率。文/芒…

VMware创建Linux及局域网内独立访问IP和访问外网IP的配置

好早之前有一篇是配置远程连接Linux和部署Tomcat的文章&#xff0c;但是并没有讲解如何配置IP的相关知识。最近公司在搞集群配置&#xff0c;我就先拿电脑上的VMware上的Linux做个测试&#xff0c;分享和总结一下经验吧&#xff0c;也算是为了补齐之前的那个空白&#xff01; …

C#浅拷贝与深拷贝区别

也许会有人这样解释C# 中浅拷贝与深拷贝区别&#xff1a; 浅拷贝是对引用类型拷贝地址&#xff0c;对值类型直接进行拷贝。 不能说它完全错误&#xff0c;但至少还不够严谨。比如&#xff1a;string 类型咋说&#xff1f; 其实&#xff0c;我们可以通过实践来寻找答案。 首先&a…

内网安装nginx+keepalived环境配置及简单使用

分享一下这次艰难的配置过程&#xff0c;衔接上一篇的配置内网独立IP虚拟机。 先吐槽一波&#xff0c;由于公司网络属于内网&#xff0c;与外网互不相通&#xff0c;所以在安装nginx的时候可能会去外网找相对应rpm文件&#xff0c;而且也有许多的版本不兼容问题&#xff0c;好…

cad连续标注数字123怎么弄_实例讲解CAD模型与布局中的各种比例

好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1a;点我苹果版CAD:点我 3dmax教…

SpringMvc异步请求的使用及部分原理

最近隔壁项目组的项目又出问题了&#xff0c;一直被用户投诉太卡了&#xff0c;页面白屏的那种&#xff0c;打开源代码一看&#xff0c;全是非异步请求&#xff0c;类似于以下写法&#xff1a; ResponseBodyRequestMapping(value "/getTest")public String getTest(…

Microsoft BizTalk ESB Toolkit 2.0

[>>> 更多<BizTalk开发系列>文章 ] 微软于6月8号发布了BizTalk Server 2009企业集成平台的最后一个功能组件:ESB Toolkit 2.0 (原名:ESB Guidance 2.0)&#xff0c;ESB ToolKit 2.0一个是工具和代码集扩展了BizTalk Server 2009对于松耦合和动态消息架构的支持…

WCF学习笔记(三):开启net.tcp端口

正在做一个使用tcp协议的WCF示例&#xff0c;遇到很多问题。首当其冲的问题就是——如何为WCF打开tcp端口。。。 具体步骤如下&#xff1a; 1、在IIS中为WCF安装支持TCP协议的组件&#xff1a; 2、在防火墙的入栈规则中开启808端口&#xff1b; 3、在servies.msc中打开两个服务…

孪生神经网络_轩辕实验室:数字孪生:基于机器学习的汽车数字孪生模型

本文来源&#xff1a;A. Rassolkin, T. Vaimann, A. Kallaste, and V. Kuts, “Digital twin for propulsion drive of autonomous electric vehicle,” in 2019 IEEE 60th International Scientific Conference on Power and Electrical Engineering of Riga Technical Univer…