目录

  • 0. 简述
  • 1. 下载QGIS桌面64位版本
  • 2. 下载安装QGIS Server程序
  • 3. 下载安装Apache服务器
  • 4、使用及问题处理

0. 简述

关于QGIS Server相关的文档很少,我也没有找到其源码在哪里,所以有些问题也不知道怎么解决,只能慢慢摸索。
这里只记录了在windows 10上安装使用的过程,在linux下过程也差不多,但是简单多了,很多缺失的东西可以直接命令安装。
我这里使用了最高版本的,但是最好还是使用长期版本,没有这么多问题。

参考:

  • https://anitagraser.com/category/gis/qgis-server/
  • https://github.com/qgis/docker-qgis-server

1. 下载QGIS桌面64位版本

也可以不下载,使用OSGeo4W在线安装程序,只安装qgis-server但我测试这个安装不全。我安装是最新的3.2.3版本。

使用在线安装的时候,下载站点最好选择http://download.osgeo.org,这个网站下载最快。

下载地址: https://qgis.org/downloads/QGIS-OSGeo4W-3.2.3-1-Setup-x86_64.exe
安装的时候最好不要安装在C盘(win10下会很多地方有权限问题),安装路径中也最好不要有空格,原因后面会提到。

2. 下载安装QGIS Server程序

下载地址:http://download.osgeo.org/osgeo4w/x86_64/release/qgis/qgis-server/
这里没有找到32位版本程序的下载,只能下载64位版本。下载的版本要与桌面版本一致。

下载之后解压到QGIS的安装目录即可,压缩包内的目录结构与QGIS安装目录结构是对应的。
然后复制一份httpd.d目录下的httpd_qgis.conf.tmpl文件,改名为httpd_qgis.conf

然后编辑这个新文件

  • 将里面的@osgeo4w@替换为QGIS的安装目录
  • @grassversion@替换为grass的版本号
  • @windir@替换为windows的目录。
    或者直接运行一下QGIS安装目录下的etc/postinstall下的qgis-server.bat脚本即可。
    修改的结果大致如下:

3. 下载安装Apache服务器

qgis server实质上是一个cgis程序,所以需要Apache服务器来调用。
Apache下载地址:https://www.apachelounge.com/download/
下载后直接解压即可,注意不要解压到有空格的目录。

解压之后修改conf目录下在httpd.conf
首先修改最前面的SVRROOT变量值

Define SRVROOT "C:/Apache24"
ServerRoot "${SRVROOT}"

然后在最后位置,把httpd_qgis.conf包含进去

include "C:/Program Files/QGIS 3.2/httpd.d/*.conf"

因为qgis server是一个fastcgi程序,所以这里需要下载apache的fastcgi模块
下载地址:https://www.apachelounge.com/download/
注意要下载与apache对应的版本。
下载之后解压到apache目录下的modules目录下即可。

4、使用及问题处理

完成上面的步骤之后,可以启动apache安装目录下的bin/httpd.exe程序了。
如果没有报错,则可以获取一下GetCapabilities试试

这里我在httpd.conf中修改了端口,所以访问的是8080端口。

ForbiddenYou don't have permission to access /qgis/qgis_mapserv.fcgi.exe on this server.

这里可以看到,返回了403错误,这里说明这个文件是存在的,只是被apache禁止访问了。
这里修改下apache的httpd.conf文件

<Directory />AllowOverride noneRequire all denied
</Directory>

修改为

<Directory />AllowOverride noneRequire all granted
</Directory>

或者修改httod_qgis.conf文件,添加Require all granted即可。

重启httpd.exe后继续测试,这时候发现返回的错误码变成了503

这时候可以打开apache的日志看看错误的原因。

这里可以看到,还是这个路径中有空格的原因。
这个问题两个解决办法

  • 一是把qgis_mapserv.fcgi.exe程序文件复制到Apache安装目录下的cgi-bin目录中,然后访问http://127.0.0.1:8080/cgi-bin/qgis_mapserv.fcgi.exe?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
  • 二是重新安装qgis到没有空格的路径中去。

然后继续测试,还可以遇到问题。
如下:

这个问题也很好解决,这是因为qgis_mapserv.fcgi.exe编译的时候依赖的这些动态库并没有打包到里面来,需要自己去下载过来。同样缺失的还有QtXml4.dllQtCore4.dllQtGui4.dllQtNetwork4.dllQtSvg4.dll,这些dll在QGIS2.18的安装目录下可以找到。我这里打包上传一下,地址在这里qgis_mapserv.fcgi.exe-depends.7z。也可以使用OSGeo4W在线安装程序下载。

继续测试,这里还会碰到问题:

offscreen插件是Qt用于离屏渲染的,在Qt5.1版本才提供。
打开httpd_qgis.conf文件,可以看到在定义Qt插件路径变量QT_PLUGIN_PATH的值的时候,里面对应路径是qt4的,这里只需要把4改为5即可。
修改完成之后,重启httpd.exe继续测试。

