Qgis二次开发包下载及配置

2023-11-13

实习已经一个多月了,这周的任务需要用到qgis,所以首先需要编译并配置好这个库,自己尝试编译这个库,但是感觉很复杂,中间出的问题没能解决也就放弃了(还得找时间再试试)。后来在网上找到了另外一个教程,其中提到可以利用Osgoe4W下载qgis二次开发包,不用自己编译源码,省了很多麻烦,果断尝试了下这种方法。


关于二次开发包下载这部分,这篇博客写得非常详细,可以参考:http://blog.csdn.net/deirjie/article/details/48216773,文章写了两个模块,我们只需要看“QGis二次开发包下载”这部分;


配置qgis,可以参考上面博主的另外一篇博文:http://blog.csdn.net/deirjie/article/details/21400109,也写得非常详细,不多说了。


可能你会说,博主你TM逗啊,什么都是别人写的,你还bb了这么多!但是,你以为你按照上面两片博文就一定能成功吗?天真!我主要是想记录一下自己在这个过程中遇到的问题,如果你也遇到了类似的问题,希望对你有所帮助,这才是我的初衷。


1.选择下载那个版本的Osgeo4W,32位 or 64位?

并不是你的电脑系统安装的是64位就得下64位的Osgeo4W,而是参照你安装的Qt版本,如果安装的Qt是32位的,那么就下载32位的Osgeo4W。昨天搜到一篇文章提到,对于4.x版本的Qt,官方只提供了32位版本的安装包,如果要安装64位版本,需要袭击编译。所以我估计一般人都是安装的32位版本的Qt。

如果安装过程中提示这条消息:fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64',我们可以在这里更改一下:


2.如果按照上面的方法,出现一堆无法解析的外部符号,在确定自己正确添加lib目录及依赖的lib库之后,可以尝试

对比一下前面配置qgis那篇博客的写法吧

配置成功之后,把下面的代码放到main.cpp里试试:

#include<QtGui/QApplication>
#include<qgsapplication.h>
#include<qgsproviderregistry.h>
#include<qgsmaplayerregistry.h>
#include<qgsvectorlayer.h>
#include<qgsmapcanvas.h>
#include<QString>
#include<QApplication>
#include<QWidget>
#include <QStringList>


#include<QMessageBox>
#include<QObject>
#include <QList>
#include <QFileInfoList>
#include <QDir>
#include <QLibrary>
#include <QDebug>

#include <qgssymbollayerv2.h>
#include <qgssymbolv2.h>
#include <qgsmarkersymbollayerv2.h>
#include <qgsvectorlayerrenderer.h>
#include <qgsrendercontext.h>
#include <qgssinglesymbolrendererv2.h>
#include <qgssymbollayerv2.h>

int main( int argc, char *argv[] )
{
	QgsApplication myApp( argc, argv, true );
	QgsApplication::setPrefixPath( "E:\\ProgramFiles\\QGIS_x86\\apps\\qgis-ltr", true );
	QgsApplication::initQgis();

	QgsProviderRegistry* provider = QgsProviderRegistry::instance();

	// 改成你自己的点矢量文件路径
	QString myLayerPath         = "E:\\123.shp";
	QString myLayerBaseName     = "airports"; //图层名称;

	QList<QgsMapLayer*> myList;
	QgsVectorLayer* veclayer = new QgsVectorLayer( myLayerPath, myLayerBaseName, "ogr", false );
	if ( !veclayer )
	{
		return 0;
	}
	if ( veclayer->isValid() )
	{
		QMessageBox::information( 0, "", "layer is valid" );
		veclayer->setProviderEncoding( "System" );  
		myList << veclayer;
	}

	if ( veclayer->geometryType() == QGis::Point )
	{
		// 创建 svgMarkerSymbolLayer
		QgsSvgMarkerSymbolLayerV2* svgMarker = new QgsSvgMarkerSymbolLayerV2();
		svgMarker->setPath( "E:\\ProgramFiles\\QGIS2.12\\apps\\qgis\\svg\\money\\money_bank2.svg" );

		QgsSymbolLayerV2List symList;
		symList.append( svgMarker );

		QgsMarkerSymbolV2* markSym = new QgsMarkerSymbolV2( symList );

		QgsSingleSymbolRendererV2* symRenderer = new QgsSingleSymbolRendererV2( markSym );

		svgMarker->setSize( 10 );

		veclayer->setRendererV2( symRenderer );
	}

	QgsMapLayerRegistry::instance()->addMapLayer( veclayer );
	QList<QgsMapCanvasLayer> myLayerSet;
	myLayerSet.append( QgsMapCanvasLayer( veclayer ) );

	QgsMapCanvas* mypMapCanvas = new QgsMapCanvas( 0, 0 );
	mypMapCanvas->setExtent( veclayer->extent() );
	mypMapCanvas->enableAntiAliasing( true );
	mypMapCanvas->setCanvasColor( QColor( 255, 255, 255 ) );
	mypMapCanvas->freeze( false );
	mypMapCanvas->setLayerSet( myLayerSet );
	mypMapCanvas->setVisible( true );
	mypMapCanvas->refresh();

	return myApp.exec();
}

