搜档网
当前位置:搜档网 › arcengine栅格数据使用总结

arcengine栅格数据使用总结

arcengine栅格数据使用总结
arcengine栅格数据使用总结

Tag标签: 栅格数据ArcEngine

标签:栅格重分类分类: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);

https://www.sodocs.net/doc/2c4630178.html,puteStatsAndHist();

IRasterStatistics pRasterStatistic = pRasterBand.Statistics; //获取像元统计信息

double dMaxValue = pRasterStatistic.Maximum ;

double dMinValue = pRasterStatistic.Minimum ;

INumberRemap pNumRemap = new NumberRemapClass(); //定义INumberRemap设定阈值pNumRemap.MapRange(dMinValue, 0, 0); //设置值区间,输出值

pNumRemap.MapRange(0, dMaxValue, 1);

IRemap pRemap = pNumRemap as IRemap; //转换成IRemap

IRaster pOutRaster = pReclassOp.ReclassByRemap(pGeodataset, pRemap, false) as IRaster ; //调用ReclassByRemap方法

pRLayer.CreateFromRaster(pOutRaster);

return pRLayer;

}

栅格图层和矢量图层的属性表浏览

if (pLyr is IFeatureLayer)

{

DataTable pT able = new DataT able();

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 = shape;

continue;

}

pRow = 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

{

pRow = pRrow.get_Value(i).ToString () ;

}

pTable.Rows.Add(pRow);

pRrow = pCursor.NextRow();

}

dataGridView1.DataSource = pTable;

}

}

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;

#4楼[楼主] 2009-02-09 15:38 | 尤文之鹤

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.esriElevationAs Raster,nodataFloat,val);

IPnt offset = new DblPntClass();

offset.X = 0;

offset.Y = 0;

rawPixels.Write(offset,pixelBlock as IPixelBlock);

}

catch(Exception ex)

{

MessageBox.Show(ex.T oString());

}

return rasterDataset;

}

ILayer pLayer = pAxMapControl.get_Layer(this.cmbLayer.SelectedIndex);

IRasterLayer pRasterLayer = pLayer as IRasterLayer;

IWorkspaceFactory2 pWorkspaceFactory2 = new RasterWorkspaceFactoryClass();

IRasterWorkspace pRasterWorkspace;

int Index = https://www.sodocs.net/doc/2c4630178.html,stIndexOf("\\");

string filePath = pRasterLayer.FilePath.Substring(0, Index);

string fileName = pRasterLayer.FilePath.Substring(Index + 1);

pRasterWorkspace = (IRasterWorkspace)pWorkspaceFactory2.OpenFromFile(filePath, 0);

IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(fileName);

IGeoDataset pRasterGeoDataset = pRasterDataset as IGeoDataset;

IWorkspaceFactory2 pWorkspaceFactoryShp = new ShapefileWorkspaceFactoryClass();

//............................................................................

IWorkspace pWorkspace = pWorkspaceFactoryShp.OpenFromFile(this.tbFolderPath.T ext, 0);

IConversionOp pConversionOp = new RasterConversionOpClass();

ISpatialReference pSpatialReference = pRasterGeoDataset.SpatialReference;

IGeoDataset pGeoDataset;

//....................................................................

pGeoDataset = pConversionOp.RasterDataToPolygonFeatureData(pRasterGeoDataset, pWorkspace, this.tbName.T ext, true);

IDataset pDataset1 = pGeoDataset as IDataset;

IFeatureClass pFeatureClass = pDataset1 as IFeatureClass;

IFeatureLayer pFeatureLayer = new FeatureLayerClass();

pFeatureLayer.FeatureClass = pFeatureClass;

pAxMapControl.ClearLayers();

pAxMapControl.AddLayer(pFeatureLayer);

pAxMapControl.Refresh();

arcgis栅格数据空间分析实验报告

实验五栅格数据的空间分析 一、实验目的 理解空间插值的原理,掌握几种常用的空间差值分析方法。 二、实验内容 根据某月的降水量,分别采用IDW、Spline、Kriging方法进行空间插值,生成中国陆地范围内的降水表面,并比较各种方法所得结果之间的差异,制作降水分布图。 三、实验原理与方法 实验原理:空间插值是利用已知点的数据来估算其他临近未知点的数据的过程,通常用于将离散点数据转换生成连续的栅格表面。常用的空间插值方法有反距离权重插值法(IDW)、 样条插值法(Spline)和克里格插值方法(Kriging)。 实验方法:分别采用IDW、Spline、Kriging方法对全国各气象站点1980年某月的降水量进行空间插值生成连续的降水表面数据,分析其差异,并制作降水分布图。 四、实验步骤 ⑴打开arcmap,加载降水数据,行政区划数据,城市数据,河流数据,并进行符号化, 对行政区划数据中的多边形取消颜色填充 ⑵点击空间分析工具spatial analyst→options,在general标签中将工作空间设置为实验数据所在的文件夹

⑶点击spatial analyst→interpolate to raster→inverse distance weighted,在input points 下拉框中输入rain1980,z字段选择rain,像元大小设置为10000 点击空间分析工具spatial analyst→options,在extent标签中将分析范围设置与行政区划一致,点击spatial analyst→interpolate to raster→inverse distance weighted,在input points下拉框中输入rain1980,z字段选择rain,像元大小设置为10000 点击空间分析工具spatial analyst→options在general标签中选province作为分析掩膜,点击spatial analyst→interpolate to raster→inverse distance weighted,在input points下拉框中输入rain1980,z字段选择rain,像元大小设置为10000

GIS矢量数据和栅格数据知识点

