当前位置: 首页 > 编程日记 > 正文

Linux qgis 编译,QGIS简介与源代码编译

QGIS(http://qgis.org)是一个集成了很多个开源的空间数据处理库的桌面GIS软件,支持Python脚本。QGIS基于QT和SIP进行开发,支持Windows\Linux\MacOS等操作系统,可以访问MySQL/PostGRE等数据库的空间数据,可以连接到OpenstreetMap拉取数据做本地分析和制图。

跟专业的GIS平台如SuperMap(http://www.supermap.com.cn)、ArcGIS等相比,QGIS虽然功能算不上强悍,好多模块还有Bug,但处理一些小数据、画几个简单的地图倒也是绰绰有余,而且是免费和开源的,作为学习是一个非常不错的起点(那些商业软件可不会给你看源代码,而且死贵死贵的....,不过,要做项目和应用系统,还是推荐用SuperMap了,可以支持服务器、桌面、移动端、Web的全面开发,还有完善的培训和技术支持,而QGIS只是一个小型的桌面工具)。

目前版本的QGIS(2.10.0)是基于QT4.8.6和Python2.7.9的,都是上一代的最终稳定版本,可以保证环境的稳定,但确实有点老了。要知道QT都5.5了,Python都3.4了。不过,目前官方的Team就是这样搞的,要是自己去升级的话,估计要长好多包啊,因为很多库都是没有最新版本的。

使用上就不多说了,既然是学习,自己编译和看源代码那时必须的。

1、编译环境

先说一下基础环境,我用的VirtualBox5.0+UbuntuKylin15.04虚拟机。因为QGIS用的软件库有点老,别随便装软件(否则弄个新的库可能不兼容),最好是搞个全新的虚拟机进行安装。

也可以到这里去:https://github.com/qgis/QGIS 使用git clone抓下来目前开发的代码,目前是2.11开发版。不过,我抓的这个版本编译没有通过,2.10的倒是很顺利。

我用的UbuntuKylin 15.04是Vivid版本,执行下面的操作进行安装。

apt-get install bison cmake doxygen flex git graphviz grass-dev

libexpat1-dev libfcgi-dev libgdal-dev libgeos-dev libgsl0-dev

libopenscenegraph-dev libosgearth-dev libpq-dev libproj-dev

libqscintilla2-dev libqt4-dev libqt4-opengl-dev libqt4-sql-sqlite

libqtwebkit-dev libqwt5-qt4-dev libspatialindex-dev libspatialite-dev

libsqlite3-dev lighttpd locales pkg-config poppler-utils pyqt4-dev-tools

python-all python-all-dev python-pyspatialite python-qscintilla2

python-qt4 python-qt4-dev python-sip python-sip-dev qt4-doc-html

spawn-fcgi txt2tags xauth xfonts-100dpi xfonts-75dpi xfonts-base

xfonts-scalable xvfb cmake-curses-gui

2、编译源码

然后,执行下面的过程进行下载、解包、编译:

sudo apt-get install build-essential

wget http://qgis.org/downloads/qgis-latest.tar.bz2

tar -vxf qgis-latest.tar.bz2

cd qgis-2.10.0

mkdir build

cd build

cmake ..

make

完成后,进入build\ouput\bin,运行qgis,正常的话应该已经可以使用了。

3、安装QGIS

如果只是下载代码编译,可能有的库没有安装,也可以下载QGIS的安装包先进行安装。

sudo gedit /etc/apt/sources.list

#编辑软件源列表,然后加入下面两行:

deb  http://qgis.org/debian vivid main

deb-src http://qgis.org/debian vivid main

#注意:vivid是Ubuntu15.04的版本号代码,如果是其它的,需相应修改。

#参考:

#然后,加入源的认证码:

gpg --keyserver keyserver.ubuntu.com --recv DD45F6C3

gpg --export --armor DD45F6C3 | sudo apt-key add -

#最后,执行安装操作。

sudo apt-get update

sudo apt-get install qgis python-qgis qgis-plugin-grass

#大功告成,进控制台,运行之。

qgis

4、QGIS在线源码的编译

在线的源代码2.11版因为在修改,加入了QWT的一些东西,目前需要手工进行安装。

抓取源码最新版本,然后按照提示进去编译:

git clone

cd QGIS

mkdir build-master

cd build-master

cmake ..

make

sudo make install

遗憾的是,会出一些错,因为这是个开发版,出错是正常的。

5、编译QWT和QWTPolar

我这里报的是QWTPolar的库找不到,OK,开始网络搜索。

要装QWTPolar需要先装QWT,这是一个QT的绘图扩展库,而且要6.1版本以上。但是这与原来的说明的路径就有了很多变化。

编译qwt:

tar -vxf qwt6.1.2.tar.bz2

cd qwt6.1.2

qmake

make

sudo make install

哈哈,还挺顺利的。

只不过,安装完后的目录是/usr/local/qwt6.1.2,这个很重要的啊,因为qwtpolar缺省用的并不是这个目录。

现在执行下面的脚本,把新的路径和环境变量加进去:

export PATH=/usr/local/qwt-6.1.2/include:$PATH

export QMAKEFEATURES=/usr/local/qwt-6.1.2/features

再去编译QWTPolar这个库:

unzip qwtpolar1.1.1.zip

cd qwt1.1.1

qmake

make

sudo make install

如果有问题,把系统重启一下,我就是这样搞定的。如果还不行,祝你好运啦!

6、修改QGIS的配置参数

再次进入QGIS/build-master目录,我们上面自己建的那个专门用于编译的目录。

ccmake ..

按照提示,修改里面QWTPOLAR相关的变量:

QWTPOLAR_INCLUDE_DIR=/usr/local/qwtpolar-1.1.1/include

QWTPOLAR_LIBRARY=/usr/local/qwtpolar-1.1.1/lib/libqwtpolar.so

#以及

QWT_INCLUDE_DIR=/usr/local/qwt-6.1.2/include

QWT_LIBRARY=/usr/local/qwt-6.1.2/lib/libqwt.so

然后选择“g”进行编译文件Makefile的创建,然后make即可。

相关文章:

一步步写自己SqlHelper类库(五):Command对象

1.Command对象基础 当我们使用Connection对象里面的方法打开数据库后,要查询自己所需的数据或对数据库的内容进行增删改时,Command对象就派上用场了! MSDN定义:建立与数据源的连接后,利用Command对象来执行命令并从数据…

MVC-前台调用后台action 传递upload file 参数问题

在后台获取upload file 数量的时候发现count一直为0,经检查发现了问题 ,代码如下: 前台: var data $("#DetailForm").serialize(); $.ajax({ url: Url.Action("SaveRequest", "RegistrationRequest&quo…

Storybook 5.0正式发布:有史以来变化最大的版本\n

Storybook 5.0(SB5)于近日正式发布,这是目前为止最大的一个版本。新版本的内容包括: 全新的开发者体验;带有主题的组件库;改进的前端插件架构;全新的Storybook网站。 Storybook的进展和未来 Sto…

linux6直连存储挂载磁盘,CentOS7mount网络磁盘的详细步骤

在配置前一定先关闭防火墙systemctl disable firewalldsystemctl stop firewalldsystemctl mask firewalld一.修改iscsi客户端的用户名vi /etc/iscsi/initiatorname.iscsiInitiatorName iqn.************;【注:eg:iqn.2017-09.com.centos:cl…

如何将Java源代码文件的编码从GBK转为UTF-8?

有时候看到有意思的demo,在头痛导入项目的编码和workspace的编码不一样的时候 我试着将 笔记本打开一个类一个类的复制, demo的类比较少的时候 可以忍受,demo的类多的时候 除了靠之外 别无办法 今天再找仿ios样式demo的时候 实在受不了乱码&a…

电子书格式怎么在线转换为PDF格式

电子书格式怎么在线转换为PDF格式,现在很多朋友喜欢用PDF格式的电子书,因为其有纸质书的排版和格局,但实际生活中出现的最多的是TXT等格式的电子书,那如何将其进行转换成PDF格式的呢,下面就由小编来告诉大家转换的解决…

设计模式笔记(18)---迭代器模式(行为型)

Gof定义 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露该对象的内部表示。 动机 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访…

linux卸载mpfr,Red Hat Linux在安装gcc时遇到的问题汇总

找到了一个比较老的RedHatlinux,想要装上apachetomcat。由于是在虚拟机中运行,我想先装一个vmware-tools提高性能。但是安装的过程中我发现竟然找不到gcc。于是我就去网上(] http://www.linuxidc.com/Linux/2009-01/18242.htm 与 http://www.linuxidc.co…

【数据结构】某些难理解点

1 typedef char ListData;2 //表示以后可以用ListData来代替char类型3 4 typedef struct node{ //此处node,只在结构体中出现和使用5 ListData data;6 struct node *link;7 }ListNode; //表示将整个结构体命名为ListNode,也就是说…

利用jQuery实现用户名片小动画

我爱撸码,撸码使我感到快乐!大家好,我是Counter。下面给大家介绍利用jQuery实现的小动画,非常的简便,如果有原生js操作的话,那么就不止这么多行了。至于CSS,个人觉得,这边CSS布局也蛮…

Linux二进制导出配置文件,Go打包二进制文件的实现

背景众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。操作需求:打包部署到centos7笔者打包环境:mac os方法:进入main.go所在目录,输入如下命…

crud springmvc

实体类:Student.java Java代码 package demo.entity; public class Student { private int id; private String name; private String sex; private String address; public int getId() { r…

从 Flutter 的视频渲染到 App 落地经验

3月23日周六,由 RTC 开发者社区主办的 “RTC Dev Meetup 北京站”如约举行,超过100位求知若渴的开发者参加了活动。来自 LeanCloud、声网 Agora、阿里、美团点评的资深工程师,与他们共同分享了 Flutter 开发中的实践经验。 我们在这里回顾一下…

screen命令

原文链接 screen其实就是linux虚拟终端,你可以用它创建很多虚拟终端,每个终端可以创建1~10个窗口,每个窗口相当于一个linux shell窗口,可以执行的操作和正常shell完全一样。 【终端操作】 (需要在物理shell中操作&a…

linux 565显示格式,RGB565转BMP格式 C语言程序

#include#include#include#include"rgb2bmp.h"int RGB2BMP(char *,int ,int ,FILE *);int main(int argc,char *argv[]){double num_tmp 0;FILE *p;/*************** input data ***********filename :RGB数据文件名称nWidth :所生成文件的水平像素n…

Spring Boot @ConfigurationProperties使用指导

1.简介 Spring Boot的一个非常有用的功能是外部化配置,并且可以轻松访问属性文件中定义的属性。 我们现在将详细地探索ConfigurationProperties注释。 2.设置 本文使用相当标准的设置。我们首先在我们的pom.xml中添加spring-boot-starter-parent作为父项&#xff1a…

UVA 10494 - If We Were a Child Again(高精度除法和取余)

题目链接:http://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem1435 这个题做的好没状态。上几天刷的高精度都白刷了啊。。。首先代码除法和取余以前都做过,还要查看以前的代码,模板还…

python显示当前时间

import time time.strftime("%Y%m%d %X", time.localtime()) #当前时区 time.strftime("%Y%m%d %X", time.gmtime(time.time()))#0时区 下面是format字符串的解释: strftime(format[, tuple]) -> string 将指定的struct_time(默认为当前时间…

linux系统 插优盘安装xvidcap,linux下的视频录制软件xvidcap

1.xvidcap简介在linux如果我们想要进行视频录制,那么xvidcap是一个不错的选择。Xvidcap 是一个可将屏幕上的操作过程录制下来并保存为视频的小工具。对于需要制作产品演示和教学的朋友来说,这个屏幕录像机十分实用。Xvidcap 支持生成 avi、mpeg、asf、fl…

ASP.NET Cookie

最经在使用Cookie的过程中遇到了一些疑问,查阅参考MSDN,记录Cookie相关知识点 什么是Cookie Cookie是一小段文本信息,伴随着用于的请求和页面在Web服务器和浏览器之间传递,并将它存储在用户硬盘上的某个文件夹中。Cookie包含每次用户访问站点…

1111 评论

201406114205 陈嘉慧 http://www.cnblogs.com/hui1005039632/ 201406114219 林宇粲 http://www.cnblogs.com/zlcan/ 201406114220 蔡舜 http://www.cnblogs.com/caishun/ 201406114215 林志杰 http://www.cnblogs.com/15linzhijie/ 201406114252 王俊杰 http://www.cnblogs.c…

React 16.8.6 发布,构建用户界面的 JavaScript 库

React 16.8.6 已发布,该版本更新如下: React DOM 修复 useReducer() 中的问题(acdlite in #15124)修复 Safari DevTools 中的 iframe 警告(renanvalentin in #15099)若 contextType 设置为 Context.Consume…

linux禁止路由器,FCC 新规可能禁止在 WiFi 路由器安装 OpenWRT

FCC(美国联邦通讯委员会)的新规则可能会禁止在 WiFi 路由器安装 OpenWRT。OpenWrt 类似于 Buildroot 的路由器固件,为嵌入式设备所研发的 Linux 发行版。目前 OpenWrt 已支持多个平台(如 ARM、mips、x86 等),且提供了许多开源应用程序!许多便…

智销功能_Shiro权限框架

Shiro是什么? Spring security 重量级安全框架 Apache shiro 轻量级安全框架 Shiro是一个强大且易用的Java权限框架 四大基石 身份验证,授权,密码学,会话管理 /*** String algorithmName, Object source, Object salt, int hashIt…

ARM、FPGA和DSP的特点和区别是什么?(转)

发布时间:2009-5-8 14:25 发布者:ARM 关键词:DSP, ARM, FPGA, 特点 DSP(digital singnal processor)是一种独特的微处理器,有自己的完整指令系统,是以数字信号来处理大量信息的器件。一个…

unix to linux,UNIX to Linux 的关键问题都有哪些?

答:针对问题描述有一些不同的观点。1、第一个问题就是应用架构的改造问题,需要支持负载均衡模式。说明:这个不一定需要支持负载均衡模式,首先本身LINUXONE提供多分区架构,不需要改变原有应用系统的部署模式。而且负载均…

MongoDb 查询时常用方法

Query.All("name", "a", "b");//通过多个元素来匹配数组Query.And(Query.EQ("name", "a"), Query.EQ("title", "t"));//同时满足多个条件Query.EQ("name", "a");//等于Query.Exist…

解决Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/

https://blog.csdn.net/quanqxj/article/details/79479943转载于:https://www.cnblogs.com/liuys635/p/10624068.html

从 StarCraft 2 Installer.exe 中提取种子文件

蛋疼的想在 Linux 下下载星际争霸,但是暴雪提供的是 exe 格式的文件,这其实就是个 BT 客户端,但是问题是怎么提取出里面的种子文件呢,经过一番 google 找到了答案。 直接用 Vi 或 Emacs 打开 exe 格式的文件,搜索“d8:…

linux下接口持续集成,部署jenkins持续集成工具

1、Linux安装配置jdk环境1.1、上传到 Linux 服务器;例如:上传至: cd /usr/local1.2、解压:rpm -ivh jdk-8u111-linux-x64.rpm1.3、环境变量配置cd /etc在etc下,找到 profile文件,增加如下如下配置&#xff…