栅格数据处理方法

C# VS2010 ArcEngine 获取栅格数据集像元值并以txt格式输出 introw=pRasterProps.Height;intcol=pRasterProps.Width;//获取当前栅格行数和列数。 阅读详情

转自: http://www.cnblogs.com/linghe/archive/2009/02/09/1386843.html

 

两个星期以来一直与栅格数据打交道,对AO的栅格部分应该有了一定的理解,下面是自己的一点体会,希望高手指教:-)

1、栅格数据的存储类型

栅格数据一般可以存储为ESRI GRID(由一系列文件组成),TIFF格式(包括一个TIF文件和一个AUX文件),IMAGINE Image格式 在AE中一般调用ISaveAs接口来保存栅格数据

2、栅格数据集和栅格编目的区别

一个栅格数据集由一个或者多个波段(RasterBand)的数据组成,一个波段就是一个数据矩阵。对于格网数据(DEM数据)和单波段的影像数据,表现为仅仅只有一个波段数据的栅格数据集,而对于多光谱影像数据则表现为具有多个波段的栅格数据集

栅格编目(RasterCatalog)用于显示某个研究区域内各种相邻的栅格数据,这些相邻的栅格数据没有经过拼接处理合成一副大的影像图

3、IRasterWorkspaceEx与IRasterWorkspace ,IRsterWorkspace2的区别

1).IRasteWorkspaceEx接口主要是用来读取GeoDatabase中的栅格数据集和栅格编目

2) . IRasterWorkspace ,IRsterWorkspace2主要是用来读取以文件格式存储在本地的栅格数据

4、加载栅格数据(以存储在本地的栅格数据文件为例)

1.直接用IRasterLayer接口打开一个栅格文件并加载到地图控件

IRasterLayer rasterLayer = new RasterLayerClass();

rasterLayer.CreateFromFilePath(fileName); // fileName指存本地的栅格文件路径

axMapControl1.AddLayer(rasterLayer, 0);

2. 用IRasterDataset接口打开一个栅格数据集

IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory();

IWorkspace workspace;

workspace = workspaceFactory.OpenFromFile(inPath, 0); //inPath栅格数据存储路径

if (workspace == null)

{

Console.WriteLine("Could not open the workspace.");

return;

}

IRasterWorkspace rastWork = (IRasterWorkspace)workspace;

IRasterDataset rastDataset;

rastDataset= rastWork.OpenRasterDataset(inName);//inName栅格文件名

if (rastDataset == null)

{

Console.WriteLine("Could not open the raster dataset.");

return;

}

5、如何读取栅格数据的属性和遍历栅格数据

栅格数据的属性包括栅格大小,行数,列数,投影信息,栅格范围等等,见下面代码

(假设当前加载的栅格文件栅格值存储方式为:UShort类型)

IRasterProps rasterProps = (IRasterProps)clipRaster;

int dHeight = rasterProps.Height;//当前栅格数据集的行数

int dWidth = rasterProps.Width; //当前栅格数据集的列数

double dX = rasterProps.MeanCellSize().X; //栅格的宽度

double dY = rasterProps.MeanCellSize().Y; //栅格的高度

IEnvelope extent=rasterProps.Extent; //当前栅格数据集的范围

rstPixelType pixelType=rasterProps.PixelType; //当前栅格像素类型

IPnt pntSize = new PntClass();

pntSize.SetCoords(dX, dY);

IPixelBlock pixelBlock = clipRaster.CreatePixelBlock(pntSize);

IPnt pnt = new PntClass();

for (int i = 0; i < dHeight; i++)

for (int j = 0; j < dWidth; j++)

{

pnt.SetCoords(i, j);

clipRaster.Read(pnt, pixelBlock);

if (pixelBlock != null)

{

object obj = pixelBlock.GetVal(0, 0, 0);

MessageBox.Show( Convert.ToUInt32(obj).ToString());

}

}

6、如何提取指定的范围的栅格数据

提取指定范围内的栅格数据通常用两种方法IRasterLayerExport(esriCarto), IExtractionOp, IExtractionOp2 (esriSpatialAnalyst),IRasterLayerExport接口提供的栅格数据提取功能有限,只能以矩形范围作为提取范围,而IExtractionOp接口提供了多边形,圆,属性,矩形等几种形式作为提取栅格数据.

