GEE代码条带问题——sentinel-1接缝处理的问题

问题

我有兴趣确定 NDVI 损失最大的年份。我创建了一个函数来收集所有陆地卫星图像并应用预处理。当我导出结果以识别 NDVI 损失最大年份时,生成的数据产品与陆地卫星场景足迹有可怕的接缝线。造成这种情况的原因是什么以及如何调整代码?

sentinel1数据影像拼接产生的条带问题的主要原因有以下几点:

1. 数据采集模式:sentinel1卫星采用合成孔径雷达(SAR)技术进行数据采集,其数据采集模式包括Stripmap、Interferometric Wide Swath(IW)和Extra Wide Swath(EW)等,这些不同的模式下数据的采集方式和分辨率不同,可能导致拼接后出现条带问题。

2. 不同轨道数据拼接:sentinel1卫星的数据采集是通过不同的轨道进行的,不同轨道之间可能存在位置偏差和分辨率差异,当将这些数据拼接在一起时,由于数据之间的差异会导致条带问题的出现。

3. 数据预处理:在数据拼接之前,需要进行预处理操作,如辐射校正、大气校正、地形校正等,但不同数据之间预处理时所采用的方法和参数可能不同,这也会导致拼接后的数据出现条带问题。

4. 大气湿度和地形的影响:sentinel1卫星的雷达信号受大气湿度和地形的影响较大,不同区域和不同时间的大气湿度和地形情况可能存在差异,当将这些数据拼接在一起时,可能会导致条带问题的出现。

综上所述,sentinel1数据影像拼接产生的条带问题的主要原因包括数据采集模式、不同轨道数据拼接、数据预处理和大气湿度、地形等因素的影响。

代码:


