【C++】9.GIS应用:开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)
GIS地理信息处理相关。
文章目录
- 1. GIS软件工具
- 2. MapServer服务器
- 3. QGIS桌面软件
- QGIS加载csv数据
- 4. PostGIS数据库
- 5. OpenLayers(JS)浏览器客户端
1. GIS软件工具
在GIS数据处理时,我们最熟悉的就是ArcGIS
了,它的功能十分强大,但同时对电脑性能要求也挺高,而且很多功能我们其实用不上;其他类似的GIS软件还有:GeoDa、LocaSpace图新地球、uDig、OpenJump、QGIS、gVSIG、Whitebox GAT、SAGA GIS、GRASS GIS、MapWindow、ILWIS、Diva GIS
。
很多时候,我们需要根据自身需要定制一个地图编辑和查看工具,下面是C++制作GIS软件的建议:
要使用C++制作WebGIS,通常需要借助开源库和框架来实现。以下是一些常用的开源库和框架:
1. GDAL:用于读取和处理地理空间数据。2. PROJ:用于地理空间坐标转换。3. OGR:基于GDAL的地理空间数据格式转换库。4. MapServer或GeoServer:用于发布WebGIS服务的开源GIS服务器。5. Leaflet或OpenLayers:用于制作WebGIS前端地图展示的JavaScript库。6. Qt:用于C++应用程序开发的跨平台框架,其中包括QGIS,一个开源的桌面GIS软件。7. CGAL:用于计算几何和空间算法的开源计算几何算法库。以上这些开源库和框架,可以帮助你开发出高效、易用的WebGIS应用程序。当然,还需要具备C++编程、Web开发和地理空间数据处理的基本知识。
2. MapServer服务器
官方地址:https://mapserver.org/
MapServer与GeoServer的区别:https://www.osgeo.cn/tutorial/k8b24
下载地址:https://ms4w.com/
(选择zip或exe)
解压后,以管理员权限打开cmd并执行apache-install.bat
:
浏览器输入http://localhost/或者http://127.0.0.1/
将可以看到MS4W的页面。这样mapserver就安装成功了:
测试mapserver是否支持WMS服务,使用cmd命令行进入MS4W的安装路径(如D:\ms4w\Apache\cgi-bin),执行mapserv -v
3. QGIS桌面软件
QGIS是一个用户界面友好的桌面地理信息系统,可运行在Linux、Mac和Windows等平台之上。QGIS项目开始于2002年5月,是基于跨平台的图形工具Qt软件包,采用C++语言开发的一个GIS软件。
关于ArcGIS与QGIS的区别,这篇文章有介绍:http://t.csdn.cn/t7GAR
QGIS下载地址:https://www.qgis.org/zh-Hans/site/
QGIS介绍:https://www.osgeo.cn/page/qgis
QGIS教程:https://www.osgeo.cn/qgis-tutorial/
QGIS文档:https://docs.qgis.org/3.28/zh-Hans/docs/user_manual/introduction/getting_started.html#downloading-sample-data
有各平台版本的下载(这里我选择Win 3.28):
可以直接安装发行版(https://zhuanlan.zhihu.com/p/370633306
),如下:
也可通过OSGeo4W来通过网络安装并管理版本(http://t.csdn.cn/Ko0HL
),如下:
3.28发行版安装好后启动界面如下:
QGIS加载csv数据
新建工程,选择添加分割文本图层:
设置相关属性后添加:
效果如下:
插件相关:
加载图片:Freehand raster georeferencer
支持MapServer:Mapserver Export / GeoCat Bridge
QGIS不仅可以通过桌面编辑和展现各类GIS数据,还可以通过QGISServer将编辑好的矢量数据发布成标准的OGC服务,然后通过OpenLayers等客户端访问这些数据。
4. PostGIS数据库
官方地址:https://postgis.net/
PostgreSQL安装:https://zhuanlan.zhihu.com/p/62157728
PostGIS空间数据库安装:https://zhuanlan.zhihu.com/p/353414054
有了空间数据库之后,就不再需要专门的GIS数据引擎(GIS Data Engine)去处理和操作空间数据了,应用程序只需要通过SQL语言就能轻松地处理空间数据。
普通数据库拥有字符串(string)、数值(number)和日期(date)这些数据类型,空间数据库添加了额外的数据类型(空间数据类型)以用于表达地理特征(geographic features),如边界(boundary)、维度(dimension)和形状(shape)。可以用来判断如A点是否在B边界内等问题。
PostGIS是PostgreSQL的一个插件,通过向PostgreSQL添加对空间数据类型、空间索引和空间函数的支持,将PostgreSQL数据库管理系统转换为空间数据库。
PostgreSQL是一个强大的对象关系数据库管理系统(ORDBMS)。
自GIS软件被首次开发以来,Shapefile(和其他文件格式诸如Esri File Geodatabase、GeoPackage)一直是空间数据存储和交互的标准数据格式。
PostgreSQL安装地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
这里我选择15.2,默认安装即可,然后设置超级管理员的密码,端口5432。
安装PostgreSQL安装完成后,提示运行Stack Builder。通过该工具安装PostGIS。Stack Builder运行后,选择安装目标软件为PostgreSQL 15 on port 5432
。然后在安装程序选择对话框中选择PostGIS 3.3
。(这里如果不能安装PostGIS,也可以去PostGIS官网下载PostGIS进行安装)。
然后Stack Builder会下载PostGIS 3.3的安装程序。下载后就会安装,在设置安装组件时,最好选择"Create spatial database",以便在创建数据库时可以以此作为模板。对于其他步骤的设置都选择默认值即可。
安装完成后,打开图形管理工具pgAdmin:
输入密码就可以进入了:
给这个pgAdmin设置中文,首先打开Application Stack Builder,然后安装语言包:
进入pgAdmin中设置即可:
具体的使用可以参考:https://www.runoob.com/postgresql/postgresql-tutorial.html
5. OpenLayers(JS)浏览器客户端
官方地址:https://openlayers.org/
开发入门:https://zhuanlan.zhihu.com/p/341896668
vue项目:https://gitee.com/shtao_056/vue-openlayers
Openlayers可以访问服务端(如MapServer、QGISServer
)发布的数据,最终实现地图的编辑、存储、发布和显示功能。
以上。
【C++】9.GIS应用:开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)相关推荐
- [050] 微信公众平台开发入门视频教程已公布
2014年4月26日晚8点.我在CSDN社区在线培训课堂解说了微信公众平台开发入门的相关知识.受到广大网友的一致好评.在此非常感谢大家的支持.课程结束后,非常多网友表示因为报名人数限制.暂时有事等原因 ...
- 微信公众平台开发入门
微信公众平台开发入门 开发简介 公众号的分类 微信公众平台概述 微信公众平台和微信开放平台的区别 开发需知 开发模式 开始开发 开发中遇到的问题 开发简介 公众号的分类 我们平常在微信应用上会看到有很 ...
- 视频教程-微信公众平台开发入门-微信开发
微信公众平台开发入门 订阅后,请点击此处观看大牛全套视频课程:课程播放页链接 价格可能因活动略有浮动 刘运强 ¥39.00 立即订阅视频课 订阅后:请点击此处观看视频课程 视频教程-微信公众平台开发入 ...
- 微信公众平台开发入门教程(图文)
关键字:微信公众平台开发入门 作者:贝创工作室 原文: http://www.cnblogs.com/imaker/p/5491433.html 背景知识:微信公众平台的开发需要有一定的PHP基础知识 ...
- 基于php的微信公众平台开发入门实例
作者:zbtree 这篇文章主要介绍了基于php的微信公众平台开发入门,实例分析了微信公众平台从注册.配置方法及接口代码的实现技巧,深入浅出.希望可以帮助大家快速入门. CSDN学院开设了系列直播&l ...
- Cordys BOP 4平台开发入门实战演练——会签流程建模开发
关于会签 会签是指联合发文时,由各发文机关的领导共同签署文件. 会签是撰拟公文的过程中,主办单位主动与有关单位协商并核签的一种办文程序,一般当公文的内容涉及本单位的多个部门或与其他单位有关时,需要进行 ...
- 微信公众平台开发入门视频教程已发布
2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制.临时有事等原因, ...
- [050] 微信公众平台开发入门视频教程已发布
2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制.临时有事等原因, ...
- 微信公众平台开发入门教程[2019版]
关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公 ...
最新文章
- 将数字字符串格式化为指定长度
- 用python语言调试程序你用的平台是_Python 程序如何高效地调试?
- kotlin 判断数字_Kotlin程序检查数字是偶数还是奇数
- 今天刚开通博客,很开心
- php在html里面的位置,关于script在html中的摆放位置解析
- Linux Kernel ‘mp_get_count()’函数本地信息泄露漏洞
- 计算圆弧与矩形相交_【技术】新型七层矩形卷边工艺实践
- 网页性能优化{雅虎[转载]}
- Linux内核开发_3_busybox
- prthon日期型、字符串、数值、时间戳相互转换
- 法国在华企业名单,坚决抵制!
- 禁用win10系统的Cortana小娜进程,笔记本散热风扇冷静了
- Linux发行版之间有什么区别?
- 【学习笔记】NOIP爆零赛8
- 发现一个推特前端替代网站,可以直接浏览推特用户发布的内容。
- java-net-php-python-jsp学生党团管理信息系统2020演示录像计算机毕业设计程序
- [Qt]QMainWindow
- csdn分类专栏使用指南
- 微信聊天记录导出及年度报告软件使用方法
- 使用python 自动给微信好友发送消息 pyautogui库下载