1).IRasterLayerExport接口

IRasterLayerExport rLayerExport = new RasterLayerExportClass();

rLayerExport.RasterLayer = rasterLayer;// rasterLayer指当前加载的栅格图层

rLayerExport.Extent = clipExtent;//clipExtent指提取栅格数据的范围

if (proSpatialRef != null)

rLayerExport.SpatialReference = proSpatialRef;// proSpatialRef当前栅格数据的投影信息

IWorkspaceFactory pWF = new RasterWorkspaceFactoryClass();

try

{

IWorkspace pRasterWorkspace = pWF.OpenFromFile(_folder, 0);// _folder指栅格文件保存路径

IRasterDataset outGeoDataset = rLayerExport.Export(pRasterWorkspace, code, strRasterType);

//调用ISaveAs接口将导出的数据集保存

……………………..

}

Catch(Exception ex)

{

Throw new Argumention(ex.Message);

}

2.IExtractionOp接口(调用此接口前,应该先检查空间许可)

IExtractionOp extraction = new RasterExtractionOpClass();

try

{

IGeoDataset geoDataset = extraction.Rectangle((IGeoDataset)clipRaster, clipExtent, true);

IRaster raster = geoDataset as IRaster;

if (raster != null)

{

IWorkspaceFactory WF = new RasterWorkspaceFactoryClass();

IWorkspace rasterWorkspace = WF.OpenFromFile(_folder, 0);

ISaveAs saveAs = (ISaveAs)raster;

saveAs.SaveAs(“Result.tif”, rasterWorkspace, "TIFF");

}

}

catch (Exception ex)

{

MessageBox..Show(Ex.message);

}

7.栅格数据重采样

栅格数据的重采样主要基于三种方法:最邻近采样(NEAREST),双线性

ILINEAR)和三次卷积采样(CUBIC)。

(1).最邻近采样:它用输入栅格数据中最临近栅格值作为输出值。因此,在重采

样后的输出栅格中的每个栅格值, 都是输入栅格数据中真实存在而未加任何改变的值。这种方法简单易用,计算量小,重采样的速度最快。

(2).双线性采样:此重采样法取待采样点(x,y)点周围四个邻点,在y方向(或X方向)内插两次,再在x方向(或y方向)内插一次,得到(x,y)点的栅格值。

(3).三次卷积采样:这是进一步提高内插精度的一种方法。它的基本思想是增加邻点来获

得最佳插值函数。取待计算点周围相邻的16个点,与双线性采样类似,可先在某一方向上内插,如先在x方向上,每四个值依次内插四次,再根据四次的计算结果在y方上内插,最终得到内插结果

代码示例:采用双线性采样

IRasterGeometryProc rasterGeometryProc = new RasterGeometryProcClass();

rasterGeometryProc.Resample(rstResamplingTypes.RSP_CubicConvolution, newCellSize, clipRaster);

 

 

栅格数据重分类 (2009-01-10 10:10:09)
标签:栅格 重分类 分类:AE二次开发

public static IRasterLayer SetViewShedRenderer(IRaster pInRaster,string sField,string sPath)
{

IRasterDescriptor pRD = new RasterDescriptorClass();
pRD.Create(pInRaster, new QueryFilterClass(), sField);
IReclassOp pReclassOp = new RasterReclassOpClass();
IGeoDataset pGeodataset=pInRaster as IGeoDataset;
IRasterAnalysisEnvironment pEnv = pReclassOp as IRasterAnalysisEnvironment;
IWorkspaceFactory pWSF=new RasterWorkspaceFactoryClass();
IWorkspace pWS = pWSF.OpenFromFile(sPath, 0);
pEnv.OutWorkspace = pWS;
object objSnap = null;
object objExtent = pGeodataset.Extent;
pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref objExtent, ref objSnap);
pEnv.OutSpatialReference = pGeodataset.SpatialReference;
IRasterLayer pRLayer = new RasterLayerClass();
IRasterBandCollection pRsBandCol = pGeodataset as IRasterBandCollection;
IRasterBand pRasterBand = pRsBandCol.Item(0);
pRasterBand.ComputeStatsAndHist();
IRasterStatistics pRasterStatistic = pRasterBand.Statistics;
double dMaxValue = pRasterStatistic.Maximum ;
double dMinValue = pRasterStatistic.Minimum ;