var countries = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017"),studyArea = ee.FeatureCollection("projects/mangrovescience/SDG_Ghana/Gold_Mining/StudyAreaSubset"),minesYear = ee.Image("projects/mangrovescience/SDG_Ghana/Gold_Mining/Ghana_MinesRF_30m_MaxYear3YrAvg2019Full");
//=====================================================================================================================
//                                        MIT - NASA - University of Maryland (ESSIC)
// Remote Sensing of Land Cover and Ecosystems: Country-level Ecosystem Extent and Change Mapping in Sub-Saharan Africa
//                                                  
// Project: Small-scale Gold Mining in Ghana 
// Code: Ghana NDVI Anomaly Timeline
// Written by: Amanda Payton, NASA Goddard 
// Edited by: Abigail Barenblitt NASA Goddard and University of Maryland 
// Co-authors: Daniel Wood, MIT; Lola Fatoyinbo, NASA Goddard; David Lagomasino, East Carolina University
// Objective: This code identifies the year of highest NDVI decrease per pixel, 
//            creates an image to display the year, exports the image, and calculates the area per year.//=====================================================================================================================//=======================================================================================
//STEP 1: Create a collection of Landsat Images 
//=======================================================================================//import the random forest classification of mines from script one
var rf_classification = ee.Image('projects/ee-pbaltezar91/assets/GHA2023_ASSETS/5_Ghana_classRF_30m2VarSplit_30Trees2010-01-01_2023-12-30')
var maxYrDeriv = ee.Image('projects/ee-pbaltezar91/assets/GHA2023_ASSETS/7_GHA_MinesRF_30m_Max3YrAvg_2000_2023')
Map.addLayer(maxYrDeriv)
Map.addLayer(rf_classification)//=======================================================================================
//STEP 1: Create a collection of Landsat Images 
//=======================================================================================
//This will assemble Landsat imagery from 2002-2023 and harmonize imagery from
//Landsat 5,7, & 8//Define region of interest 
//--------------------------
//var assetId = 'projects/ee-pbaltezar91/assets/GHA2023_ASSETS/'//Edit to your local folder
var region = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017").filterMetadata("country_na","equals","Ghana"); //country border of Ghana
var countryCode = 'GHA'
var bounds = region.geometry().bounds()
Map.addLayer(bounds,null, 'Study Area Bounds')
Map.centerObject(bounds,10)
// Define years and dates to include in landsat image collection
//---------------------------------------------------------------
var startYear = 2002;         //what year do you want to start the time series 
var endYear   = 2023;         //what year do you want to end the time series
var startJulian  = 0;      //what is the beginning of date filter | DOY
var endJulian    = 153;      //what is the end of date filter | DOYvar crs = 'EPSG:4326'//WGS 84 UTM zone 30 N, between 6°W and 0°W, northern hemisphere between equator and 84°N, onshore and offshore.
var cloud = 50// Visualize Landsat Observation Image
var obsstart = '2010-01-01'; //date to start observation period
var obsend = '2023-12-30'; //date to end observation period//#####################################
// Function to mask clouds
// Assumes the image is a Landsat C2 image
function maskClouds(image) {// Bits 3 and 4 are cloud and cloud shadow, respectively.var cloudsBitMask = (1 << 3);var cloudShadowBitMask = (1 << 4);// Get the pixel QA band.var qa = image.select('QA_PIXEL');// Both flags should be set to zero, indicating clear conditions.var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0).and(qa.bitwiseAnd(cloudsBitMask).eq(0));return image.updateMask(mask);
}
//#####################################
// Functions to apply scaling factors for C2 imagery
function applyScaleFactors_L8(image) {var opticalBands = image.select('SR_B.*').multiply(0.0000275).add(-0.2);var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0).float();return image.addBands(opticalBands, null, true).addBands(thermalBands, null, true);}
function applyScaleFactors_L7L5(image) {var opticalBands = image.select('SR_B.*').multiply(0.0000275).add(-0.2);var thermalBand = image.select('^ST_B.*').multiply(0.00341802).add(149.0).float();return image.addBands(opticalBands, null, true).addBands(thermalBand, null, true);}
//#####################################
//Function for acquiring Landsat SR image collection
function getLandsatImageCollection(studyArea,startDate,endDate,startJulian,endJulian,cloud){var ls;var l5SR;var l7SR;var l8SR;var l9SR;var out;var sensorBandDictLandsatSR =ee.Dictionary({L9: ee.List([1,2,3,4,5,6,8,17,18]),L8 : ee.List([1,2,3,4,5,6,8,17,18]),L7 : ee.List([0,1,2,3,4,5,8,17,18]),L5 : ee.List([0,1,2,3,4,5,8,17,18])});var bandNamesLandsatSR = ee.List(['SR_B1','SR_B2','SR_B3','SR_B4','SR_B5','SR_B6','ST_B10','QA_PIXEL', 'QA_RADSAT']);l5SR = ee.ImageCollection("LANDSAT/LT05/C02/T1_L2").filterDate(startDate,endDate).filter(ee.Filter.calendarRange(startJulian,endJulian)).filterBounds(studyArea).filter(ee.Filter.lte('CLOUD_COVER_LAND',cloud)).select(sensorBandDictLandsatSR.get('L5'),bandNamesLandsatSR).map(maskClouds).map(applyScaleFactors_L7L5);l7SR = ee.ImageCollection("LANDSAT/LE07/C02/T1_L2").filterDate(startDate,endDate).filter(ee.Filter.calendarRange(startJulian,endJulian)).filterBounds(studyArea).filter(ee.Filter.lte('CLOUD_COVER_LAND',cloud)).select(sensorBandDictLandsatSR.get('L7'),bandNamesLandsatSR).map(maskClouds).map(applyScaleFactors_L7L5);l8SR = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2").filterDate(startDate,endDate).filter(ee.Filter.calendarRange(startJulian,endJulian)).filterBounds(studyArea).filter(ee.Filter.lte('CLOUD_COVER_LAND',cloud)).select(sensorBandDictLandsatSR.get('L8'),bandNamesLandsatSR).map(maskClouds).map(applyScaleFactors_L8);l9SR = ee.ImageCollection("LANDSAT/LC09/C02/T1_L2").filterDate(startDate,endDate).filter(ee.Filter.calendarRange(startJulian,endJulian)).filterBounds(studyArea).filter(ee.Filter.lte('CLOUD_COVER_LAND',cloud)).select(sensorBandDictLandsatSR.get('L9'),bandNamesLandsatSR).map(maskClouds).map(applyScaleFactors_L8);ls = ee.ImageCollection(l5SR.merge(l7SR).merge(l8SR).merge(l9SR));out = ls.set('system:time_start', ls.get('system:time_start')) ;return out.select('^SR_B.*');
}
//#####################################
// Create a function that adds a year band to the collection
var addYear = function(image){var date = ee.Date(image.get('system:time_start')).get('year');var year = ee.Image(date).subtract(2000).rename('Year').byte(); //get Year of Image (after 2000)return image.addBands(year);}; //add as band
//############# End of Functions ########################Create the dates for temporal filtering
if(startJulian > endJulian){endJulian = endJulian + 365}var startDate = ee.Date.fromYMD(startYear,1,1).advance(startJulian,'day');
var endDate = ee.Date.fromYMD(endYear,1,1).advance(endJulian,'day');
print(startDate, endDate, 'Study Time Period');//Apply functions
//---------------
var collectionSR = getLandsatImageCollection(region,startDate,endDate,startJulian,endJulian,cloud)
var collectionSR_wIndex = collectionSR.map(function(i){var ndvi = i.normalizedDifference(['SR_B4', 'SR_B3']).rename('NDVI')return i.addBands(ndvi)
}); //add vegetation indices
var collection_IndexYear = collectionSR_wIndex.map(addYear); //add year bandMap.centerObject(region,7)
Map.setOptions('SATELLITE')
Map.addLayer(ee.Image().byte().paint(region,3,3),{palette:'yellow'},'Study Area Region: '+countryCode,false)
Map.addLayer(collectionSR_wIndex,{bands:['SR_B5','SR_B4','SR_B3'],gamma:1.00,'min': 0.05,'max': [0.30,0.40,0.40]},'Landsat Composite',false)//=======================================================================================
//STEP 2: Create Image of Greatest NDVI Decrease Per Year
//=======================================================================================//loop through image collection and get a maximum image for each year
var maxCollection = ee.ImageCollection(ee.List.sequence(startYear,endYear).map(function(year){ return collection_IndexYear.filter(ee.Filter.calendarRange(year,year,'year')).max().set('Year', year);
}));var maxList = ee.List(maxCollection.toList(maxCollection.size())); //convert image collection to list
//print('Max List of Annual Images',maxList);//function to get 3-year moving average
var myFunction = function(i){var nextYear = ee.Number(i).add(1);var previousYear = ee.Number(i).add(-1)var nextY = ee.Image(maxList.get(nextYear)); // next image in collectionvar thisYear = ee.Image(maxList.get(i)); //current image in collectionvar previousY =  ee.Image(maxList.get(previousYear));//previous year in collectionvar avg = thisYear.select('NDVI').add(nextY.select('NDVI')).add(previousY.select('NDVI')).divide(3) // Calculate average of this image and next image in collection.multiply(-1).rename('NDVI_avg'); //multiply by -1 to flip average (we want loss not gain)return ee.Image(maxList.get(i)).addBands(avg);    // Add Moving average band };var listSequence = ee.List.sequence(1,maxList.size().subtract(2));
var avgCollection = ee.ImageCollection(listSequence.map(myFunction));// AS IMAGE COLLECTIONvar avgList = ee.List(avgCollection.toList(avgCollection.size()));// AS LIST//function to get derivative of NDVI curve (max change between years)
var myFunction2 = function(i){var aaa = ee.Number(i).add(1);var bbb = ee.Image(avgList.get(aaa)); // next image in collectionvar ccc = ee.Image(avgList.get(i)); //current image in collectionvar avg = bbb.select('NDVI_avg').subtract(ccc.select('NDVI_avg')).rename('NDVI_deriv');return  ee.Image(avgList.get(i)).addBands(avg);
};var listSequence2 = ee.List.sequence(0,avgList.size().subtract(2));
var derivCollection = ee.ImageCollection(listSequence2.map(myFunction2)); // AS IMAGE COLLECTION//Reduce collection to get year of maximum derivative
var derivMosaic = derivCollection.qualityMosaic('NDVI_deriv') ; // Quality Mosaic based on max derivativevar derivativeMaxYear = derivMosaic.select('Year'); // select the Year of max derivative 
// ----------------------Ghana_MinesRF_30m_MaxYear3YrAvg
// Export.image.toAsset({
//     image: derivativeMaxYear,
//     description: '7_'+countryCode+'_'+'MinesRF_30m_Max3YrAvg_'+startYear+'_'+endYear,
//     assetId: assetId+'7_'+countryCode+'_'+'MinesRF_30m_Max3YrAvg_'+startYear+'_'+endYear,
//     region: region,
//     crs:crs,
//     scale: 30,
//     maxPixels: 1e13
//   });
// //=======================================================================================
// //STEP 3: Get Area Per Year 2007-2017 and Chart
// //=======================================================================================var years = ee.List.sequence(1,23,1);var getArea = ee.FeatureCollection(years.map(function(i){var year = ee.Number(i);              //is this where we update?var def = maxYrDeriv.eq(year);//add derivative Max Year get new output to export latervar defArea = def.multiply(ee.Image.pixelArea()).divide(10000).reduceRegion({reducer:ee.Reducer.sum(),geometry:region,scale: 100,maxPixels:1e13,tileScale: 16}).get('Year');return ee.Feature(null).set('Area', defArea).set('Year',year);
}));
print(getArea)
//Construct Bar Chartvar options = {title: 'Mining Area by Year',vAxis: {title: 'Area in Hectares'},legend: {position: 'none'},hAxis: {title: 'Year',logScale: false}
};var areaChart = getArea.select(['Year','Area'])print(areaChart.getInfo())var chart = ui.Chart.feature.byFeature(areaChart,'Year');
var chart = chart.setChartType('ColumnChart')
var chart = chart.setOptions(options)
print(chart)//=======================================================================================
//STEP 4: Map results
//=======================================================================================
//Set up visualization
var palette = ['#4B0082', '#9400D3',  '#0000FF', '#00FF00', '#FFFF00', '#FF7F00', '#FF0000'];
var yodVizParms = {min: 7,max: 17,palette: palette
};// Map of Loss Year based on Maximum NDVI Derivative//Get mines and clean
var final_mines = rf_classification.select(0).eq(1).selfMask();//Set Variables
var mines = final_mines;
var scale = 30;var minesMaxYear = derivativeMaxYear.updateMask(mines).clip(studyArea);// Map of Loss Year based on Maximum NDVI Derivative
Map.addLayer(minesMaxYear,yodVizParms,'Max Derivative Year',true);//Observation Period Landsat Imagery
Map.addLayer(collection_IndexYear.filterDate(obsstart,obsend).median().clip(region), {bands: ['B3', 'B2', 'B1'], min:200, max:1500}, 'Landsat Image', false);//NDVI Average Collection
Map.addLayer(avgCollection.select("NDVI_avg"), {}, 'Average Collection', false);//Derivative NDVI Collection
Map.addLayer(derivCollection.select('NDVI_deriv'), {}, 'Derivative Collection', false)// =======================================================================================
// STEP 5: Export layers
// =======================================================================================//Export Area Table
print('Area Collection',getArea);
Export.table.toDrive({collection:getArea, description: "Ghana_Area_RF"});//Export mines classification image
Export.image.toDrive({image: minesMaxYear.clip(studyArea),description: 'Ghana_MinesRF_30m_MaxYear3YrAvg2019Full',region: region,scale: scale,maxPixels: 1e13
});//****************************************************************************************************************************//END CODE///

