> 文章列表 > 【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

【C++ 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

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

浏览器输入http://localhost/或者http://127.0.0.1/将可以看到MS4W的页面。这样mapserver就安装成功了:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

测试mapserver是否支持WMS服务,使用cmd命令行进入MS4W的安装路径(如D:\\ms4w\\Apache\\cgi-bin),执行mapserv -v

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

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):

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

可以直接安装发行版(https://zhuanlan.zhihu.com/p/370633306),如下:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

也可通过OSGeo4W来通过网络安装并管理版本(http://t.csdn.cn/Ko0HL),如下:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

3.28发行版安装好后启动界面如下:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

QGIS加载csv数据

新建工程,选择添加分割文本图层:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

设置相关属性后添加:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)
效果如下:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

插件相关:

加载图片: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

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

这里我选择15.2,默认安装即可,然后设置超级管理员的密码,端口5432。

安装PostgreSQL安装完成后,提示运行Stack Builder。通过该工具安装PostGIS。Stack Builder运行后,选择安装目标软件为PostgreSQL 15 on port 5432。然后在安装程序选择对话框中选择PostGIS 3.3。(这里如果不能安装PostGIS,也可以去PostGIS官网下载PostGIS进行安装)。

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)
【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

然后Stack Builder会下载PostGIS 3.3的安装程序。下载后就会安装,在设置安装组件时,最好选择"Create spatial database",以便在创建数据库时可以以此作为模板。对于其他步骤的设置都选择默认值即可。

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

安装完成后,打开图形管理工具pgAdmin:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

输入密码就可以进入了:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

给这个pgAdmin设置中文,首先打开Application Stack Builder,然后安装语言包:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

进入pgAdmin中设置即可:

【C++ GIS】开源GIS平台开发入门(MapServer+QGIS+PostGIS+OpenLayers)

具体的使用可以参考: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)发布的数据,最终实现地图的编辑、存储、发布和显示功能。

以上。