mac pycharm+pyqgis开发记录

本文描述了在mac下使用pycharm+pyqgis做gis开发相关经验记录。

1. 环境配置

安装qgis过程略过。
打开设置,添加:
在这里插入图片描述

改变如下项:
在这里插入图片描述

可看到配置已变成:
在这里插入图片描述
等待更改完成:
在这里插入图片描述

配置后测试:from qgis.core import *。若没有报错即为配置正确在这里插入图片描述

2 第一个功能

2.1 绘制多段线

以下代码在Qgis的Python控制台中执行。

import csv
# 定义行结构体
class dataInfo:
    def __init__(self):
        self.equipID = ""
        self.timestamp = []
        self.lat = []
        self.lng = []
        
csvFile = open("../1.csv")
dInfo = []  # 存储所有格式化后的点数据
reader = csv.reader(csvFile)
for item in reader:
    haveSame = False  # 记录是否有重复的,有的话就不用新增
    for i in range(0, len(dInfo)):
        if dInfo[i].equipID == item[0].split('_')[0]:
            for j in range(0, len(dInfo[i].timestamp)):
                if float(item[1]) < float(dInfo[i].timestamp[j]):
                    dInfo[i].timestamp.insert(j, item[1])
                    dInfo[i].lat.insert(j, item[2])
                    dInfo[i].lng.insert(j, item[3])
                    break
                if j == len(dInfo[i].timestamp) - 1:
                    dInfo[i].timestamp.append(item[1])
                    dInfo[i].lat.append(item[2])
                    dInfo[i].lng.append(item[3])
            haveSame = True
            break
    if not haveSame:
        dInfoTemp = dataInfo()
        dInfoTemp.equipID = item[0].split('_')[0]
        dInfoTemp.timestamp.append(item[1])
        dInfoTemp.lat.append(item[2])
        dInfoTemp.lng.append(item[3])
        dInfo.append(dInfoTemp)

for i in range(0, len(dInfo)):
    testData = []
    for j in range(0, len(dInfo[i].timestamp)):
       testData.append(QgsPoint(float(dInfo[i].lat[j]), float(dInfo[i].lng[j])))
    sf = QgsFeature()
    lineLayer = QgsVectorLayer("LineString", str(len(dInfo[i].timestamp)) + " " + dInfo[i].equipID, "memory")
    dt = lineLayer.dataProvider()
    sf.setGeometry(QgsGeometry.fromPolyline(testData))
    dt.addFeatures([sf])
    lineLayer.updateExtents()
    QgsProject.instance().addMapLayer(lineLayer)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值