真正代码

var roiId = 'projects/mangrovescience/SDG_Ghana/Gold_Mining/StudyAreaSubset';
var roi = ee.FeatureCollection(roiId);var ic = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2').filterBounds(roi).select(['SR_B4', 'SR_B5'], ['red', 'nir']);// Simplifies the dates used in the original script.
var startYear = 2013;
var endYear = 2023;var years = ee.List.sequence(startYear, endYear, 1); // [2013, ..., 2023]ic = ic.filter(ee.Filter.calendarRange(startYear, endYear, 'year'));function scaleImages(image) {var scale = 0.0000275;var offset = -0.2;return image.multiply(scale).add(offset).copyProperties(image, ['system:time_start']);
}function computeNDVI(image) {var ndvi = image.normalizedDifference(['nir', 'red']).rename('ndvi');return ndvi.copyProperties(image, ['system:time_start']);
}// Scales images and calculates the NDVI
var ndviCol = ic.map(scaleImages).map(computeNDVI);// For each year in "years", obtain an image representing the max NDVI value.
function getAnnualMaxImages(years) {var images = years.map(function(y) {y = ee.Number(y);var imagesYearY = ndviCol.filter(ee.Filter.calendarRange(y, y, 'year'));var date = ee.Date.fromYMD(y, 1, 1).millis();var maxImage = imagesYearY.max().set('system:time_start', date, 'year', y);return maxImage;});return ee.ImageCollection.fromImages(images);
}var maxImages = getAnnualMaxImages(years);// Get 3-year moving average and adds the year band.
var maxImagesList = maxImages.toList(maxImages.size());var n = ee.Number(endYear - startYear);
var indices = ee.List.sequence(0, n.subtract(1), 1);var avgImages = indices.map(function(index) {index = ee.Number(index);var prev = index.subtract(1);var curr = index;var next = index.add(1);var prevImg = ee.Image(maxImagesList.get(prev));var currImg = ee.Image(maxImagesList.get(curr));var nextImg = ee.Image(maxImagesList.get(next));var date = currImg.date().millis();var year = currImg.date().get('year');var avgImg = ee.ImageCollection([prevImg, currImg, nextImg]).mean();var yearBand = ee.Image(year).subtract(2000).toUint8().rename('year').updateMask(avgImg.mask());return avgImg.addBands(yearBand).set('system:time_start', date, 'index', index);
});avgImages = ee.ImageCollection.fromImages(avgImages);// Remove the first and last year from the analysis - due to the 3-years moving
// average.
var minMaxIndices = ee.List(indices).reduce(ee.Reducer.minMax());
minMaxIndices = ee.Dictionary(minMaxIndices).values();avgImages = avgImages.filter(ee.Filter.inList('index', minMaxIndices).not());// It applies the reducer to obtain the lowest average for each pixel and the 
// year in which this lowest average was detected.
var result = avgImages.reduce(ee.Reducer.min(2).setOutputs(['ndvi_avg_min', 'year_of_ndvi_avg_min']));// Uncomment to check the results.
Map.addLayer(result.select(0), { min: 0, max: 0.8 });
Map.addLayer(result.select(1), { min: 13, max: 22 });// Calculates the area, in square meters, for each year within the study area.
var pixelArea = ee.Image.pixelArea().addBands(result.select('year_of_ndvi_avg_min'));var areaByYear = result.reduceRegion({reducer: ee.Reducer.sum().group({groupField: 1,groupName: 'year'}),geometry: roi,scale: 30,maxPixels: 1e13
});areaByYear = ee.List(areaByYear.get('groups'));
var areaByYearList = areaByYear.map(function(item) {var dict = ee.Dictionary(item); // { sum: ..., year: ... }var year = ee.Number(dict.get('year')).format(); // "13"var area = ee.Number(dict.get('sum')); // 123.456return ee.List([year, area]); // ["13", 123.456]
});// { year: area } dictionary.
var theEnd = ee.Dictionary(areaByYearList.flatten());
print(theEnd)