INumberRemap pNumRemap = new NumberRemapClass();
pNumRemap.MapRange(dMinValue, 0, 0);
pNumRemap.MapRange(0, dMaxValue, 1);
IRemap pRemap = pNumRemap as IRemap;

IRaster pOutRaster = pReclassOp.ReclassByRemap(pGeodataset, pRemap, false) as IRaster ;
pRLayer.CreateFromRaster(pOutRaster);

return pRLayer;

}

 

栅格图层和矢量图层的属性表浏览
if (pLyr is IFeatureLayer)
{
DataTable pTable = new DataTable();
IFeatureLayer pFealyr = pLyr as IFeatureLayer;
IFeatureClass pFCls = pFealyr.FeatureClass;
string shape = "";
if (pFCls.ShapeType == esriGeometryType.esriGeometryPoint)
shape = "Point";
else if (pFCls.ShapeType == esriGeometryType.esriGeometryPolyline)
shape = "Polyline";
else if (pFCls.ShapeType == esriGeometryType.esriGeometryPolygon)
shape = "Polygon";

for (int i = 0; i < pFCls.Fields.FieldCount; i++)
{
pTable.Columns.Add(pFCls.Fields.get_Field(i).Name);
}
IFeatureCursor pCursor = pFCls.Search(null, false);
int ishape = pFCls.Fields.FindField("Shape");
IFeature pFea = pCursor.NextFeature();
while (pFea != null)
{
DataRow pRow = pTable.NewRow();
for (int i = 0; i < pFCls.Fields.FieldCount; i++)
{
if (i == ishape)
{
pRow[i] = shape;
continue;
}
pRow[i] = pFea.get_Value(i).ToString();
}
pTable.Rows.Add(pRow);
pFea = pCursor.NextFeature();
}
dataGridView1.DataSource = pTable;
}
else if (pLyr is IRasterLayer)
{
IRasterLayer pRlyr = pLyr as IRasterLayer;
IRaster pRaster = pRlyr.Raster;
IRasterProps pProp = pRaster as IRasterProps;
pProp.PixelType = rstPixelType.PT_LONG;
if (pProp.PixelType == rstPixelType.PT_LONG)
{
IRasterBandCollection pBcol = pRaster as IRasterBandCollection;
IRasterBand pBand = pBcol.Item(0);
ITable pRTable = pBand.AttributeTable;

DataTable pTable = new DataTable();
for (int i = 0; i < pRTable.Fields.FieldCount; i++)
pTable.Columns.Add(pRTable.Fields.get_Field(i).Name);


ICursor pCursor= pRTable.Search(null, false);
IRow pRrow= pCursor.NextRow();
while (pRrow != null)
{
DataRow pRow = pTable.NewRow();
for (int i =0 ;i<pRrow .Fields .FieldCount ;i++)
{
pRow[i] = pRrow.get_Value(i).ToString () ;
}
pTable.Rows.Add(pRow);
pRrow = pCursor.NextRow();
}
dataGridView1.DataSource = pTable;
}

}

 

创建栅格数据集 (2008-04-20 14:14:05)
标签:arcgis engine c# 代码 it 分类:三文鱼的GIS

关键词:创建栅格数据集 IRasterWorkspace2 IRasterDataset CreateRasterDataset C#