栅格数据和矢量数据 矢量数据 定义: ?矢量数据结构通过记录空间对象的坐标及空间关系来表达空间对象的位置。 ?点:空间的一个坐标点; ?线:多个点组成的弧段; ?面:多个弧段组成的封闭多边形; 获取方法 ?定位设备(全站仪、GPS、常规测量等) ?地图数字化 ?间接获取 ●栅格数据转换 ●空间分析(叠置、缓冲等操作产生的新的矢量数据) 矢量数据表达考虑内容 ?矢量数据自身的存储和管理 ?几何数据和属性数据的联系 ?空间对象的空间关系(拓扑关系) 矢量数据表达 ?简单数据结构 ?拓扑数据结构 ?属性数据组织 矢量数据结构编码方式 实体式 索引式 双重独立式 链状独立 栅格数据 定义 以规则像元阵列表示空间对象的数据结构,阵列中每个数据表示空间对象的属性特征。或者说,栅格数据结构就是像元阵列,每个像元的行列号确定位置,用像元值表示空间对象的类型、等级等特征。 每个栅格单元只能存在一个值。 对于栅格数据结构 ●点:为一个像元 ●线:在一定方向上连接成串的相邻像元集合。 ●面:聚集在一起的相邻像元集合。 获取方式: ●遥感数据 ●图片扫描数据 ●矢量数据转换 ●手工方式 栅格数据坐标系 栅格数据压缩编码方案 栅格数据的分层

栅格数据的组织方法 栅格数据特点 编码方式: 直接编码—无压缩编码 链式编码—便界编码 游程长度编码 块式编码 四叉树编码 矢量数据优点: ?表示地理数据的精度较高 ?严密的数据结构,数据量小 ?完整的描述空间关系 ?图形输出精确美观 ?图形数据和属性数据的恢复、更新、综合都能实现 ?面向目标,不仅能表达属性,而且能方便的记录每个目标的具体属性信息缺点: ?数据结构复杂 ?矢量叠置较为复杂 ?数学模拟比较困难 ?技术复杂,特别是软硬件 栅格数据优点: ?数据结构简单 ?空间数据的叠置和组合方便 ?各类空间分析很易于进行 ?数学模拟方便 缺点: ?图形数据量大 ?用大像元减少数据量时,精度和信息量受损 ?地图输出不美观 ?难以建立网络连接关系 ?投影变换比较费时 ?矢量数据结构是一种常见的图形数据结构,它用一系列有序的x、y坐标对表示地理实体的空间位置。 ?矢量结构的特点:属性隐含,定位明显 ?矢量型数据结构按其是否明确表示各地理实体的空间相互关系可分为实体型和拓扑型两大类。 实体型与拓扑型数据结构比较 ?两者都是目前最常用的数据结构模型 实体型代表软件为MapInfo 拓扑型代表软件为ARC/INFO ?它们各具特色 实体型虽然会产生数据冗余和歧异,但易于编辑。 拓扑型消除了数据的冗余和歧异,但操作复杂,甚至会产生新的数据冗余。

ArcGIS栅格数据矢量化和编辑

实验三 ArcGIS栅格数据矢量化和编辑 一、主要内容 1、掌握ArcMap中地图、数据框架、组图层、数据层等基本概念及相互关系; 2、掌握利用ArcMap进行地图屏幕扫描数字化的主要流程及具体操作; 二、ArcMap基础知识 基本概念 1) 地图—Map (ArcMap document) 在ArcGIS中,一个地图存储了数据源的表达方式(地图,图表, 表格) 以及空间参考。在ArcMap中保存一个地图时,ArcMap将创建与数据的链接,并把这些链接与具体的表达方式保存起来。当打开一个地图时,它会检查数据链接,并且用存储的表达方式显示数据。一个保存的地图并不真正存储显示的空间数据! 2) 数据框架—Data Frame 在“新建地图”操作中,系统自动创建了一个名称为“Layers”的数据框架。在ArcMap中,一个数据框架显示统一地理区域的多层信息。一个地图中可以包含多个数据框架,同时一个数据框架中可以包含多个图层。例如,一个数据框架包含中国的行政区域等信息,另一个数据框架表示中国在世界的位置。但在数据操作时,只能有一个数据框架处于活动状态。在Data View只能显示当前活动的数据框架,而在Layout View可以同时显示多个数据框架,而且它们在版面布局也是可以任意调整的。 3)组图层-- New Group Layer 有时需要把一组数据源组织到一个图层中,把它们看作Contents窗口中的一个实体。例如,有时需要把一个地图中的所有图层放在一起或者把与交通相关的图层(如道路、铁路和站点等)放在一起,以方便管理。 4)数据层 ArcMap可以将多种数据类型作为数据层进行加载,诸如AutoCAD 矢量数据DWG,ArcGIS的矢量数据Coverage、GeoDatabase、TIN 和栅格数据GRID,ArcView的矢量数据ShapeFile,ERDAS的栅格数据ImageFile,USDS的栅格数据DEM等。注意Coverage不能直接编辑,要编辑需要将Coverage转换成ShapeFile。

矢量、栅格数据结构的优缺点