函数

qualityMosaic(qualityBand)

Composites all the images in a collection, using a quality band as a per-pixel ordering function.

使用质量带作为每个像素的排序函数,合成图像集中的所有图像。

Arguments:

this:collection (ImageCollection):

The collection to mosaic.

qualityBand (String):

The name of the quality band in the collection.

Returns: Image

问题图 

 接缝图

 github

如果想处理条带的结果

GitHub - xingguangYan/Landsat-5-NDWI-image-restoration

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter之终极报错

看到这个报错头都大了 一开始在网上各种搜搜&#xff0c;然后有人说是flutter版本的问题&#xff0c;改完版本之后还是不对&#xff0c;又是各种搜搜搜 有人说是环境变量的问题&#xff0c;后来改了环境变量&#xff0c;妈的&#xff0c;竟然还不行&#xff0c;想砸电脑的心都…

Xcode :Could not build module ‘WebKit‘ 已验证解决

问题&#xff1a;Could not build module WebKit 具体报错如下&#xff1a; error: type argument nw_proxy_config_t (aka struct nw_proxy_config *) is neither an Objective-C object nor a block type property (nullable, nonatomic, copy) NSArray<nw_proxy_config_…

C++学习笔记:set和map

set和map set什么是setset的使用 关联式容器键值对 map什么是mapmap的使用map的插入方式常用功能map[] 的灵活使用 set 什么是set set是STL中一个底层为二叉搜索树来实现的容器 若要使用set需要包含头文件 #include<set>set中的元素具有唯一性(因此可以用set去重)若用…