public IRasterDataset CreateFileRasterDataset(string directoryName, string fileName)
{
// This function creates a new img file in the given workspace
// and then assigns pixel values
try
{
IRasterDataset rasterDataset = null;
IPoint originPoint = new PointClass();
originPoint.PutCoords(0, 0);

// Create the dataset
IRasterWorkspace2 rasterWorkspace2 = null;
rasterWorkspace2 = CreateRasterWorkspace(directoryName);

rasterDataset = rasterWorkspace2.CreateRasterDataset(fileName, "IMAGINE Image", originPoint, 200, 100, 1, 1, 1, rstPixelType.PT_UCHAR, new UnknownCoordinateSystemClass(), true);

IRawPixels rawPixels = null;
IPixelBlock3 pixelBlock3 = null;
IPnt pixelBlockOrigin = null;
IPnt pixelBlockSize = null;
IRasterBandCollection rasterBandCollection;
IRasterProps rasterProps;



// QI for IRawPixels and IRasterProps
rasterBandCollection = (IRasterBandCollection)rasterDataset;
rawPixels = (IRawPixels)rasterBandCollection.Item(0);
rasterProps = (IRasterProps)rawPixels;



// Create pixelblock
pixelBlockOrigin = new DblPntClass();
pixelBlockOrigin.SetCoords(0, 0);

pixelBlockSize = new DblPntClass();
pixelBlockSize.SetCoords(rasterProps.Width, rasterProps.Height);

pixelBlock3 = (IPixelBlock3)rawPixels.CreatePixelBlock(pixelBlockSize);



// Read pixelblock
rawPixels.Read(pixelBlockOrigin, (IPixelBlock)pixelBlock3);

// Get pixeldata array
System.Object[,] pixelData;
pixelData = (System.Object[,])pixelBlock3.get_PixelDataByRef(0);

// Loop through all the pixels and assign value
for (int i = 0; i < rasterProps.Width; i++)
for (int j = 0; j < rasterProps.Height; j++)
pixelData[i, j] = (i * j) % 255;



// Write the pixeldata back
System.Object cachePointer;

cachePointer = rawPixels.AcquireCache();

rawPixels.Write(pixelBlockOrigin, (IPixelBlock)pixelBlock3);

rawPixels.ReturnCache(cachePointer);

// Return raster dataset
return rasterDataset;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
return null;
}
}



public IRasterWorkspace2 CreateRasterWorkspace(string pathName)
{
// Create RasterWorkspace
IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass();

return workspaceFactory.OpenFromFile(pathName, 0) as IRasterWorkspace2;
}

 

public IRasterDataset tin2raster(string tempBathyTIN,string geoPath, string gridName)
{
string tinFolder = System.IO.Path.GetDirectoryName(tempBathyTIN);
string tinName = System.IO.Path.GetFileName(tempBathyTIN);
IRasterDataset rasterDataset = new RasterDatasetClass();
try
{
string rasterPath = System.IO.Path.GetDirectoryName(geoPath);
IWorkspaceFactory TinWF = new TinWorkspaceFactory();
ITinWorkspace TinWK = TinWF.OpenFromFile(tinFolder,0)as ITinWorkspace;
ITinAdvanced2 tinAd = TinWK.OpenTin(tinName) as ITinAdvanced2;
IEnvelope extent = tinAd.Extent;
IPoint origin = extent.LowerLeft;
origin.X = origin.X - (5 * 0.5);
origin.Y = origin.Y - (5 * 0.5);
int nCol = (int)Math.Round(extent.Width / 5) + 1;
int nRow = (int)Math.Round(extent.Height / 5) +1;

ISpatialReference2 spatialRef = (ISpatialReference2)extent.SpatialReference;

IWorkspaceFactory rasterWF = new RasterWorkspaceFactoryClass();
IRasterWorkspace2 workSpace = (IRasterWorkspace2)rasterWF.OpenFromFile(rasterPath,0);

rasterDataset = workSpace.CreateRasterDataset(gridName, "GRID", origin,nCol,nRow,5,5,1,ESRI.ArcGIS.Geodatabase.rstPixelType.PT_FLOAT, spatialRef,true);


IRasterBandCollection bandColl = (IRasterBandCollection) rasterDataset;
IRasterBand rasterBand = bandColl.Item(0);
IRawPixels rawPixels = (IRawPixels)rasterBand;
IPnt blockSize = new DblPntClass();
blockSize.X = nCol;
blockSize.Y = nRow;
IPixelBlock3 pixelBlock = (IPixelBlock3)rawPixels.CreatePixelBlock(blockSize);
ITinSurface tinSurface = (ITinSurface)tinAd;
IRasterProps rasterProps = (IRasterProps)rawPixels;
object nodataFloat;
//long nodataInt;
object val = pixelBlock.get_PixelDataByRef(0);
MessageBox.Show(val.ToString());
double cellsize = 5;
origin.X = origin.X + (5 * 0.5);
origin.Y = origin.Y + (5 * nRow) - (5 * 0.5);

nodataFloat = Convert.ToDouble(rasterProps.NoDataValue.ToString());
tinSurface.QueryPixelBlock(origin.X,origin.Y,cellsize,cellsize,esriRasterizationType.esriElevationAsRaster,nodataFloat,val);
IPnt offset = new DblPntClass();
offset.X = 0;
offset.Y = 0;
rawPixels.Write(offset,pixelBlock as IPixelBlock);


}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());

}
return rasterDataset;

}