§矢量栅格一体化数据结构 一、矢量、栅格数据结构的优缺点 矢量数据结构可具体分为点、线、面,可以构成现实世界中各种复杂的实体,当问题可描述成线或边界时,特别有效。矢量数据的结构紧凑,冗余度低,并具有空间实体的拓扑信息,容易定义和操作单个空间实体,便于网络分析。矢量数据的输出质量好、精度高。 矢量数据结构的复杂性,导致了操作和算法的复杂化,作为一种基于线和边界的编码方法,不能有效地支持影像代数运算,如不能有效地进行点集的集合运算(如叠加),运算效率低而复杂。由于矢量数据结构的存贮比较复杂,导致空间实体的查询十分费时,需要逐点、逐线、逐面地查询。矢量数据和栅格表示的影像数据不能直接运算(如联合查询和空间分析),交互时必须进行矢量和栅格转换。矢量数据与DEM(数字高程模型)的交互是通过等高线来实现的,不能与DEM直接进行联合空间分析。 栅格数据结构是通过空间点的密集而规则的排列表示整体的空间现象的。其数据结构简单,定位存取性能好,可以与影像和DEM数据进行联合空间分析,数据共享容易实现,对栅格数据的操作比较容易。 栅格数据的数据量与格网间距的平方成反比,较高的几何精度的代价是数据量的极大增加。因为只使用行和列来作为空间实体的位置标识,故难以获取空间实体的拓扑信息,难以进行网络分析等操作。栅格数据结构不是面向实体的,各种实体往往是叠加在一起反映出来的,因而难以识别和分离。对点实体的识别需要采用匹配技术,对线实体的识别需采用边缘检测技术,对面实体的识别则需采用影像分类技术,这些技术不仅费时,而且不能保证完全正确。

通过以上的分析可以看出,矢量数据结构和栅格数据结构的优缺点是互补的(图2-4-1),为了有效地实现GIS中的各项功能(如与遥感数据的结合,有效的空间分析等)需要同时使用两种数据结构,并在GIS中实现两种数据结构的高效转换。 在GIS建立过程中,应根据应用目的和应用特点、可能获得的数据精度以及地理信息系统软件和硬件配置情况,选择合适的数据结构。一般来讲,栅格结构可用于大范围小比例尺的自然资源、环境、农林业等区域问题的研究。矢量结构用于城市分区或详细规划、土地管理、公用事业管理等方面的应用。 精

(完整word版)栅格数据结构和矢量数据结构空间分析

一、矢量、栅格数据结构的优缺点 矢量数据结构可具体分为点、线、面,可以构成现实世界中各种复杂的实体,当问题可描述成线或边界时,特别有效。矢量数据的结构紧凑,冗余度低,并具有空间实体的拓扑信息,容易定义和操作单个空间实体,便于网络分析。矢量数据的输出质量好、精度高。 矢量数据结构的复杂性,导致了操作和算法的复杂化,作为一种基于线和边界的编码方法,不能有效地支持影像代数运算,如不能有效地进行点集的集合运算(如叠加),运算效率低而复杂。由于矢量数据结构的存贮比较复杂,导致空间实体的查询十分费时,需要逐点、逐线、逐面地查询。矢量数据和栅格表示的影像数据不能直接运算(如联合查询和空间分析),交互时必须进行矢量和栅格转换。矢量数据与DEM(数字高程模型)的交互是通过等高线来实现的,不能与DEM 直接进行联合空间分析。 栅格数据结构是通过空间点的密集而规则的排列表示整体的空间现象的。其数据结构简单,定位存取性能好,可以与影像和DEM数据进行联合空间分析,数据共享容易实现,对栅格数据的操作比较容易。 栅格数据的数据量与格网间距的平方成反比,较高的几何精度的代价是数据量的极大增加。因为只使用行和列来作为空间实体的位置标识,故难以获取空间实体的拓扑信息,难以进行网络分析等操作。栅格数据结构不是面向实体的,各种实体往往是叠加在一起反映出来的,因而难以识别和分离。对点实体的识别需要采用匹配技术,对线实体的识别需采用边缘检测技术,对面实体的识别则需采用影像分类技术,这些技术不仅费时,而且不能保证完全正确。

通过以上的分析可以看出,矢量数据结构和栅格数据结构的优缺点是互补的(图2-4-1),为了有效地实现GIS中的各项功能(如与遥感数据的结合,有效的空间分析等)需要同时使用两种数据结构,并在GIS中实现两种数据结构的高效转换。 在GIS建立过程中,应根据应用目的和应用特点、可能获得的数据精度以及地理信息系统软件和硬件配置情况,选择合适的数据结构。一般来讲,栅格结构可用于大范围小比例尺的自然资源、环境、农林业等

栅格数据编码方法分为两大类

