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.pswp.cn/news/719302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719302.shtml
英文地址,請注明出處:http://en.pswp.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去重)若用…

【java-面試題】start和run的區別

【java-面試題】start和run的區別 在run方法內部&#xff0c;只是單純的描述了該線程要執行的內容。run方法是線程的入口。 在start方法內部&#xff0c;會調用到系統api&#xff0c;從而在系統內核中創建出線程&#xff0c;創建線程后&#xff0c;再自動調用run方法。 在代碼…

掌握未來技術:一站式深度學習學習平臺體驗!

介紹&#xff1a;深度學習是機器學習的一個子領域&#xff0c;它模仿人腦的分析和學習能力&#xff0c;通過構建和訓練多層神經網絡來學習數據的內在規律和表示層次。 深度學習的核心在于能夠自動學習數據中的高層次特征&#xff0c;而無需人工進行復雜的特征工程。這種方法在圖…

大模型筆記:RAG(Retrieval Augmented Generation,檢索增強生成)

1 大模型知識更新的困境 大模型的知識更新是很困難的&#xff0c;主要原因在于&#xff1a; 訓練數據集固定,一旦訓練完成就很難再通過繼續訓練來更新其知識參數量巨大,隨時進行fine-tuning需要消耗大量的資源&#xff0c;并且需要相當長的時間LLM的知識是編碼在數百億個參數中…

格式規范性知識的探究式學習

對于格式規范性這種規定性的知識&#xff0c;可以采用“增刪改”的方式進行控究式學習。 #include<stdio.h>int main(){printf("%.1f\n", 8.0/5.0);return 0;} 這個printf語句分兩部分&#xff0c;本身的功能就是格式化輸出&#xff0c;因此參數完全是格式化…

一些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&…

Kubernetes operator 前置知識篇

云原生學習路線導航頁&#xff08;持續更新中&#xff09; 本文是 Kubernetes operator學習 系列的前置知識篇&#xff0c;幫助大家對 Operator 進行初步了解Kubernetes operator學習系列 快捷鏈接 Kubernetes operator 前置知識篇Kubernetes operator&#xff08;一&#xff0…

《精益DevOps》:填補IT服務交付的認知差距,實現高效可靠的客戶期望滿足

寫在前面 在當今的商業環境中&#xff0c;IT服務交付已經成為企業成功的關鍵因素之一。然而&#xff0c;實現高效、可靠、安全且符合客戶期望的IT服務交付卻是一項艱巨的任務。這要求服務提供商不僅具備先進的技術能力&#xff0c;還需要擁有出色的組織協作、流程管理和態勢感…

UniApp項目處理小程序分包

目前 uniApp也成為一種 App端開發的大趨勢 因為在目前跨端 uniApp可以說相當優秀 可以同時兼容 H5 PC 小程序 APP 的技術 目前市場屈指可數 那么 說到微信小程序 自然就要處理分包 因為微信小程序對應用大小限制非常銘感 限制在2MB 超過之后就會無法真機調試與打包 不過需要注…

快速排序C語言代碼實現(2)

#include<stdio.h> void quick_sort(int arr[], int left, int right) {if (left < right) {int i left, j right, pivot arr[i];while (i < j) {while (i<j&&arr[j]>pivot) {//此時判斷使用i<j的目的是為了最終的目標位置是ij時的位置j--;}if…

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…

js原型原型鏈

js原型原型鏈 在 JavaScript 中&#xff0c;每個對象都有一個原型&#xff08;prototype&#xff09;。對象的原型是另一個對象的引用&#xff0c;它包含對象的共享屬性和方法。JavaScript 中的原型鏈則是對象之間通過原型鏈接起來的一種機制&#xff0c;用于實現繼承和屬性查找…