掌握未来技术:一站式深度学习学习平台体验!

介绍&#xff1a;深度学习是机器学习的一个子领域&#xff0c;它模仿人脑的分析和学习能力&#xff0c;通过构建和训练多层神经网络来学习数据的内在规律和表示层次。 深度学习的核心在于能够自动学习数据中的高层次特征&#xff0c;而无需人工进行复杂的特征工程。这种方法在图…

大模型笔记:RAG(Retrieval Augmented Generation,检索增强生成)

1 大模型知识更新的困境 大模型的知识更新是很困难的&#xff0c;主要原因在于&#xff1a; 训练数据集固定,一旦训练完成就很难再通过继续训练来更新其知识参数量巨大,随时进行fine-tuning需要消耗大量的资源&#xff0c;并且需要相当长的时间LLM的知识是编码在数百亿个参数中…

一些C语言知识

C语言的内置类型&#xff1a; char short int long float double C99中引入了bool类型&#xff0c;用来表示真假的变量类型&#xff0c;包含true&#xff0c;false。 这个代码的执行结果是什么&#xff1f;好好想想哦&#xff0c;坑挺多的。 #include <stdio.h>int mai…

STM32(5) GPIO(2)输出

1.点亮LED 1.1 推挽接法和开漏接法 要想点亮LED&#xff0c;有两种接法 推挽接法&#xff1a; 向寄存器写1&#xff0c;引脚输出高电平&#xff0c;LED点亮&#xff1b;向寄存器写0&#xff0c;引脚输出低电平&#xff0c;LED熄灭。 开漏接法&#xff1a; 向寄存器写0&…

