精华内容
下载资源
问答
  • 对应点怎么找
    千次阅读 多人点赞
    2021-04-07 16:01:01

    任务描述:我有站点的点shp文件,想从遥感降水产品中批量提取出站点所在栅格的值→ 多个站点+多幅图像的批量提取

    #-*- coding: UTF-8 -*-
    '''
    这篇代码是用于根据站点的shp文件批量提取降雨图中该点所在像元的值并存为新的点元素文件
    '''
    
    import arcpy
    from arcpy import env
    from arcpy.sa import *
    import os
    
    arcpy.CheckOutExtension("Spatial")       #仅在使用浮动板许可情况下需要 CheckOutExtension获取许可
    
    #先遍历点元素文件,再遍历栅格文件,做提取
    cFileNumber = 0
    dir = 'F:\\station_point_shp\\' #指定点元素所在文件夹的路径
    for root, dirs, files in os.walk(dir):                            #遍历该文件夹
    	for point_file in files:                                      #遍历刚获得的文件名files
    		(filename, extension) = os.path.splitext(point_file)      #将文件名拆分为文件名与后缀
    		if (extension == '.shp'):                                 #判断该后缀是否为.shp文件
    			cFileNumber= cFileNumber+1                            #记录.shp文件的个数为对应文件号
    			in_point_features = dir+point_file                    #点元素位置
    
    			#指定路径和工作区间
    			path_file = 'F:\\MSWEP_V2.6_Monthly_tif\\'
    			arcpy.env.workspace='F:\\MSWEP_V2.6_Monthly_tif\\'
    
    			#读取路径中所有文件
    			ls = os.listdir(path_file)
    			print(len(ls))                             #输出文件总数
    
    			#遍历路径中所有的tif文件,根据坐标输出新的带有属性值的点元素
    			for i in ls:
    				if os.path.splitext(i)[1] == ".tif":   #os.path.splitext函数用于分离文件名与扩展名
    					in_raster = i                      #i作为输入栅格
    					in_raster_name = i[0:6]
    
    					#判断文件夹是否存在
    					if os.path.exists(r'F:\\MSWEP_station_point_pre\\'+point_file[0:13]):
    						out_point_features='F:\\MSWEP_station_point_pre\\'+point_file[0:13]+'\\'+in_raster_name+'.shp'  #输出位置
    					else:
    						os.makedirs(r'F:\\MSWEP_station_point_pre\\'+point_file[0:13])
    						out_point_features='F:\\MSWEP_station_point_pre\\'+point_file[0:13]+'\\'+in_raster_name+'.shp'  #输出位置
    
    					ExtractValuesToPoints(in_point_features, in_raster, out_point_features)       #调用函数
    					print(i)
    
    

    后记:

    写博客的初衷是分享经验,同时是算是自己对思路和代码的整理,方便日后处理数据,应该可以帮到很多人。
    我已免费分享我的心得,如果看官还有其他问题的,那么:知识付费,我的时间和经验正好可以解决你的问题。
    咨询问题请添加QQ:819369354

    2022年4月20日

    更多相关内容
  • 其次这一部分主要是由于我对于PCL库中对于源点云和目标对应关系查找感到好奇,而去研究的,是对于PCL库中代码的理解。 二、预备知识 一、大家需要提前预备学习Kd-tree以及最近邻收缩和半径区域收缩。 三、PCL...

    一、声明

    本人作为初学者,才开始接触点云配准这一块,如有错误地方,望大家指出,我将及时修改,共同进步。其次这一部分主要是由于我对于PCL库中对于源点云和目标点云对应关系查找感到好奇,而去研究的,是对于PCL库中代码的理解。

    二、预备知识

    一、大家需要提前预备学习Kd-tree以及最近邻收缩和半径区域收缩。

    三、icp算法配准流程

    点云配准步骤上可以分为粗配准(Coarse Registration)和精配准(Fine Registration)两个阶段。

    粗配准:是指在点云相对位姿完全未知的情况下对点云进行配准,找到一个可以让两块点云相对近似的旋转平移变换矩阵,进而将待配准点云数据转换到统一的坐标系内,可以为精配准提供良好的初始值。常见粗配准算法:

    精配准:是指在粗配准的基础上,让点云之间的空间位置差异最小化,得到一个更加精准的旋转平移变换矩阵。该算法的运行速度以及向全局最优化的收敛性却在很大程度上依赖于给定的初始变换估计以及在迭代过程中对应关系的确立。所以需要各种粗配准技术为ICP算法提供较好的位置,在迭代过程中确立正确对应点集能避免迭代陷入局部极值,决定了算法的收敛速度和最终的配准精度。最常见的精配准算法是ICP及其变种。

    • ICP 迭代最近点算法(Iterative Cloest Point)
    • 1、数据点获取
    • 2、寻找关键点
    • 3、对选择的所有关键点计算其特征秒速
    • 4、寻找对应点(icp用的是平方差距离,kd-tree的形式保存目标点云,便于源点云找其对应点,最近邻查找)
    • 5、根据寻找的对应点进行刚体变换(就算旋转矩阵R和平移量T)
    • 6、计算误差(如果误差满足条件,跳出循环,反之继续循环)

    如果大家有兴趣加深对于icp的理解,博主我自己手敲了第5点代码实现(C++版本):

    (10条消息) 点云配准1-ICP算法 原理代码实现_行码阁119的博客-CSDN博客

    四、PCL对应库函数讲解

    一、PCL库中对于源点云和目标点云对应关系的库函数:correspondence_estimation.hpp

     其中对应的函数为:

            //确定输入和目标云之间的对应关系。
            //对应找到的对应关系(查询点索引、目标点索引、距离) 
            //max_distance 对应之间的最大允许距离 
            /** \brief Determine the correspondences between input and target cloud.
              * \param[out] correspondences the found correspondences (index of query point, index of target point, distance)
              * \param[in] max_distance maximum allowed distance between correspondences
              */
            virtual void 
            determineCorrespondences (pcl::Correspondences &correspondences,
                                      double max_distance = std::numeric_limits<double>::max ()) = 0;

    二、函数代码为(函数代码注释已经比较详细)

    思路就是:先将目标点云数据转换为kd-tree保存形式,然后在依次将原点云数据进行查找其对应关系:

    //确定对应关系
    template <typename PointSource, typename PointTarget, typename Scalar> void
    CorrespondenceEstimation<PointSource, PointTarget, Scalar>::determineCorrespondences (
        pcl::Correspondences &correspondences, double max_distance)
    {
       //如果没有初始化计算 
      if (!initCompute ())
        return;
      //最大距离的平方
      double max_dist_sqr = max_distance * max_distance;
      correspondences.resize (indices_->size ());
      //保存对应目标点云的索引
      std::vector<int> index (1);
      //对应保存其对应点的距离
      std::vector<float> distance (1);
      //保存对应关系矩阵
      pcl::Correspondence corr;
      //记录其对应关系个数
      unsigned int nr_valid_correspondences = 0;
    
    
      //这里判断源点云和目标点云的数据类新是否相同,不同则进入else,反之进行对应点的查找
      if (isSamePointType<PointSource, PointTarget> ())
      {
         //迭代源索引的输入集,输入集
        // Iterate over the input set of source indices
    
        for (std::vector<int>::const_iterator idx = indices_->begin (); idx != indices_->end (); ++idx)
        {
          //这里是将源点云数据依次去查找其在目标点云中的对应点
         //大家可能对于这里tree的理解存在疑惑:tree是指向用于目标数据集的空间搜索对象的指针
         //定义于:        using KdTree = pcl::search::KdTree<PointTarget>;
         //                using KdTreePtr = typename KdTree::Ptr;   
        //                 KdTreePtr tree_;
        //这里意思是指向目标点云,且由kd_tree的形式保存,所以就不要说怎么没有把目标点云传入函数
          tree_->nearestKSearch (input_->points[*idx], 1, index, distance);
         //如果找到最小距离大于最大距离,说明找到的对应点不对应,跳过保存
          if (distance[0] > max_dist_sqr)
            continue;
          //源目标点云的索引
          corr.index_query = *idx;
          //找到的目标点云 索引
          corr.index_match = index[0];
          //两者之间的距离
          corr.distance = distance[0];
          //将其对应关系保存进correspondences
          correspondences[nr_valid_correspondences++] = corr;
        }
      }
      else
      {
        //声明一个对应点的格式
        PointTarget pt;
    
        // Iterate over the input set of source indices
        for (std::vector<int>::const_iterator idx = indices_->begin (); idx != indices_->end (); ++idx)
        {
          // 将源数据复制到目标 PointTarget 格式,以便我们可以在树中搜索 
           //好理解:就是转化为目标点云一样的数据形式(目标点云转化为kd-tree保存的形式),便于对应点的查找,
          copyPoint (input_->points[*idx], pt);
    
          tree_->nearestKSearch (pt, 1, index, distance);
          if (distance[0] > max_dist_sqr)
            continue;
    
          corr.index_query = *idx;
          corr.index_match = index[0];
          corr.distance = distance[0];
          correspondences[nr_valid_correspondences++] = corr;
        }
      }
      correspondences.resize (nr_valid_correspondences);
      deinitCompute ();
    }

    五、实验结果

    在上诉代码的最后加上一下代码:

        std::cout  << std::endl;
        for (int i = 0; i < nr_valid_correspondences; i++)
        {
            std::cout << "对应点索引nr_valid_correspondences:" << i+1 << ":" << std::endl;
            std::cout << "源点云的索引:" << correspondences[i].index_query << " " << "目标点云的索引:" << correspondences[i].index_match << " " << "两者之间的距离:" << correspondences[i].distance << std::endl;
        }

    主函数代码:

    #include <iostream>
    #include <pcl/io/pcd_io.h>
    #include <pcl/point_types.h>
    #include <pcl/registration/icp.h>
    
    int
    main(int argc, char** argv)
    {
        pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>(5, 1));
        pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_out(new pcl::PointCloud<pcl::PointXYZ>);
    
        // 设置点云数据(5个)
        for (auto& point : *cloud_in)
        {
            point.x = 1024 * rand() / (RAND_MAX + 1.0f);
            point.y = 1024 * rand() / (RAND_MAX + 1.0f);
            point.z = 1024 * rand() / (RAND_MAX + 1.0f);
        }
        //打印出输入点云的个数
        std::cout << "Saved " << cloud_in->size() << " data points to input:" << std::endl;
        //打印源点云数据
        for (auto& point : *cloud_in)
            std::cout << point << std::endl;
        //将源点云数据赋给目标点云
        *cloud_out = *cloud_in;
        //打印出目标点云的个数
        std::cout << "size:" << cloud_out->size() << std::endl;
        //将目标点云沿着x方向移动0.7个单位
        for (auto& point : *cloud_out)
            point.x += 0.7f;
        //答应目标点云的个数
        std::cout << "Transformed " << cloud_in->size() << " data points:" << std::endl;
        //打印出目标点云数据
        for (auto& point : *cloud_out)
            std::cout << point << std::endl;
        //icp算法
        pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
        //传入源点云
        icp.setInputSource(cloud_in);
        //传入目标点云
        icp.setInputTarget(cloud_out);
    
        //设置点云Final
        pcl::PointCloud<pcl::PointXYZ> Final;
        //该函数的作用是将转变结束的点云保存到Final
        icp.align(Final);
    
        std::cout << "has converged:" << icp.hasConverged() << " score: " <<
            icp.getFitnessScore() << std::endl;
        std::cout << std::endl;
        std::cout << icp.getFinalTransformation() << std::endl;
        //打印出最后完成的点云数据
        std::cout << Final << std::endl;
        for (auto& point : Final)
            std::cout << point << std::endl;
    
        return (0);
    }

    结果(由于只创建了5个点云,方便与查看):

    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:0.49
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:0.490017
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:0.490017
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:0.490017
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:0.490017
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:1.3468e-08
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:7.45058e-09
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:7.45058e-09
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:2.23517e-08
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:1.21072e-08
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:4.60366e-08
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:4.47035e-08
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:1.58325e-08
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:3.56231e-08
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:4.09782e-08
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:4.44977e-08
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:4.47035e-08
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:2.70084e-08
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:5.98375e-08
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:5.21541e-08
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:3.73907e-08
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:1.01514e-07
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:9.31323e-08
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:1.04541e-07
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:8.19564e-08
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:1.46115e-07
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:2.45869e-07
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:6.79865e-08
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:2.19792e-07
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:1.20141e-07
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:2.15677e-07
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:3.06405e-07
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:1.20141e-07
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:3.37372e-07
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:1.94646e-07
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:2.55648e-07
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:4.80562e-07
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:1.86265e-07
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:5.88596e-07
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:3.28757e-07
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:3.7762e-07
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:6.00703e-07
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:2.98955e-07
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:5.43892e-07
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:5.28991e-07
    
    对应点索引nr_valid_correspondences:1:
    源点云的索引:0 目标点云的索引:0 两者之间的距离:6.16667e-07
    对应点索引nr_valid_correspondences:2:
    源点云的索引:1 目标点云的索引:1 两者之间的距离:6.00703e-07
    对应点索引nr_valid_correspondences:3:
    源点云的索引:2 目标点云的索引:2 两者之间的距离:4.18164e-07
    对应点索引nr_valid_correspondences:4:
    源点云的索引:3 目标点云的索引:3 两者之间的距离:8.23289e-07
    对应点索引nr_valid_correspondences:5:
    源点云的索引:4 目标点云的索引:4 两者之间的距离:5.52274e-07
    has converged:1 score: 7.32622e-07

    六、结论

    通过上述代码的运行,我们可以得出结论:PCL库是将目标点云的数据先转换为kd_tree的数据形式进行保存(这里用词可能不当,但是就是这个意思),然后将源点云单个的传入其对应的函数进行查找,这里使用的是最近邻查找,通过计算两者之间的MSE距离,判断是否是其对应点,是的话,保存两者之间的索引以及两者之间的距离。然后源点云和目标点云之间的对应点就找到了。

    展开全文
  • 通过两个坐标系对应点计算转换关系

    万次阅读 多人点赞 2017-08-23 15:18:47
    通过两个坐标系对应点计算转换关系应用三维重建方法通常会自己估计相机的R,TR,T矩阵,这些矩阵定义了一个世界坐标系,在使用客观的评估方法如Middlebury来评估精度时,需要使用评估方法提供的相机的R,TR,T矩阵,这些...

    通过两个坐标系对应点计算转换关系

    应用

    三维重建方法通常会自己估计相机的 R,T 矩阵,这些矩阵定义了一个世界坐标系,在使用客观的评估方法如Middlebury来评估精度时,需要使用评估方法提供的相机的 R,T 矩阵,这些矩阵定义了另外一个世界坐标系,两者通常会有尺度、旋转、平移的差别,这就需要在坐标系之间进行转换。

    方法主要来源

    1. Nghia Ho博客
    2. 维基百科:Transformation_matrix
    3. 代码所在文件夹名称:rigid_transform_3D

    问题描述

    尺度相同

    两个相同尺度的世界坐标系可以通过 R,T 进行转换,计算转换关系需要知道双方 N 个对应点的坐标,设为A,B,则求解 B=RA+T 即可。由于 N 可能比较大,因此此方程通常为超定方程,可使用奇异值分解(Singular Value Decomposition (SVD))进行计算,其内部原理是最小二乘法。

    H=Ni=1(PiAcentroidA)(PiBcentroidB)T

    [U,S,V]=SVD(H)

    R=VUT

    T=RcentroidA+centroidB

    其中 centroidA centroidB A,B 平均中心

    尺度不同

    当两个坐标系尺度不同时, R 的计算同上,设两者的尺度倍数为λ,则

    λ=average(AcentroidA)(BcentroidB)

    等量关系变为

    (BcentroidB)=1λR(AcentroidA)

    对以上等式进行化简得:

    B=1λRA1λRcentroidA+centroidB

    因此最终要求的旋转矩阵和转移矩阵分别为 (1λRA) (1λRcentroidA+centroidB)

    如何得到对应点坐标

    以上方法的最重要的问题是如何得到对应点集 A,B 。一个具有 R,T 的相机,其相机中心在世界坐标系中的位置为 pos=RTT ,分别计算出相机在两个世界坐标系下的位置,就可以得到一组对应点。

    matlab核心代码

    尺度相同的代码

    Nghia Ho博客里的方法未考虑尺度,其核心代码为:

      %计算平均中心点
      centroid_A = mean(A);
      centroid_B = mean(B);
    
      N = size(A,1);
    
      H = (A - repmat(centroid_A, N, 1))' * (B - repmat(centroid_B, N, 1));
    
      [U,S,V] = svd(H);
    
      R = V*U';
      if det(R) < 0
      printf('Reflection detected\n');
      V(:,3) = -1*V(:,3);
      R = V*U';
      end
    
      t = -R*centroid_A' + centroid_B';
      detr=det(R)

    作者的解释是:
    There’s a special case when finding the rotation matrix that you have to take care of. Sometimes the SVD will return a ‘reflection’ matrix, which is numerically correct but is actually nonsense in real life. This is addressed by checking the determinant of R (from SVD above) and seeing if it’s negative (-1). If it is then the 3rd column of V is multiplied by -1.

    if determinant(R) < 0
      multiply 3rd column of V by -1
      recompute R
    end if

    An alternative check that is possibly more robust was suggested by Nick Lambert, where R is the rotation matrix.

    if determinant(R) < 0
      multiply 3rd column of R by -1
    end if

    尺度不同的代码

      centroid_A = mean(A);
      centroid_B = mean(B);
    
      N = size(A,1);
    
      H = (A - repmat(centroid_A, N, 1))' * (B - repmat(centroid_B, N, 1));
    
      A_move=A - repmat(centroid_A, N, 1);
      B_move=B - repmat(centroid_B, N, 1);
    
      A_norm=sum(A_move.*A_move,2);
      B_norm=sum(B_move.*B_move,2);
    
      %计算尺度平均值
      lam2=A_norm./B_norm;
      lam2=mean(lam2);
    
      [U,S,V] = svd(H);
    
      R = V*U';
    
      if det(R) < 0
      printf('Reflection detected\n');
      V(:,3) = -1*V(:,3);
      R = V*U';
      end
      %计算最终的旋转矩阵与平移向量
      t = -R./(lam2^(0.5))*centroid_A' + centroid_B';
      R = R./(lam2^(0.5));
      detr=det(R)

    结果验证与误差计算

    使用 A 和计算出的R,T计算出 B1 ,求其与真实值 B 之间的差别。

    P=[RT 01]

    [B1 1]=P[A1]

    err=1NBB1

    matlab核心代码是:

    A2 = (ret_R*A') + repmat(ret_t, 1, n);
    A2 = A2';
    
    % Find the error
    err = A2 - B;
    err = err .* err;
    err = sum(err(:));
    rmse = sqrt(err/n);
    
    disp(sprintf('RMSE: %f', rmse));
    disp('If RMSE is near zero, the function is correct!');

    一些思考

    1. 在思考尺度的影响时,直接用脑子想不太容易,而列出等量关系式之后进行化简,关系就清晰了;
    2. 搜索解决方法时,用中文几乎搜不到,最后使用英文关键字corresponding points才搜到方法;
    3. 将点集减去平均值点,其实就是将两个点集的一个对应点的坐标设置在了一起,即都为[0,0,0],这样只要做相应的旋转就可以是两个坐标系重合,用来计算 R ,之后再使用一对对应点计算T,此时使用平均值点可以提高精度。
    展开全文
  • 以上两就是本地明明有对应的jar包,但项目中还是会报不到这个jar包的原因。 解决方法 1、直接干掉_remote.repositories这个文件; 2、配置你的项目,让你的项目能够连接到下载这个包的仓库(一般为私服),...

    问题原因

    第一,你本地仓库对应的包文件夹下有_remote.repositories这个文件;
    第二,你的项目现在连接不到下载这个包的仓库;

    以上两点就是本地明明有对应的jar包,但项目中还是会报找不到这个jar包的原因。
    在这里插入图片描述

    解决方法

    1、直接干掉_remote.repositories这个文件;
    在这里插入图片描述
    2、配置你的项目,让你的项目能够连接到下载这个包的仓库(一般为私服),具体配置可通过标签来添加对应的私服仓库;
    3、修改_remote.repositories这个文件的包来源,可修改为中央仓库;

    展开全文
  • 关键词: 平滑,贝塞尔,默认,查找函数值,查值,插值,值,已知,曲线上附件详细说明了Excel画平滑曲线散点图的算法,并且提供了一个自定义函数 BezierInt() ,让用户可以随时查找曲线上任意点的坐标(函数值)...
  • 关于opencv通过initUndistortRectifyMap函数获取undistort后的对应点的方法
  • 一运行springboot启动类,就报一大堆jar报错idea Kotlin: Classpath entry points to a non-existent location:类路径条目指向不存在的位置 程序包不存在 不到符号 本地仓库也不是存在这个位置,很疑惑 然后就去...
  • 在一列数据中,找到80%的数据所对应的区域范围。 比如下表所示的是,所有人完成某项任务的处理时长,我们想找到80%的人处理这项工作所需的时间范围。 方法一: 使用函数 PERCENTILE(array,k),返回区域中数值的第k...
  • 二维绘图二维图形是将平面坐标上的数据连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。一.绘制二维曲线的基本函数在Matlab中,最基本而且应用...
  • 安卓版本对应

    千次阅读 2020-07-31 14:41:41
    记不住版本对应,为什么就非要搞个对应呢,统一不好吗? SDK版本名 API Level Android 9.0 (Pie) 28 Android 8.1 (Oreo) 27 Android 8.0 (Oreo) 26 Android 7.1.1 (Nougat) 25 Android 7.0 (Nougat) 24 Android 6.0 ...
  • 但是开Django文件夹,里面不到解释器及安装包 通过命令行也可以直观感受,首先进入webDjango conda activate webDjango conda list 显示如下: C:\Users\52572>conda activate webDjango (web...
  • keil5中不到或没有对应的芯片怎么办?超详细!! 安装完Keil5之后,有的小伙伴们是不是会发现,为什么新建工程的时候不到自己想要的CUP型号,如下图: 这里就假设要的CUP型号是三星的S3C2440A,而我刚刚装好...
  • 对应的键 max(b,key=b.get) 对应的值 b[max(b,key=b.get)]
  • import pandas as pd ...# 最小值和最小值所对应的位置 text.stack().min() Out[4]: 14 text.stack().idxmin() Out[5]: (2, 0) 转载于:https://blog.csdn.net/xiaotian127/article/details/85261655
  • Auto.js多点色兼容不同分辨率

    千次阅读 2020-10-25 23:53:14
    我的多点色代码用的是触动精灵取色器 选好坐标后会生成对应的代码,但是这个代码格式和aj里的不匹配 ,每次动手改很麻烦于是乎,写了个转换的 这个代码格式是可以自定义的,文档里有说明但是我没找到,如果哪位...
  • WPS两个EXCEL中数据如何相对应的放在一起例如:1、选中姓名这一列的数据中的标志就是表格的粗黑线,之后,依次在“开始”选项选择:“编辑”-“排序和筛选”-“自定义排序”。2、这时,会弹出“排序”窗口,在列的...
  • Elasticsearch和SpringBoot版本对应

    千次阅读 2022-08-16 10:47:43
    Elasticsearch和SpringBoot之间版本关系要适配,否则springboot不到elasticsearch的节点:主要注意以下几;低版本换高版本的Elasticsearch报错。1:查看项目中自己的springboot版本2.2.62: 查看Spring date ...
  • 这篇文章记录一下robotframe执行中出现No keyword with name的对应方法
  • 扇区和文件对应关系

    千次阅读 2018-04-11 18:51:07
    查找对应关系 如果你通过内核得知扇区的位置,怎么有找到文件呢,下面就逐一介绍一下 1.扇区块 fdisk -lu /dev/ 设备名称 就可以知道扇区所在操作系统分区,并且可以知道分区的起始扇区 2....
  • SPSS(十三)SPSS之多重对应分析(图文+数据集)

    万次阅读 多人点赞 2019-05-28 21:12:41
    前一篇SPSS(十二)SPSS对应分析(图文+数据集)讲的只是针对两个变量的,我们看其对话框,行列都只是能放一个变量而已,对应的是简单的对应分析,对应操作如下 但是假如我们研究多个变量呢?不止是两个分类...
  • AndroidStudio 3.6 中 R.layout 不到对应的xml文件

    千次阅读 热门讨论 2020-03-14 00:49:58
    在新版的AndroidStudio3.6 中,在项目的包下新建 activity 时,一般会同时生成对应的java和xml文件,例如新建 MainActivity ,则会在java包下生成 MainActivity.java ,在 res 文件夹下的layout文件中生成 activity_...
  • anaconda python 版本对应关系

    万次阅读 多人点赞 2018-07-14 15:09:48
    但是如果你只是临时想用某个版本的python,或在下表中不到对应的,你大可以直接安装最新的anaconda,然后用conda create来创建虚拟环境即可,不用非得找到对应的anaconda来装。 最佳的策略是你的机器上只保留一...
  • Anaconda与Python版本对应关系

    千次阅读 2021-03-04 10:49:37
    因此制作了下表如果使用的主要的Python版本能在下表中找到,那安装对应的Anaconda当然更好但是如果只是临时想用某个版本的Ppython,或在下表中不到对应的,你大可以直接安装最新的Anaconda,然后用conda create来...
  • anaconda 和python 版本对应关系

    千次阅读 2020-11-10 22:15:19
    但是如果你只是临时想用某个版本的python,或在下表中不到对应的,你大可以直接安装最新的anaconda,然后用conda create来创建虚拟环境即可,不用非得找到对应的anaconda来装。 最佳的策略是你的机器上只保留一个...
  • SPSS(十二)SPSS对应分析(图文+数据集)

    万次阅读 多人点赞 2019-05-28 17:08:47
    SPSS(十二)SPSS对应分析(图文+数据集) 对应分析的介绍 对应分析其实是对分类变量进行信息浓缩的方法,之前的主成分分析/因子分析针对的是连续型的变量 分析分类变量间关系时 卡方检验只能给出总体有无关联的...
  • 开事务SE11,输入数据库表名后点击显示;本文以表BKPF为例; 例如需要找到字段BLART对应凭证类型的事台配置; 找到对应的检查表名T003后;进入事务SM30,打开V_T003表; 选择维护,可进入凭证类型后台...
  • IDEA查找yml中的配置对应的类

    千次阅读 2020-10-31 10:25:23
    yml文件中可以有很多配置,写配置时如果想通过源代码来查看有哪些配置,具体的含义、逻辑是什么,必须找到对应的类,比如知道eureka.client和eureka.instance,怎么知道对应的所有详细配置,并看一下配置具体的代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 785,202
精华内容 314,080
热门标签
关键字:

对应点怎么找