ArcGIS教程:多边形提取 (空间分析) 多边形最多可以有 1,000 个折点。多边形折点必须按顺时针顺序输入。如果要使用多个多边形,则第一个折点和最后一个折点必须相同,以使多边形闭合。如果最后的点不相同,多边形将自动闭合。多边形的弧之间可以相交,但不建议您使用过于复杂的多边形。 阅读详情

相关推荐

ArcGIS栅格数据处理:3种方法搞定NoData空值替换(附详细步骤)

本文详细介绍了在ArcGIS中处理栅格数据NoData空值的三种实用方法:栅格计算器、重分类与镶嵌工具以及ASCII转换。重点解析了如何使用栅格计算器结合Con与IsNull函数进行灵活的条件替换,并对比了各方法的适用场景与操作步骤,旨在帮助用户有效修复数据空洞,确保后续空间分析与计算的准确性。

gpt4scribbler的博客 774

栅格数据使用总结

两个星期以来一直与栅格数据打交道,对AO的栅格部分应该有了一定的理解,下面是自己的一点体会,希望高手指教:-) 1、栅格数据的存储类型 栅格数据一般可以存储为ESRI GRID(由一系列文件组成),TIFF格式(包括一个TIF文件和一个AUX文件...

weixin_30512043的博客 807

Arcgis栅格数据处理:高效设置nodata值的三种实用方法

本文详细介绍了Arcgis中栅格数据处理时设置nodata值的三种实用方法:栅格计算器、设为空函数和导出TIFF时设置。通过具体案例和操作步骤,帮助用户高效处理无效数据,确保GIS分析的准确性。特别适合需要处理卫星影像、气象数据等栅格数据的专业人员。

weixin_28331555的博客 626

ArcGIS中的辅助(auxiliary)文件

ArcGIS中的辅助(auxiliary)文件--扩展名为AUX,是一个用来保存栅格文件自身不能保存的辅助信息的文件,它与栅格文件一起存在同一目录中,文件名与栅格文件一致。    一个栅格数据集的统计信息如果不能保存在自身的栅格文件中,那这些信息就会保存在对应的AUX文件中。AUX在对栅格图层进行第一次统计分析的时候自动创建。如果栅格数据集很大,因为统计分析就需要获取更多的栅格单元,以得到统计结果

Little Thunder 3619

GIS数据处理实战:栅格属性表灰色不可用的3种修复方法(附详细步骤)

本文详细介绍了GIS数据处理中栅格属性表灰色不可用的3种修复方法,包括整型转换、栅格复制和属性表重建。通过实战案例和详细步骤,帮助GIS从业者快速解决栅格数据属性表问题,提升工作效率。特别适用于处理NDVI指数、土地利用分类等栅格数据。

wdx01234567的博客 325

ArcGIS批量裁剪栅格数据(ArcPy方法)

遥感数据处理系列 一些项目及科研中遇到的小需求,一方面记录自己的学习历程,另一方面帮助大家学习。 ArcPy批量计算栅格数据平均值 GLDAS数据下载及处理(NC转TIF) ArcGIS批量裁剪栅格数据 ArcPy批量栅格重采样 文章目录遥感数据处理系列前言一、栅格数据裁剪1. 原理简介2. 代码二、多文件夹场景1. 二级目录2. 三级目录总结 前言 一大堆的遥感数据如何批量裁剪?处理为相同范围的栅格数据?那么,一个NB的批处理脚本派上了用场!祭出ArcPy 一、栅格数据裁剪 1. 原理简介 栅格数

Bestyou's Blog 1万+

【Nodata】数据处理——ArcgisPro 的“ASCII转栅格”工具已弃用,将文本文件转为栅格文件的方法

由于ArcgisPro已经弃用“ASCII转栅格”工具,这时候我们可以尝试使用“【数据管理工具】|【栅格】|【栅格数据集】|【复制栅格】”工具,【输入栅格】点击【文件夹】导入,将【类型】设为【文件】,即可导入asc.txt文本文件。但是Nodata的默认值是“-9999”,因此第六行Nodata参数必须设为-9999,即替换后将第六行的值“3“改为为”-9999“,点击保存。其中,本文将介绍格式转换的方法,分为“栅格转ASCII”、“更改Nodata值”“ASCII转栅格”三个步骤。

2402_89708177的博客 1186

ArcGIS栅格数据+栅格数据处理(地理配准、裁切、格式转换)

GIS 空间数据按照数据结构划分可分为矢量数据和栅格数据。

qq_41961171的博客 7539

GIS栅格数据处理常用方法

 1.投影转换       针对无投影信息的栅格数据 Data ManagementTools----Projects And Transformations --Raster--Project Raster 2.重采样      修改像元大小 Data ManagementTools--Raster--Raster Processing--Resample 3.掩膜

isychen的专栏 5276

【栅格数据计算分析】分类后的栅格提取增加和减少区域

经过一些头铁尝试,现在觉得“遥感处理一般用栅格数据,少用矢量”,是挺有道理的。

请给我一脚 4671

ArcGIS批量栅格重采样(ArcPy方法)

遥感数据处理系列 一些项目及科研中遇到的小需求,一方面记录自己的学习历程,另一方面帮助大家学习。 ArcPy批量计算栅格数据平均值 GLDAS数据下载及处理(NC转TIF) ArcGIS批量裁剪栅格数据 文章目录遥感数据处理系列前言一、栅格数据重采样1. 原理简介2. 代码二、多文件夹场景总结 前言 多源遥感数据的使用如何快速计算?处理为相同维度的栅格数据,那么,一个NB的批处理脚本派上了用场!祭出ArcPy 一、栅格数据重采样 1. 原理简介 栅格数据重采样主要使用ArcPy的Resample_m

Bestyou's Blog 1万+

ArcGIS栅格裁切

在多源数据整合和处理的过程中,往往会遇到指定范围栅格数据获取或生成的问题,比如按照指定矢量范围裁切栅格等等。ArcGIS中提供了多种栅格剪切的方式和处理工具。利用ArcGIS10的“影像分析”窗口进行栅格裁切处理,“影像分析”窗口能够通过一组常用的显示功能和过程,对 ArcMap 中影像和栅格数据进行分析和利用。 在空间分析工具箱中提供了多种对栅格数据的提取方法,包括提取值到点,根据属性提取,用

xieziwei2008的专栏 2400

arcgis 栅格数据处理2——栅格转地级市(栅格转矢量图)

栅格数据转地级市数据,并输出excel数据

weixin_47072998的博客 3238

遥感影像数据处理-矢量裁剪栅格

遥感影像局部裁剪方法:针对大范围遥感影像中只需提取局部区域的需求,提出了一种基于矢量边界的裁剪方法。该方法利用GDAL库的Warp函数,通过输入影像和矢量边界文件,实现精准的局部裁剪。核心代码仅需5行,主要参数包括输出路径、输入影像、矢量边界路径及裁剪模式。该方法操作简便,能有效减少数据处理量,提高工作效率。如图例所示,该方法可准确提取目标区域影像,去除无关区域,适用于县、村镇等小范围要素提取场景。

GIS潮流 549

C# +AE加载shp、栅格、地图文档数据

C# +AE加载shp、栅格、地图文档数据的代码

【博弈论】势博弈(potential game)、EPG以及最佳响应、Nash均衡和帕累托(pareto)最优的理解

文章目录前言一、Potential game二、Nash均衡和Pareto-optimal(帕累托最优)1.Nash 均衡2.Pareto最优三、Best response(最佳响应)四、Exact potential game(EPG)1.合作-傀儡博弈2.合作博弈3.傀儡博弈4.自激博弈5.双边对称交互博弈使用理解 前言 本文主要详细讲解potential game的概念以及Exact potential game 的定义和分类,以及这么博弈方法是如何在论文中引入并使用的,本文仅是对自己在该模块

weixin_44535200的博客 2万+

遥感影像数据处理-栅格裁剪栅格

本文介绍了栅格有效区域直接裁剪的实现方法。首先通过提取栅格有效数据区域的边界多边形,然后使用该多边形作为掩膜裁剪目标栅格。核心代码采用Python的mask函数,参数包括源数据、掩膜多边形、裁剪标志、空值设置等。文末提供了示例图片展示裁剪前(带栅格图斑的影像)和裁剪后(仅保留有效区域)的效果对比,并提示读者可通过博主简介获取完整代码、运行指导或同类任务咨询。该方法实现了栅格数据的高效精准裁剪,适用于地理信息处理等场景。

GIS潮流 337

【BlueDroid】【BLE】低功耗蓝牙客户端和服务端开发流程解析(超详细)

1. 精讲):SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论2. 欢迎大家关注和订阅,和专栏会持续更新中.....敬请期待!