?栅格数据编码方法分为两大类:1直接栅格编码2压缩编码方法a链码b游程长度编码c块码d 四叉树直接编码就是将栅格数据看作一个数据矩阵,逐行(或逐列)逐个记录代码,可以每行都从左到右逐个象元进行记录,也可以奇数行地从左到右而偶数行地从右向左记录,为了特定目的 还可采用其他特殊的顺序栅格数据编码方法直接栅格编码: ?将栅格数据看作一个数据矩阵,逐行记录代码数据。A A A A A B B B A ABB A A B B ?1)每行都从左到右记录;AAAAABBBAABBAABB ?2)奇数行从左到右,偶数行从右到左; ?栅格数据量大,格网数多,由于地理数据往往有较强的相关性,即相邻象元的值往往是相同的。 所以,出现了各种栅格数据压缩方法。 ?压缩编码的目的就是用尽可能少的数据量记录尽可能多的信息,其类型分为 ?信息无损编码 ?编码过程中没有任何信息损失,通过解码操作可以完全恢复原来的信息 ?信息有损编码 ?为了提高编码效率,最大限度地压缩数据,在压缩过程中损失一部分相对不太重要的信息,解码时这部分难以恢复1、行程编码(游程编码):将原始栅格阵列中属性值相同的连续若干个栅格单 元映射为一个游程。游程的结构为(A,P) 整数对。块码是游程长度编码扩展到二维的情况,采用 方形区域作为记录单元,每个记录单元包括相邻的若干栅格,数据结构由初始位置(行、列号) 和半径,再加上记录单位的代码组成。采用方形区域作为记录单元,每个记录单元包括相邻的若 干栅格。将栅格数据(线状地物面域边界)表示为矢量链的记录)首先定义一个3x3窗口,中间栅格的走向有8种可能,并将这8种可能0~7进行编码。 ?2)记下地物属性码和起点行、列后,进行追踪,得到矢量链.其基本分割方法是将一幅栅格地图或图像等分为四部分。逐块检查其栅格属性值(或灰度)。如果某个子区的所有栅格值都具有相同 的值。则这个子区就不再继续分割,否则还要把这个子区再分割成四个子区。这样依次地分割, 直到每个子块都只含有相同的属性值或灰度为止。四叉树编码又称为四分树、四元树编码。它是 一种更有效地压编数据的方法。它将2n×2n像元阵列连续进行4等分,一直分到正方形的大小正好与象元的大小相等为止(如下图),而块状结构则用四叉树描述,习惯上称为四叉树编码。 基本思想:将2n×2n象元组成的图像(不足的用背景补上) 按四个象限进行递归分割,并判断属性是否单一,单一:不分。 不单一:递归分割。最后得到一颗四分叉的倒向树。四叉树的树形表示:用一倒立树表示这种分割和分割结果。根:整个区域高:深度、分几级,几次分割叶:不能再分割的块树叉:还需分割的块每个树叉均有4个分叉,叫四叉树。1)常规四叉树 记录这棵树的叶结点外,中间结点,结点之间的联系用指针联系每个结点需要6个变量:父结点指针、四个子结点的指针和本结点的属性值。2)线性四叉树记录叶结点的位置,深度(几次分割)和属性.地址码(定位码、Mort on码)四进制、十进制优点: ·存贮量小,只对叶结点编码,节省了大量中间结点的存储,地址码隐含着结点的分割路径和分割次数。·线性四叉树可直接寻址,通过其坐标值直接计算其Mort on码,而不用建立四叉树。·定位码容易存储和执行实现集合相加等组合操作。四进制的Mor ton码1、方法1:四叉树从上而下(形成)(从整体开始)由叶结点找Mor ton码。 A、分割一次,增加一位数字,大分割在前,小分割在后。所以,码的位数表示分割的次数。 B、每一个位均是不大于3的四进制数,表达位置。由Mor ton找出四叉树叶结点的具体位置。2、方法2:四叉树自下而上合并的方法1)计算每个栅格对应的M Q M Q=2*I b+Jb I,J化为二进制I b,Jb看最大的I,J,不足在前补零。 起始行列号从0计。2)按码的升序排成线性表,放在连续的内存块中。3)依次检查每四个相邻的M Q对应的属性值,相同合并(不同码位去掉),不同则存盘,直到没有能够合并的子块为止。坐标序列法由多形边界的x、y坐标对集合及说明信息组成,是最简单的一种多边形矢量编码拓扑结构编码法 n要彻底解决邻域和岛状信息处理问题必须建立一个完整的拓扑关系结构,这种结构应包括以下内容:唯一标识,多边形标识,外包多边形指针,邻接多边形指针,边界链接,范围(最大和最小x、y坐标值,即外包矩形信息)。采用拓扑结构编码可以较好地解决空间关系查询等问题,但增加了算法的复杂性和数据库的大小。编码方法:点实体,线实体,多边形n点实体

矢量、栅格数据结构的优缺点

§2.4 矢量栅格一体化数据结构 一、矢量、栅格数据结构的优缺点 矢量数据结构可具体分为点、线、面,可以构成现实世界中各种复杂的实体,当问题可描述成线或边界时,特别有效。矢量数据的结构紧凑,冗余度低,并具有空间实体的拓扑信息,容易定义和操作单个空间实体,便于网络分析。矢量数据的输出质量好、精度高。 矢量数据结构的复杂性,导致了操作和算法的复杂化,作为一种基于线和边界的编码方法,不能有效地支持影像代数运算,如不能有效地进行点集的集合运算(如叠加),运算效率低而复杂。由于矢量数据结构的存贮比较复杂,导致空间实体的查询十分费时,需要逐点、逐线、逐面地查询。矢量数据和栅格表示的影像数据不能直接运算(如联合查询和空间分析),交互时必须进行矢量和栅格转换。矢量数据与DEM(数字高程模型)的交互是通过等高线来实现的,不能与DEM 直接进行联合空间分析。 栅格数据结构是通过空间点的密集而规则的排列表示整体的空间现象的。其数据结构简单,定位存取性能好,可以与影像和DEM数据进行联合空间分析,数据共享容易实现,对栅格数据的操作比较容易。 栅格数据的数据量与格网间距的平方成反比,较高的几何精度的代价是数据量的极大增加。因为只使用行和列来作为空间实体的位置标识,故难以获取空间实体的拓扑信息,难以进行网络分析等操作。栅格数据结构不是面向实体的,各种实体往往是叠加在一起反映出来的,因而难以识别和分离。对点实体的识别需

要采用匹配技术,对线实体的识别需采用边缘检测技术,对面实体的识别则需采用影像分类技术,这些技术不仅费时,而且不能保证完全正确。 通过以上的分析可以看出,矢量数据结构和栅格数据结构的优缺点是互补的(图2-4-1),为了有效地实现GIS中的各项功能(如与遥感数据的结合,有效的空间分析等)需要同时使用两种数据结构,并在GIS中实现两种数据结构的高效转换。 在GIS建立过程中,应根据应用目的和应用特点、可能获得的数据精度以及地理信息系统软件和硬件配置情况,选择合适的数据结构。一般来讲,栅格结构可用于大范围小比例尺的自然资源、环境、农林业等区域问题的研究。矢量结构用于城市分区或详细规划、土地管理、公用事业管理等方面的应用。 完

ARCGIS中矢量裁剪栅格图像

