QGIS教程|[QGIS]常用操作--矢量图层加载与创建
文章中使用的QGIS版本为:3.14.16-Pi
本文主要介绍如何使用QGIS通过使用界面操作和Python代码打开矢量数据(如shp文件或csv文件),以及如何添加矢量数据.
矢量图层加载与创建
- 矢量图层加载
-
- 加载CSV文件
- 加载SHP文件
- 重投影与格式互转
- 新建图层
矢量图层加载 加载CSV文件 【QGIS教程|[QGIS]常用操作--矢量图层加载与创建】我在平时调试程序时,会使用csv文件将临时结果输出,然后加载到QGIS中查看.这里简单介绍下,怎么加载csv文件.
- 菜单栏点击"图层"->“添加图层”->“添加文本数据图层”
- 在弹出的"数据源管理器"中,选择csv文件,并指定横纵(有高程的可以指定Z)坐标字段(一般QGIS会自动识别这些字段,部分情况如识别错误,可以手动指定)和坐标参考线后,点击"添加",即可将数据加载,如下图
文章图片
- 添加后的效果如下
文章图片
- 可以通过直接选中*.shp文件,然后移动鼠标拖入QGIS进行加载
- 也可以在上步的"数据源管理器"界面,选中"矢量",然后指定为文件类型和文件路径后,点击"添加"进行加载,如下图
文章图片
- 格式转换是经常遇到的作业,QGIS提供了基于GDAL的数据格式转换,如上步的shp格式数据可以转换为gpkg,geojson,sqlite等格式
- 平时工作中,重投影也是常见操作,如从经纬度的EPSG4326重投影为UTM的EPSG32650等,操作如下图
重投影时,通过指定输出文件类型,也可以实现文件格式转换
文章图片
- 此处简单介绍下,如何通过在QGIS中使用Python代码创建矢量图层,并保存到文件中,一般有以下步骤:
- 创建内存图层,此时需要设置图层的几何类型,如点->Point,线->LineString等
- 设置图层的字段列表
- 打开图层编辑,开始向图层添加数据
- 提交数据,关闭图层编辑
- 向磁盘写入本图层数据.
样例代码如下
import os
import sys
from qgis.gui import *
from qgis.core import *
import qgis.utils
from qgis.core import QgsProjectmapCanvas = iface.mapCanvas()
minx = 115.4121250000000032
miny = 39.4379350000000031
maxx = 117.5067739999999930
maxy = 41.0583829999999992
layername = "Rectangle"
print("create layer:%s..." % (layername))
lineVecLayer = QgsVectorLayer("LineString", layername, "memory")
lineProvider = lineVecLayer.dataProvider()
lineProvider.addAttributes( [ QgsField("seq", QVariant.Int),QgsField("name",QVariant.String)] )
lineVecLayer.startEditing()
print("editing layer:%s..." % (layername))
points = [QgsPoint(minx, miny), QgsPoint(minx, maxy), QgsPoint(maxx, maxy), QgsPoint(maxx, miny), QgsPoint(minx, miny)]
# create feature
print("add feature to layer:%s..." % (layername))
line_feature = QgsFeature(lineVecLayer.fields())
line_feature.setGeometry(QgsGeometry().fromPolyline(points))
line_feature.setAttributes([1, "bj_bbox"])
lineVecLayer.addFeature(line_feature)
# Commit changes
lineVecLayer.commitChanges()
# write data to disk
LineFile = "D:\\01_WorkSpace\\05_Data\\blog\\qgis\\Rectangle.gpkg"
crs = QgsCoordinateReferenceSystem("EPSG:4326")
QgsVectorFileWriter.writeAsVectorFormat(lineVecLayer, LineFile, "utf-8", crs, "GPKG")
print("save layer:%s to disk ok!" % (layername))
local_uri = LineFile + "|layername=" + layername
qgsLayer = QgsVectorLayer(local_uri, layername, "ogr")
# add layer to the project
QgsProject.instance().addMapLayer(qgsLayer)
参考资料
[1]QGIS Python api
以上是关于QGIS加载矢量图层或创建矢量图层的简单介绍,希望能对您有所帮助,如对上述有疑问或者建议,欢迎私信~~
推荐阅读
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 数组常用方法一
- 用npm发布一个包的教程并编写一个vue的插件发布
- 20180322【w4复盘日志】
- 常用git命令总结
- java|java 常用知识点链接
- 狗狗定点大小便视频教程下载地址
- SwiftUI|SwiftUI iOS 瀑布流组件之仿CollectionView不规则图文混合(教程含源码)