风云说通信 1925

栅格数据处理

通过对不同时期的土地覆盖栅格数据进行比较和分析,可以了解土地覆盖的变化趋势和规律。例如,计算两个栅格数据的差值,或者进行栅格数据的叠加分析。栅格数据的重分类是一种常见的操作,用于将栅格数据的值按照一定的规则重新分类。在 ArcPy 中,可以使用。这种多栅格数据的运算在地理空间分析中非常常见,例如在土地覆盖变化分析、地形分析等场景中都有广泛的应用。栅格数据在地形分析中有着广泛的应用,例如计算坡度、坡向、地形起伏度等。保存后的栅格数据文件可以用于进一步的分析和应用,也可以在其他 GIS 软件中打开和使用。

pianmian1的博客 637

骑砍2霸主MOD开发(9)-游戏大地图(MapScene)

Settlement类型由town,castle,castle_village,village,hideout五种类型组成,通过对GameEntity中添加tag实现类型的加载.大地图中军团(MobileParty)的移动速度,AI寻路,食物消耗等均和当前MobileParty所处地形有关,地形统一被定义为TerrainType,类型有森林,荒漠等.MapScene.Read("Main_map", ref sceneInitializationData, "") 装载Main_map大地图。

骑砍战团&霸主MOD开发 1623