ARCGIS中矢量裁剪栅格图像 (1) 是否需要裁剪栅格图象区域通过一个面状的shapefile表达出来? 如果可以,那么就很简单了。 在ArcMap中,调用空间分析扩展模块,将你感兴趣区的shapefile多边形图层设置为掩膜,然后在栅格计算器中重新计算一下你的图象,它就会沿掩膜裁出。 设置掩膜:空间分析工具条的下拉菜单>option里面设置 (2) 用任意多边形剪切栅格数据(矢量数据转换为栅格数据) 2.1在ArcCatlog下新建一个要素类(要素类型为:多边形),命名为:ClipPoly.shp 2.2在ArcMap中,加载栅格数据:例如kunming.img、和ClipPoly.shp 2.3打开编辑器工具栏,开始编辑ClipPoly ,根据要剪切的区域,绘制一个任意形状的多边形。打开属性表,修改多边形的字段“ID”的值为1,保存修改,停止编辑。 2.4打开空间分析工具栏 执行命令:<空间分析>-<转换>--<要素到栅格> 指定栅格大小:查询要剪切的栅格图层kunming的栅格大小,这里假设指定为1 指定输出栅格的名称为路径 2.5执行命令: <空间分析>-<栅格计算器> 2.6构造表达式:[kunming]*[polyClip4-polyclip4] ,执行栅格图层:kunming和用以剪切的栅格polyClip4 之间的相乘运算 (3) 1、对矢量数据进行裁减:Arctoolbox中,spatial tool > extract>clip 在InputFeatures中选择被裁剪的图层,在ClipFeatures中选择裁剪形状 2、利用矩形对栅格数据裁剪:Arctoolbox中,data management>raster>clip InputRaster中选择被裁剪的栅格数据,设定好矩形四个顶点即可 3、在Spatial Analyst Tools中提供了多种对栅格数据的提取方法,Arctoolbox中,Spatial Analyst Tools>extraction包括提取值到点,根据属性提取,用圆提取,用多边形提取,用掩模提取,用点提取,用矩形提取等,其中的用掩模提取功能可以让我们通过不规则边界来获取需要的栅格数据。

(完整版)栅格数据结构与矢量数据结构的比较

栅格数据与矢量数据 栅格数据结构 基于栅格模型的数据结构简称栅格数据结构,是指将空间分割成有规则的网格,称为栅格单元,在各个栅格单元上给出出相应的属性值来表示地理实体的一种数据组织形式。 栅格数据结构表示的是二维表面上的要素的离散化数值,每个网格对应一种属性。 网格边长决定了栅格数据的精度。 矢量数据结构 矢量数据结构是利用欧几里得几何学中的点、线、面及其组合体来表示地理实体的空间分布的一种数据组合方式。 矢量与栅格数据结构的比较 矢量数据结构的优缺点: 优点为数据结构紧凑、冗余度低,有利于网络和检索分析,图形显示质量好、精度高; 缺点为数据结构复杂,多边形叠加分析比较困难。 具体来说优点有: 1.表达地理数据精度高 2.严密的数据结构,数据量小 3.用网格链接法能完整地描述拓扑关系,有利于网络分析、空间查询 4.图形数据和属性数据的恢复、更新、综合都能实现 5.图形输出美观 缺点有: 1.数据结构较复杂 2.软件实现技术要求比较高 3.多边形叠合等分析相对困难 4.现实和绘图费用高 栅格数据的优缺点: 优点为数据结构简单,便于空间分析和地表模拟,现势性较强; 缺点为数据量大,投影转换比较复杂。 具体来说优点有: 1.数据结构相对简单 2.空间分析较容易实现 3.有利于遥感数据的匹配应用和分析 4.空间数据的叠合和组合十分容易方便 5.数学模拟方便 6.技术开发费用低 缺点有: 1.数据量较大,冗余度高,需要压缩处理 2.定位精度比矢量的低

3.拓扑关系难以表达 4.难以建立网络连接关系 5.投影变形花时间 6.地图输出不精美 两者比较: 栅格数据操作总的来说容易实现,矢量数据操作则比较复杂; 栅格结构是矢量结构在某种程度上的一种近似,对于同一地物达到于矢量数据相同的精度需要更大量的数据;在坐标位置搜索、计算多边形形状面积等方面栅格结构更为有效,而且易于遥感相结合,易于信息共享;矢量结构对于拓扑关系的搜索则更为高效,网络信息只有用矢量才能完全描述,而且精度较高。对于地理信息系统软件来说,两者共存,各自发挥优势是十分有效的。

ArcGIS中修改栅格图的像元值

在处理图象数据时,我们经常会碰到要求修改栅格图象象元值的问题,比如说DEM图的部分数据错误,我们要进行修改;再比如说栅格图象中有些与周围均匀色彩不一致的错误斑块要更正等等,那我们如何来处理这一类问题呢? 现我以一DEM栅格图(名字为eldodem)为例,现在我要修改它的部分象元值,总结出以下三种方法,大家可以参考一下。第一种方法不大实用,但可借鉴,第二三种方法针对的条件不一致,大家可以在具体情况下进行选择。 一、直接运用转换,思路简单,易操作,但实用性 1、栅格——ascii文件——栅格这种方法是先将栅格图用工具 直接转成ascii文件,然后在ascii文本文件中直接修改需要修改的象元的值,修改好后又用工具 转换成栅格图。这种方法可行,但是不实用,因为我们要搜索到指定的象元好像不是那么简单。那么有没有别的比较好的方法呢? 二、在栅格计算器中操作,方法灵活,可操作性强,实用性强 准备工作 先要在option中设置保留的栅格范围,通常情况下默认的为相交后的部分,这里我们要保留整个DEM,所以要改为以下设置:

