我在 Spyder 中使用 pyproj 时出错,但在同一个 conda 环境中的 Jupiter 实验室中却没有

如何解决我在 Spyder 中使用 pyproj 时出错,但在同一个 conda 环境中的 Jupiter 实验室中却没有

这是我的功能

def geographics2proyected(crsg,crsp,lat_lon):
    """
    Transforms a list of geographic coordinates xyg from geographic
    coordinate reference system crsg to a proyected crsp one
    Parameters
    ----------
    crsg : int
        geographic coordinate reference system
    crsp : int
        proyected coordinate reference system
    lat_lon : List of lists of str (latitude,longitude)
        latitude is a str with the format DDMMSSC
        longitude is a str with the format DDMMSSC
        where DD degres,MM minutes,SS seconds and C is a cardinal direction:
        N,S,E,W
    Returns
    -------
    xyp List of list of [x,y] in the projected crsp
    """
import pyproj as proj
import numpy as np

if proj.crs.CRS(crsg).is_projected:
    raise ValueError(f'crs {crsg:d} is not geographic')
if proj.crs.CRS(crsp).is_geographic:
    raise ValueError(f'crs {crsp:d} is not projected')
transformer = proj.Transformer.from_crs(crsg,crsp)
xyp = np.empty((len(lat_lon),2),np.float32)
for i,lat_lon1 in enumerate(lat_lon):
    for j,item in enumerate(lat_lon1):
        dg = float(item[0:2])
        mn = float(item[2:4])
        sc = float(item[4:6])
        d = item[6:7]
        if j == 0:
            if d not in 'NS':
                raise ValueError (f'{item} is not a longiude')
            lat_deg = dg + (mn/60) + (sc/3600)
            if d == 'S':
                lat_deg = -1. * lat_deg
        else:
            if d not in 'WE':
                raise ValueError (f'{item} is not a latitude')
            lon_deg = dg + mn/60 + sc/3600
            if d == 'W':
                lon_deg = -1. * lon_deg
            xp1,yp1 = transformer.transform(lat_deg,lon_deg)
            xyp[i,:] = [xp1,yp1]
return xyp.tolist()

在相同的 conda 环境中,如果我在 Jupyter 实验室中运行该函数,它会正确运行,但是如果我在 Syper 中尝试,它会在使用 pyproj 的行中引发错误。第一个引发的错误是:

文件 "C:\Users...\gis_utils\gis_utils.py",第 31 行,在 geos2proyected 如果 proj.crs.CRS(crsg).is_projected: init 中的文件“C:\Users\solis\miniconda3\envs\env01\lib\site-packages\pyproj\crs\crs.py”,第 296 行 super().init(projstring) 文件“pyproj_crs.pyx”,第 2309 行,在 pyproj._crs._CRS.init pyproj.exceptions.CRSError: Invalid projection: epsg:4258: (Internal Proj Error: proj_create: cannot build geodeticCRS 4258: sqlite error on SELECT extent.description、extent.south_lat、extent.north_lat、extent.west_lon、extent.east_lon、scope .scope,(CASE WHEN scope.scope LIKE '%large scale%' THEN 0 ELSE 1 END) AS score FROM usage JOIN extent ON usage.extent_auth_name = extent.auth_name AND usage.extent_code = extent.code JOIN scope ON usage.scope_auth_name = scope.auth_name AND usage.scope_code = scope.code WHERE object_table_name = ? AND object_auth_name = ? AND object_code = ? ORDER BY 分数,usage.auth_name,usage.code:没有这样的表:用法

SO Windows 10。Python 3.8、conda 4.9.2、spyder 4.2.0、pyproj 3.0.1。我也有 QGIS 3.16.6

非常感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?