使用字体解密技术爬取懂车帝二手车数据

本文介绍了一种针对懂车帝二手车平台的字体加密数据采集方案。通过抓包分析,识别出关键API接口并解析了字体加密机制,成功实现了价格等敏感数据的解密。方案采用requests库发送POST请求获取JSON数据,利用fontTools解析字体映射关系,建立加密字符到真实数字的转换算法。程序支持多页采集,提取车辆名称、价格、年份等12个维度的信息,并自动保存为Excel格式。技术亮点包括动态字体解析、健壮的数据处理和分页优化,为二手车市场分析提供了可靠的数据支持。文中特别强调数据采集的合法合规性,建议仅用于学术研究

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1310

arcgis渔网分割提取栅格图_[GIS]网格化分析图绘制

网格化的目的是让各个数据更加标准化的进行统计。因各个网格位置受控,也有利于大量数据的对比与叠加计算。本文将示意如何完成一张标准的网格化分析图。一、会用到的软件ARCGIS二、创建格网2.1 制作流程确认边界 --> 创建渔网 --> 裁剪渔网2.2 确认边界这里以义乌市举例,添加义乌市市区SHP边界数据。全工程坐标系皆为WGS84。2.3 创建渔网 fishnet运行创建渔网...

weixin_42297591的博客 2万+

【Mode】多模干涉仪的设计 Multi-mode interferometer(MMI)

与 Splitter 器件一样,MMI 器件也是一种常见的分光器件,可以根据用户的需求将光束分成不同的比例。本文,我们将介绍如何仿真 MMI 器件。这里我们使用的是 1x2 MMI,其本质上是由四个部分组成的,中间的矩形多模式干涉区域以及左右两侧的三个 taper 模式转换区域。之前的教程中我们也提及了,为了获取稳定的模式场分布,通常,我们需要进行模式收敛性扫描。这里以官网给出的案例为例。如何提取 S 参数我们先暂时不做介绍,后续有时间了我们再做介绍。

u011699626的博客 1214
上一篇: 在ArcEngine中创建内存图层[转]
bmoon
博客等级 码龄23年 6粉丝 4原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值