2、通过点的位置修改点象元值 2.1* 问题一、要是我想修改图象中的指定的行列的点的象元值(比如说把第100行,200列的点的值修改为0),那该如何操作呢? 这时候我们可以在栅格计算器中输入以下公式: con(($$rowmap == 99 & $$colmap == 199),0,[eldodem.img]) (栅格图的编号是从0行0列开始的) 2.2* 问题二、那若是要修改指定行列范围内的栅格的象元值,比如说把第101行,251列到第401行,301列的部分的象元值改为0,又改如何进行呢? con(($$rowmap < 400 & $$rowmap > 100 & $$colmap < 300 & $$colmap > 250),0,[eldodem.img]) 结果如下

栅格数据与矢量数据的比较

栅格数据与矢量数据的比较 一、定义 栅格数据:是按网格单元的行与列排列、具有不同灰度或颜色的阵列数据。栅格结构是大小相等分布均匀、紧密相连的像元(网格单元)阵列来表示空间地物或现象分布的数据组织。是最简单、最直观的空间数据结构,它将地球表面划分为大小、均匀、紧密相邻的网格阵列。每一个单元(象素)的位置由它的行列号定义,所表示的实体位置隐含在栅格行列位置中,数据组织中的每个数据表示地物或现象的非几何属性或指向其属性的指针。 矢量数据:是指城市大比例尺地形图。此系统中图层主要分为底图层、道路层、单位层,合理的分层便于进行叠加分析、图形的无逢拼接以实现系统图形的大范围漫游。矢量数据一般通过记录坐标的方式来尽可能将地理实体的空间位置表现的准确无误,显示的图形一般分为矢量图和位图。 二、表示方法 栅格数据:点实体由一个栅格像元来表示;线实体由一定方向上连接成串的相邻栅格像元表示;面实体(区域)由具有相同属性的相邻栅格像元的块集合来表示。

矢量数据:矢量数据一般通过记录坐标的方式来尽可能将地理实体的空间位置表现的准确无误。 三、特点 栅格数据:数据直接记录属性的指针或属性本身,而其所在位置则根据行列号转换成相应的坐标给出。也就是说,定位是根据数据在数据集合中的位置得到的。 矢量数据:在计算机中,使用矢量数据具有存储量小,数据项之间拓扑关系可从点坐标链中提取某些特征而获得的优点。主要缺点是数据编辑、更新和处理软件较复杂。 四、获取方法 栅格数据:栅格结构是用有限的网格逼近某个图形,因此用栅格数据表示的地表是不连续的,是近似离散的数据。栅格单元的大小决定了在一个象元所覆盖的面积范围内地理数据的精度,网格单元越细栅格数据越精确,但如果太细则数据量太大。尤其按某种规则在象元内提取的值,如对长度、面积等的度量,主成分值、均值的求算等,其精度由象元的大小直接决定。 矢量数据:矢量数据是制造出矢量图形的一种记录坐标,它在计算机中显示的图形一般可以分为两大类——矢量图和位图。矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的。

基于ARCGIS ENGINE的栅格数据转换矢量数据

基于ArcGIS Engine的栅格数据转换矢量数据 摘要:ArcGIS提供了栅格数据向矢量数据转换函数,但是有特定的要求。同时,在ArcGIS Engine中提供了操作栅格数据的函数,可以对栅格数据进行编辑,从而可以到达栅格数据转矢量数据的要求。 关键词:ArcGIS Engine ;栅格数据;矢量数据 Abstract: The ArcGIS provides raster data to vector data conversion function, but it has the specific requirements. At the same time, providing the operating raster data function in the ArcGIS Engine, can edit the raster data, to reach the raster data to the vector data requirements. Key words: ArcGIS Engine, raster data, vector data 在日常地理信息数据处理中,会对栅格数据进行各种要求处理,并且最终要求将其转换成矢量数据[1][2][3][4][5]。我们可以采用ArcGIS Engine中提供的操作栅格数据的函数,对栅格数据进行各种编辑,满足对栅格数据的各种操作,同时可以将栅格数据转换成矢量数据。 ArcGIS栅格转矢量工具 在ArcGIS桌面版中打开ArcToolbox找到转换工具->由栅格转出,可以找到具体的栅格转矢量的工具。比较常用的是转点、转线、转面。查看帮助文档可以看到栅格转面矢量的函数是RasterToPolygon_conversion (in_raster, out_polygon_features, {simplify}, {raster_field}),其用法要求为:输入栅格的栅格单元大小可以任意,但必须属于有效的整数型栅格数据集。对栅格数据集要求必须是整数型(指栅格数据中格网像素的数据类型)。然而,在实际数据中大部分栅格数据采用浮点型。在ArcGIS中可以通过查看栅格数据的文件属性来查看栅格数据的像素数据类型,如图1。 由于ArcGIS中栅格转矢量工具的具体要求,所有必须对栅格数据进行像素类型转换;同时,要满足数据转出的其它要求,比如某一个栅格数据中,只要求像素值在某个特定范围的数据转出为矢量数据等各种具体的实际操作要求,有必须对栅格数据进行改写等的操作。在ArcGIS Engine中提供了操作栅格数据的函数,可以对栅格数据进行编辑,所有,有必要运用ArcGIS Engine对栅格数据进行编辑,从而满足栅格转矢量等各种具体要求。

矢量数据和栅格数据的异同点

矢量数据和栅格数据的异 同点 The Standardization Office was revised on the afternoon of December 13, 2020