《精益DevOps》:填补IT服务交付的认知差距,实现高效可靠的客户期望满足

写在前面 在当今的商业环境中&#xff0c;IT服务交付已经成为企业成功的关键因素之一。然而&#xff0c;实现高效、可靠、安全且符合客户期望的IT服务交付却是一项艰巨的任务。这要求服务提供商不仅具备先进的技术能力&#xff0c;还需要拥有出色的组织协作、流程管理和态势感…

UniApp项目处理小程序分包

目前 uniApp也成为一种 App端开发的大趋势 因为在目前跨端 uniApp可以说相当优秀 可以同时兼容 H5 PC 小程序 APP 的技术 目前市场屈指可数 那么 说到微信小程序 自然就要处理分包 因为微信小程序对应用大小限制非常铭感 限制在2MB 超过之后就会无法真机调试与打包 不过需要注…

vue项目中使用antvX6新手教程,附demo案例讲解(可拖拽流程图、网络拓扑图)

前言&#xff1a; 之前分别做了vue2和vue3项目里的网络拓扑图功能&#xff0c;发现对antv X6的讲解博客比较少&#xff0c;最近终于得闲码一篇了&#xff01; 需求&#xff1a; 用户可以自己拖拽节点&#xff0c;节点之间可以随意连线&#xff0c;保存拓扑图数据后传给后端&…