经过上面处理之后,qgis_mapserv.fcgi.exe确实能够被调用运行了,这个通过ProcessMinitor可以监测到调用过程。
按照网上一些资料的说法,将QGIS的工程文件xxx.qgs放入qgis_mapserv.fcgi.exe所在目录,就可以用于提供默认的服务,不必指定map选项参数。但是我测试GetCapabilities的结果没有成功,程序执行后返回500错误,也就是qgis_mapserv.fcgi.exe程序没有正确返回对应的XML内容,在请求的时候添加map=xxx.qgsmap=xxx也都是失败的。因为没有相关的文档和源码,这个还需要继续测试。

QGIS Server使用记录相关推荐

  1. QGIS Desktop与QGIS Server 下载安装

    QGIS是一款开源的地理信息系统软件,全称为Quantum GIS.它提供了一系列强大的GIS功能,可以用于浏览.编辑.分析和处理各种地理空间信息.QGIS支持多种矢量.栅格和数据库数据格式,包括ES ...

  2. SQL SERVER学习记录

    SQL SERVER学习记录 //创建数据库,请先在D盘手动建立一个 backup的文件夹 create database sl on (name = 'sl',filename = 'd:\back ...

  3. 2021-02-28 SQL server实践记录---3Select

    SQL server实践记录---3Select 举例用相关表 各种Select语句 举例用相关表 CangKu[cangkuid, cangkuhao, chengshi, mianji, chua ...

  4. mysql 平均值 排序_sql server 查询记录平均值及并排序 的语句

    sql server 查询记录平均值及并排序 的语句 查询学生的平均成绩并进行排名,sql 2000用子查询完成,分平均成绩重复时保留名次空缺和不保留名次空缺两种. select t1.* , px ...

  5. mysql表 spid program_SQL Server 表,记录 死锁解决办法

    我自己的数据库表记录死锁后的 根据以下资料的 解决方案: 1. 先根据以下语句 查询 哪些表被 死锁,及 死锁的  spid SELECT request_session_id spid,OBJECT ...

  6. Web API-添加Swagger,SQL Server,记录并导出到Excel

    目录 介绍 要求 1.创建一个新的Web API项目 2.将Swagger添加到项目 3.将项目连接到SQL Server数据库 4.登录到SQL Server 5.添加"导出到Excel& ...

  7. VMware Server使用经验记录

    从最初的VMware GSX Server 1.0,到现在的VMware Server 2.0Beta,我使用VMware Server产品有几年时间了,我自己的两台服务器(DELL 2600 ,3G ...

  8. 【Nginx】 server 配置记录

    根路径禁止访问,二级路径使用目录浏览功能 server{....location / {return 403;}# 使用正则location ~* ^/.*/(.*(xlsx|csv))?$ {aut ...

  9. 【QGIS基础操作】QGIS插件功能记录

    本系列用于总结项目过程中用到的QGIS基础操作.分析方法 内容如下: 1. 线相交:将两矢量层在交点处产生点 2.缓冲区+相交:道路沿线100m的POI数量 3.距最近枢纽(线到枢纽):道路沿线最近的 ...

最新文章

  1. 研究javascript中的this
  2. System.Timers.Timer与System.Threading.Timer
  3. SQL Server 2005自带的Service Broker功能
  4. 深入理解 SVG 系列(一) —— SVG 基础
  5. 大数据风控之贷前调查必知的十大客户信息
  6. Lambda省略格式Lambda使用前提
  7. Android开发的之基本控件和详解四种布局方式
  8. 从零学javascript_我刚刚问了23,000个开发人员他们对JavaScript的看法。 这是我学到的。...
  9. PaddlePaddle顶会论文复现 | ECO视频动作识别网络
  10. php 实现ftp 多文件,php – 使用一个连接读取FTP目录中每个文件的内容
  11. 傳統經理人的迷思(转)
  12. notify和notifyall的区别
  13. 计算几何——判断点是否在多边形内
  14. 如何将视频转换为HEVC / H.265和AVC / H.264
  15. 笔记本电脑修改BIOS及刷写教程
  16. ERP服务商核心竞争力
  17. [BUGKU] [MISC] 爆照
  18. 前端改变this指向的方法有哪些?如何判断this指向?
  19. 数据结构魔王语言问题
  20. Au 效果器详解:单频段压缩器

热门文章

  1. 一款 PO VO DTO 转换神器
  2. 为什么 Java 后端开发没有大规模采用 Kotlin?
  3. Spring Boot 和Apache Kafka的集成
  4. 面试题:如何理解 Linux 的零拷贝技术?
  5. 模型融合方法最全总结!
  6. 阿里大佬总结的算法进阶指南,助你进大厂!
  7. 2020 中国高校薪资排行出炉!好过双一流的高校原来这么多!
  8. 一文让你完全入门EM算法
  9. 【每日一算法】KMP算法,看不懂算我输!
  10. 装饰器的定义、语法糖用法及示例代码