yunflour 2023-03-20 01:43 采纳率: 100%
浏览 65
已结题

pyinstaller打包后出错问题

img


函数如下首先调用的函数是lon_lat_fuc,在python环境下运行没有任何问题,通过pyinstaller打包后会报错

 def lon_lat_fuc(self):
        try:
            if not self.line_red.text() and not self.line_nir.text():
                QMessageBox.warning(self, "提示", "没有任何遥感数据")
                return 0
            transform_file = self.line_red.text() if self.line_red.text() else self.line_nir.text()
            red_dataset = gdal.Open(transform_file)
            srs = osr.SpatialReference(wkt=red_dataset.GetProjection())
            src_epsg = int(srs.GetAttrValue('AUTHORITY', 1))
            transform, rever_transform = self.transform_to_wgs84(src_epsg, red_dataset)
            ul_lon, lr_lat, lr_lon, ul_lat = self.get_lat_lon_bounds(red_dataset, transform)
            self.lon_lat.setText(f"经纬度范围: \n({lr_lon}, {lr_lat}) - ({ul_lon}, {ul_lat}) ")
        except Exception as e:
            QMessageBox.warning(self, "提示", f"出现异常:{e}")
            return 0
    def transform_to_wgs84(self, src_epsg, dataset):
        src_srs = osr.SpatialReference()
        src_srs.ImportFromEPSG(src_epsg)

        tgt_srs = osr.SpatialReference()
        tgt_srs.ImportFromEPSG(4326)

        transform = osr.CoordinateTransformation(src_srs, tgt_srs)
        rever_transform = osr.CoordinateTransformation(tgt_srs, src_srs)
        return transform, rever_transform
    def get_lat_lon_bounds(self, dataset, transform):
        gt = dataset.GetGeoTransform()
        x_size = dataset.RasterXSize
        y_size = dataset.RasterYSize

        x_min, y_max = gt[0], gt[3]
        x_max, y_min = gt[0] + x_size * gt[1], gt[3] + y_size * gt[5]
        print(x_min,y_max,x_max,y_min)
        print(transform.TransformPoint(x_min, y_max))
        (ul_lon, ul_lat, _) = transform.TransformPoint(x_min, y_max)
        (lr_lon, lr_lat, _) = transform.TransformPoint(x_max, y_min)

根据copilot的修改意见,修改了两个变量,但仍然是相同的报错
提示
出现异: Wrong number or type of arguments for overloaded functionCoordinateTransformation TransformPoint!.Possible C/C++ prototypes are:OSRCoordinateTransformationShadow::TransformPoint(double [3])OSRCoordinateTransformationShadow.:TransformPoint(double (4])OSRCoordinateTransformationShadow.TransformPoint(double(3]double,double,double)
OSRCoordinateTransformationShadow.:TransformPoint(double41double,double,doubledouble)

(ul_lon, ul_lat, _) = transform.TransformPoint((x_min, y_max, 0))
        (lr_lon, lr_lat, _) = transform.TransformPoint((x_max, y_min, 0))

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-03-20 08:34
    关注

    看看 TransformPoint() 这个,参数错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月18日
  • 已采纳回答 4月10日
  • 创建了问题 3月20日

悬赏问题

  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”