如果遇到其它问题,欢迎留言。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qgis二次开发包下载及配置 的相关文章

  • arcgis的lyr样式转qgis的sld样式

    需求 xff1a arcgis样式lyr要发布到geoserver 先说最终技术路线 xff1a qgis安装slyr插件 xff0c lyr转成xml xff0c 再通过xml配图后导出sld 避免的操作 xff1a lyr直接导出sld
  • 地信

    准备 用的是qgis desktop 3 12 0 官网上下载即可 打开后页面 语言要修改成中文 setting option第一栏 算土地利用类型 双击新建项目 在浏览界面寻找双击打开自己要处理的数据 显示在图层中 图层可以上下拖动调整显
  • QGIS+PyUIC+PyQt5 ImportError: DLL load failed 解决方法

    软件环境 QGIS下载地址 https qgis org downloads https qgis org downloads QGIS OSGeo4W 3 16 5 1 Setup x86 64 exe PyCharm下载地址 https
  • QGIS 栅格数据裁剪(扣除)

    利用QGIS 以矢量数据范围来扣除栅格数据中的区域 其实也就是赋0值 首先 安装Easy Raster Splitter 插件 准备好矢量数据和栅格数据 打开Easy Raster Splitter 插件 Method 选择 Extract
  • qgis导入在线地图网址

    https webst01 is autonavi com appmaptile style 3D6 26x 3D 7Bx 7D 26y 3D 7By 7D 26z 3D 7Bz 7D zmax 18 zmin 0 type xyz url
  • QGIS二次开发08:QGIS的二次封装例子

    QGIS体系过于庞大 对二次开发有一定的学习难度 同时在后续的多个项目中会有大量相同功能的应用 因此有必要进行二次封装 暴露必要的实现接口 从而简化开发的难度 一 基础封装功能 1 空间数据加载和显示 实现工程文件加载和显示 2 地图交互动
  • VS2019+QGIS开发库二次开发环境搭建

    VS2019 QGIS开发库二次开发环境搭建 总共分为以下步骤 下载qgis和二次开发库 VS2019搭建开发环境 配置VS2019中的Qt插件 配置完Qt版本后对工程属性进行配置 编写测试代码 运行测试代码 拷贝运行程序需要用的动态库文件
  • 创建一个QGIS plugin

    创建一个QGIS plugin 1 plugins gt Plugin Builder 2 4 6 选择自己创建的插件存储的地方 最好换一个地方 默认的插件存储地方比较深 我放的地方为D coding mygistest 点击generat
  • QGIS 使用矢量数据(shp)批量裁剪栅格数据(tif)

    前提描述 有一种情况是一个矢量数据有多个元素 比如A省有11个市 那么我用A省的矢量去裁剪栅格的时候 想直接输出11个市域独立的栅格结果 也就是输出11个栅格数据 这个在ArcGIS Pro和Arcmap目前还不能直接做到 用Python肯
  • QGIS开发--小例子

    文接上篇 上次说到QGIS开发小插件的问题 讲了插件怎么开发 开发好了放哪个地方 界面怎么设置 代码怎么关联 并且遗留了一些小问题 就是怎么添加多个界面 怎么实现界面跳转 这篇文章主要就是解决这个问题的 这次内容有两个 1 界面关联 跳转
  • 使用Python计算多边形形状文件中的点数

    我有一个美国的多边形形状文件 由各个州组成作为它们的属性值 此外 我有数组存储我也感兴趣的点事件的纬度和经度值 本质上 我想 空间连接 点和多边形 或执行检查以查看每个多边形 即状态 点在 然后将每个状态中的点数相加 以找出哪个状态具有最多
  • Topojson:如何在GIS软件中设计有效的多边形、线、点?

    到目前为止 我一直使用网络上的 GIS 文件 这些文件为我提供了行政多边形 河流 陆地等 然后我将它们转换为 Topojson 格式以提供 D3js 今天我必须在 Quantum GIS QGIS 中设计自己的图层 wine areas 同
  • Google 从 QGIS 元数据文件导入 XML

    我正在尝试使用 Google Sheets importxml 捕获 qmd 文件的元素 即 xml 标记 基于如何对 Google Drive 中的文件使用 importXML 函数 https stackoverflow com que
  • 我无法安装包 spatstat.data。是否可以下载 zip 文件并复制并粘贴到 R 文件夹库中?

    新的错误消息 https i stack imgur com gy84q png我更新了spatstat包 它分为各个包 除了 spatstat data 之外 所有这些都已更新 我努力了install packages spatstat
  • python-qgis版本信息

    有人可以告诉我如何获取版本信息python qgis http docs qgis org testing en docs pyqgis developer cookbook intro html 我已经尝试了所有常规方法foo versi
  • 基于计数器递增 Python 字典值

    我有一本包含重复值的字典 Deca dict 1 2 506 2 2 506 3 2 506 4 2 600 5 2 600 6 1 650 我使用了 collections Counter 来计算每个集合的数量 decaAdd occur
  • 谷歌地图破坏 KML

    我已经创建了一些世界地区的 KML 文件 以便使用 Google 地图 API 进行显示 这一直工作正常 但最近有一个区域开始显示数据好像已损坏 你可以在这里明白我的意思 https drive google com file d 0B9u
  • 老虎普查数据中的 Shape_area 和 ALAND AWATER

    Shape area 是什么意思 我注意到它不是 Aland 和 Awater 的总和 这三个的单位是什么 ALAND和AWATER的单位是平方米 例如 tl 2015 us county dbf康明县有记录ALAND 1477895811
  • 有没有人在 Ubuntu 16.04 LTS 上安装 QGIS

    按照以下网址提供的说明进行操作 这一页 http www qgis org en site forusers alldownloads html并收到以下错误 以下软件包具有未满足的依赖关系 python qgis Depends pyth
  • QGIS 和 PostGIS(地图点(美国地图上的纬度和经度以及半径)

    我安装了QGIS和PostGIS 我想在美国地图上以 100 英里为半径显示 200 个点 我已将纬度和经度导入 PostGIS 数据库中 所以我有三个字段 地址 纬度 经度 1 我需要将纬度和经度字段转换为点或几何字段吗 如果是这样怎么办

随机推荐