矢量数据和栅格数据的异同点 GIS研究的数据是地理空间数据,这是区别于其他系统的根本原因。栅格数据与矢量数据是地理信息系统中空间数据组织的两种最基本的方式. 栅格数据是以二维矩阵的形式来表示空间地物或现象分布的数据组织方式.每个矩阵单位称为一个栅格单元(cell).栅格的每个数据表示地物或现象的属性数据.因此栅格数据有属性明显,定位隐含的特点.而矢量数据结构是利用点,线,面的形式来表达现实世界,具有定位明显,属性隐含的特点。由于矢量数据具有数据结构紧凑,冗余度低,表达精度高,图形显示质量好,有利于网络和检索分析等优点。在GIS中得到广泛的应用,特别在小区域(大比例尺)制图中充分利用了它的精度高的优点。但是,随着RS广泛的应用,同时数据压缩技术,计算机性能的提高克服了栅格数据的数据量大等缺点,栅格数据将越来越发挥更大的作用。栅格数据的大规模应用,并将会占具主导地位。主要基于以下优点: (1) 随RS技术的发展,并大规模的应用,栅格数据的使用将促使RS,GIS的一体化发展。RS成为空间数据动态更新的重要的数据源。遥感影像是以像元为单元的栅格结构存储的,图像处理技术极大的提高了栅格数据的前期处理能力。这些数据可以直接生成或转换为于GIS 的栅格数据。 (2) 栅格数据可以极大的提高GIS 的时空数据分析能力,栅格数据在图像的代数运算,空间统计分析等具有广泛的应用,可以促成GIS模型的建立。ARCGIS软件的高版本在这一方面以有较突出的表现。 (3) 三维可视化成为动态模拟现实世界的一个新的发展趋势.栅格数据是利用二维图像来模拟地理实体的,可利用栅格数据通过提高维数来实现三维可视化。 (4) 随Web GIS 的发展,栅格数据数据结构简单,真实感强等特点,可以为大多数程序设计人员和用户理解和使用.特别是图像共享标准(如GIF)的建立,有利于GIS 的栅格数据的共享. 因此,栅格数据在信息共享方面更为实用. 因此,随GIS 发展,栅格数据和矢量数据均具不同程度的发展,但栅格数据要比矢量数据的应用更广泛,更有效.

在ArcGIS中栅格大数据矢量化

在ArcGIS中(TIF、JPEG)栅格图像矢量化 一、图像加载。 启动ArcMap,【开始】→【程序】→【ArcGIS】→【ArcMap】,选择A existing map,单击Browse for maps。 跳出文件选择对话框。选择所要打开的地图文件出现如下界面。 二、点状符号矢量化 2.1 新建点状地理要素图层 单击ArcMap工具条上的ArcCatalog按钮打开ArcCatalog程序(ArcGIS 的地理信息资源都这里完成创建、删除、复制等管理工作),出现如下对话框。 在Catalog树下找到地图存储所在位置,鼠标右键菜单中选择New子菜单的Shapefile…新建一个Shape格式的地理要素文件(地理要素可存储为其他格

式)。输入文件名称和符号类型,Name: 城市,Feature Type: Point(点状符号)。 设置地图投影,在Spatial Reference下选择Edit,跳出空间参考属性对话框。 选择Select…,提出地图投影选择对话框Browse for Coordnate Systems。 选择Geographic Coordinate Systems/Asia/Xian 1980.prj,单击Add,并【确定】,则完成了新建一个点状Shape格式的地理要素文件【城市】图层。2.2 添加图层 单击ArcMap工具条上的添加图层工具,找到前面新建【城市】图层所在目录,选择城市.shp文件,单击Add,中地图中添加城市图层。

2.3 设置符号格式 对准ArcMap界面中,左边layers/城市下面的点状符号双击,跳出符号选项对话框,设置点状符号样式。选择符号类型Circle 20,符号设置选 项Options中,Color下拉表中选择白色,Size设置为20,Angle设置为0。 2.4 点状符号定位 在ArcMap工具条上点击Editor下拉菜单,选择Starting Editing,进入 编辑状态。使用“Edit Tool”工具可选择要素,右键菜单中有复制、删除、粘 贴等操作。 选择Editor工具条的Sketch Tool工具,移动鼠标到地图区,按住“Z”键放大地图,按住“X”键缩小地图,按住“C”键移动地图,找到合适位置时单击一下鼠标,一个点要素创建成功。依次把江苏省十三个地级城市用点状符号标出来。并点击Editor下拉菜单,选择Stop Editing。跳出是否保存所做的编辑 对话框。

栅格数据结构压缩

实验一栅格数据结构压缩 一实验目的 1、理解并掌握栅格数据结构及其压缩编码方法; 2、利用QBasic程序编程实现行程编码数据文件的解压缩,全栅格数据文件的行程编码; 3、利用QBasic程序编程实现全栅格数据文件和行程编码文件屏幕显示。 二、实验数据 行程编码文件:111.txt 全栅格数据文件:222.txt 行程编码数据文件:333.txt 三、实验内容 1、解行程编码 将行程编码数据文件111.txt释放为全栅格数据文件,将结果在屏幕上显示并存入111OK.txt。 2、行程压缩 将全栅格数据文件111OK.txt用行程编码方式进行压缩,将结果在屏幕上显示并存入000.txt。 3、全栅格数据文件图形显示 将全栅格数据文件222.txt以图形方式在屏幕上显示。 4、行程编码文件图形显示 将行程编码数据文件333.txt以图形方式在屏幕上显示。 实验一 Cls Dim m(20, 3) Open "111.txt" For Input As #1 Do Until EOF(1) For i = 1 To 20 For j = 1 To 3 Input #1, m(i, j) Print m(i, j) Next j Print Next i Loop n = 1 Open "111ok.txt" For Output As #2 For i = 1 To 20 If i > 1 Then If (m(i, 1) <> m(i - 1, 1)) Then Print