cPanel面板安装付费的SSL证书

前不久遇到购买Hostease服务器的客户反馈需要安装SSL证书。因为安装 SSL 证书不仅可以保护用户数据安全&#xff0c;增加用户信任度&#xff0c;提升搜索引擎排名&#xff0c;还有助于符合法规和标准&#xff0c;防止网络攻击。 安装SSL证书可以通过如下步骤: 1. 选择 SSL 证书…

数学建模【多元线性回归模型】

一、多元线性回归模型简介 回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的任务就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进…

Linux配置网卡功能

提示:工具下载链接在文章最后 目录 一.network功能介绍二.配置network功能2.1 network_ip配置检查 2.2 network_br配置2.2.1 配置的网桥原先不存在检查2.2.2 配置的网桥已存在-修改网桥IP检查2.2.3 配置的网桥已存在-只添加网卡到网桥里检查 2.3 network_bond配置检查 2.4 netw…

Access AR Foundation 5.1 in Unity 2022

如果已经下载安装了ARF但版本是5.0.7 可以通过下面的方式修改 修改后面的数字会自动更新 更新完成后查看版本 官方文档 Access AR Foundation 5.1 in Unity 2021 | AR Foundation | 5.1.2

【知识整理】Git 使用实践问题整理

问题1、fatal: refusing to merge unrelated histories 一、Git 的报错 fatal: refusing to merge unrelated histories 新建了一个仓库之后&#xff0c;把本地仓库进行关联提交、拉取的时候&#xff0c;出现了如下错误&#xff1a; fatal: master does not appear to be a g…

电脑无法开启虚拟化

vm开启虚拟化失败 如果出现以下错误&#xff0c;需要进入bios界面&#xff0c;不同电脑进入界面的方式不一样。这里以hp为例&#xff1a; 1、关机后&#xff0c;按住开机键和f10&#xff0c;进入如下界面&#xff08;语言在主菜单里面&#xff09; 2、选择先进和下面的系统选…

c语言游戏实战(10):坤坤的篮球回避秀

前言&#xff1a; 这款简易版的球球大作战是博主耗时两天半完成的&#xff0c;玩家需要控制坤坤在游戏界面上移动&#xff0c;来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写&#xff0c;旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代…

Vue使用高德地图定位到当前位置,并显示天气信息

首先得去高德控制台申请两个 key&#xff0c;一个天气key和一个定位key 获取天气信息的函数&#xff1a; const getWeather function (city) {// 使用 fetch 发送请求获取天气信息fetch(https://restapi.amap.com/v3/weather/weatherInfo?city${city}&keyeefd36557b0250…

哪个有名的工具可以安全记事 私密记事本笔记推荐

在这个数字化的时代&#xff0c;我们的生活已经离不开各种记事工具。它们帮助我们记录生活中的点点滴滴&#xff0c;无论是工作上的重要事项&#xff0c;还是个人的私密心情。然而&#xff0c;当我在寻找一个能够安心记录私密事情的工具时&#xff0c;安全性成为了我最关心的因…

【软件测试】Postman中变量的使用

Postman中可设置的变量类型有全局变量&#xff0c;环境变量&#xff0c;集合变量&#xff0c;数据变量及局部变量。区别则是各变量作用域不同&#xff0c;全局变量适用于所有集合&#xff0c;环境变量适用于当前所选环境&#xff08;所有集合中均可使用不同环境变量&#xff09…