栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

mac pycharm+pyqgis开发记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号