Print #2, " " End If End If For j = 1 To m(i, 3) Print w(i, 2); Print #2, m(i, 2); Next j Next i End 实验二 CLS DIM A(8, 8) OPEN "111ok.txt" FOR INPUT AS #1 DO UNTIL EOF(1) FOR i = 1 TO 8 FOR j = 1 TO 8 INPUT #1, A(i, j) PRINT A(i, j) NEXT j PRINT NEXT i LOOP n = 1 OPEN "000.txt" FOR OUTPUT AS #2 FOR i = 1 TO 8 FOR j = 1 TO 7 IF A(i, j) = A(i, j + 1) THEN n = n + 1 ELSE PRINT A(i, j), n, i: PRINT #2, A(i, j), n, i: n = 1 END IF NEXT j PRINT A(i, j), n, i: PRINT #2, A(i, j), n, i: n = 1

使用ArcGIS统计栅格大数据面积

很多的时候我们都会遇到统计面积的需求,如果是矢量数据就比较容易统计面积,但数据如果是影像图,又是经纬度坐标(没有经过投影)就需要相应的一系列的处理。我这里拿到的是辽宁省的栅格图,坐标系统Xi'an80,其中分为五类地类,然后分别统计它们的面积。 数据是经纬度的坐标系统,没有进行投影,不能直接用经纬度计算面积,所以首先我们通过高斯投影将影像图的经纬度坐标转成平面直角坐标,在ArcCatalog中新建一个Personal Geodatabase或者File Geodatabase,然后通过Import---》Raster Dataset 将影像数据导入到 File Geodatabase中。右键点击影像图Properties中设置影像图的坐标系统为 Xi'an80(此处根据影像的元数据进行设定影像的坐标系统为西安80坐标系) 然后在ArcMap中打开栅格图,通过ArcToolbox—DataManagement Tools—Projections and Transformations—Raster—Project Raster进行高斯投影

投影之后,就可以进行分类计算了,将投影后的影像图通过栅格分析工具进行重分类,选择Spatial Analyst工具栏下拉菜单的“Reclassify…”项 在重分类后的影像上点击鼠标右键,选择“Open Attribute Table”

其中COUNT字段中的数值时代表每类地物中所包含的像素个数,这样的话我们就可以通过像素个数*每个像素的面积=影像图的面积,如何获得每个像素所代表的面积,在重分类后的影像上点击鼠标右键,选择“properties…”,在弹出的layer properties窗口中择“Source”选项栏,CellSize项的值为单元格大小信息。 最后通过Field Calculator可以计算出面积,可以把计算出来的值存放到另外一个字段里

实验四 栅格数据结构

第二章将地球“装入”计算机利用计算机分析地理世界,需要在计算机中建立一个地理世界的模型,而不能直接将地理世界的实体装入计算机,这个过程就是建模。如何建模呢?首先要对地理世界进行抽象,地理学中描述地理世界,不仅要描述组成地物的特征,还要描述这些地物的位置;然后,将描述的结果转换为计算机能够接受的形式,这个过程称为“编码”;最后,将编码结果在计算机中表示出来,这个过程称为“解码”,经过以上三个步骤就实现了将现实世界装入了计算机,生成了各种类型的空间数据。 本章内容包括两个实验,实验四—栅格数据结构和实验五—矢量数据结构,分别介绍两种将地球“装入”计算机的方法。

实验四栅格数据结构 一、实验目的 1.通过实验,加深对栅格数据结构的认识。 2.通过实验,了解栅格数据坐标系统。 3.通过实验,掌握栅格矩阵结构、游程编码结构、四叉树编码结构的栅格数据压缩的方法。 二、实验内容 1.掌握栅格矩阵结构数据文件头的定义。 2.以扫描地图为基础,运用混合像元属性值确定方法,确定栅格单元的属性值。 3.根据栅格数据文件格式要求,手工制作栅格矩阵结构的栅格数据文件。 4.根据栅格数据压缩编码的要求,对手工制作的栅格矩阵结构进行游程压缩编码和解码。 5.尝试实现栅格数据的四叉树压缩编码和解码。 三、实验要求 1.掌握对空间区域进行格网化的方法。 2.了解栅格数据文件头中各参数的含义。 3.掌握栅格数据单元格属性取值方法。 4.了解栅格数据的可视化表达方法。 5.掌握栅格数据的游程长度编码、四叉树编码的原理,了解四叉树编码在VB环境下的实现过程。 四、实验数据 1. 图1 栅格数据文件举例 五、实验步骤 1、拟解决的问题 地理环境中的实体或者现象有一部分是连续的,如温度、气压等地理现象,为了将这些内容输入计算机,必须将它们转换为计算机能接受的形式。地学中常用的方法就是将连续的研究对象格网化,将其规则地分成若干独立的单元,每个单元的位置用格网行列号表示,单元的特征用一个具体数值来表示,所有的单元按照行列号的顺序组织在一起,就实现了对连续分布的地物或者地理现象的有效地描述。这种格网化的方法得到的结果,就是地理信息系统常见的数据类型之一——栅格数据。GIS中的栅格数据目前主要类型有数字高程模型(DEM)、遥感影像数据、栅格地形图等,虽然以上几种栅格数据在形式、文件结构等方面存在着一定的差别,但原理基本上是一样的。本实验主要介绍如何实现栅格

GRID和一般raster,栅格数据与矢量数据的区别

GRID和一般raster的区别如下: The term raster data structure refers to a matrix composed of distinct units called pixels or cells. Each pixel or cell stores a numeric value. The pixels in a raster image usually consist of continuous brightness values represented as digital numbers. A raster image may be converted into a raster map by using image processing techniques to label each pixel with a numeric value indicating its category or surface type. Raster maps can also be created by rasterizing existing digital vector maps. GRID is an implementation of the generic raster data structure. It uses blocks and tiles for spatial indexing and an adaptive run-length compression technique for reducing storage. The values associated with the cells in a grid may be continuous or discrete. Hence, both raster images and raster maps can be stored in GRID. The operators that are part of the GRID system are designed for the analysis and overlay of raster maps. However, they may also be usefully employed for a variety of image-processing and analysis tasks.

相关主题