arcgis导出栅格数据老闪退_ArcGIS批量导出栅格影像的属性和属性表 (II)

本篇介绍了栅格影像的属性提取和属性表提取。

栅格属性,包括像元的最值、均值、值域等信息。

栅格表的属性,嗯就是栅格表属性。

为规避代码处理,通过变相处理获取栅格属性。舍去上文将栅格文件转移到地理数据库的麻烦。

思路是利用ArcGIS的属性提取/区域统计功能,当提取数据时依赖的属性值涵盖栅格影像的全部范围时,即实现了[提取栅格影像的属性表] 功能。

需要的操作如下:

1. 需要统计属性的栅格数据

2. 包含整个研究区的矢量/栅格文件,保证其中一条属性在整个研究区保持一致即可(如用“raster to polygon” 后合并要素,或已有的矢量文件)

3. 利用“Zonal statistics as table”可以统计出栅格中像元的均值、最值、和、值域等信息;利用“Tabulate Area”(面积制表)可以按属性分类(记录不可以超过256行)。

下图为简简单单的研究区矢量文件的属性。

68f59160a640acd8bf5b00f1f0301e4c.png

下图为“Zonal Statistics as Table”的参数和统计类型。

5a744e421a5ff21860e39fb1e4b4147d.png

下图为“Tabulate Area”的参数设置。

0a081ef55d2ccd9aa4326234cadbabf2.png

下面以统计统计某研究区10年NPP数据的栅格数性信息过程:

0. 基本信息

26d3c40c56baefe56a88c68f52ae1a95.png

1. 批量统计处理

搜索栏输入工具名称,这里是“Zonal Statistics as table”. 右键,“Batch” 批处理(没反应可以连续右键)

7a36a761d6752dac1ff01dcb693ce4ca.png

设置好首行属性后,全选记录并复制,打开Excel, 粘贴到空白工作簿

db946e8d650bd4f7ae342484aa241e6c.png

ba03d90e3d08333f541b1cb24057ea24.png

填充剩余需要补充的部分并运行。表格计算出来后,加载到工作空间中(测试时发现,表名不可以和栅格文件名重复,因而偷偷加了尾巴),如下图所示:

d9369f3a36611647382dde8d0ee1bb30.png

2.导出属性表

在搜索栏输入“table to excel” ,同样的操作:

18b5055daee2ab7e040c6029636ed1e0.png

3. 文件合并

最后一步,运用在线合并文件功能,合并众文件,这里本人经常用的是“it365工具箱”提供的表格合并功能。下载即可。

a3c4683682e3130dbdac2f11041be0f8.png

到这里基本上流程就结束了。

选用“Tabulate Area”工具做案例,可能更切题一些,但是与上述案例区别不大,操作流程一致。

结果类似这种:

d106c84246309d795885af7916c3529d.png

来源:https://www.cnblogs.com/geozho/p/13067811.html

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ArcGIS Engine栅格数据使用总结 ArcOjects 3D开发方法简介 作者:佚名 文章来源:GIS论坛 点击数:861 更新时间:2009-8-6 一、ArcOjects 3D开发方法简介 众所周知,在ArcGIS 3D分析扩展模块中提供了丰富的三维可视化和分析功能:你可以通过不同的视角查看面数据,对面数据进行查询,以及对面数据进行坡度、坡向、视域分析等操作,进行三维动画模拟等等。其中所涉及的3D对象都是ArcObjects的一部分,针对3D的开发,实际上是ArcObjects的开发,所以具体的开发方法有: 基于ArcScene中内嵌的VBA开发; 通过VB、VC++等兼容COM的开发语言进行开发新的3D组件和功能。 二、基本的3D对象模型 在3D开发中,我们可以用ArcMap对应ArcScene,其中MxDocument对象对应SxDocument对象,Map对象对应着Scene对象,而相对于Display显示对象,在ArcScene中有SceneGraph对象。在对象模型图的顶部是Application对象,从它我们可以执行和应用相关的任务,比如打开文档或者访问和应用相关的其它对象。在VBA中,我们可以直接获得Application对象: Dim pApp as IApplicaiton Set pApp = Application 如果你在VB DLL中实现命令和工具,那么在具体实例化这个类时你可以获得和Application对象挂接的钩子(hook): Implements ICommand Private m_pApp as esriCore.Iapplication Private Sub ICommand_OnCreate(ByVal Hook As Object) Set m_pApp = Hook … End Sub 有了Application对象,你就可以访问它所包含的其它所有对象了。比如可以获得SxDocument对象,而它包含一个Scene对象,Scene对应的SceneGraph对象包含了一个或多个SceneViewer对象,每个SceneViewer对象中有一个Camera对象,它代了观察点的特性。在Scene对象中可以访问Layer对象和GraphicsLayer3D对象,这两个对象都包含着一个3DProperties对象,用来控制图层中有关三维方面的特性。具体有关对象的特性可以参考联机帮助中对象上提供的接口所属的方法和属性。 三、3D几何模型和定制对象介绍 3D模型可以包括两种:矢量模型和面模型,面模型包括TIN和Raster,有关面模型的创建、数据结构访问和分析在本文中不做介绍。在此只介绍三维矢量模型的生成和访问等。3D矢量模型包括所有含有Z值的几何对象:点、线、面,以及MultiPatch(多片)。其中多片又可以分为:三角条带(Triangle Strip)、三角扇(Triangle Fan)和环(Ring)。 在ArcScene中可以通过二维的点、线、面数据来构建三维模型,通过ArcScene中提供的拉伸功能可以将点要素构建成垂直的线,线要素构建成墙,而多边形要素构建成块,拉伸的值的大小可以是一定常数,也可以是通过要素属性字段中的值计算得出,或者通过数据自身记录的Z值。在ArcObjects中可以通过在Geometry几何对象构建过程中,任意点除了X、Y坐标值,指定坐标Z值来构建三维点、线和面对象;对于多片,则通过构建相应的Multipatch对象,并指定每一个顶点的X、Y和Z值。下面的代码描述了如何由多片来构建一个房子对象,它的房顶由三角扇构建,没有窗户的墙由三角条带构建,带窗户的墙由环构建。 Dim pMultiPatch As esriCore.IMultiPatch Set pMultiPatch = New MultiPatch Dim pGeoCol As esriCore.IGeometryCollection Set pGeoCol = pMultiPatch Dim pPoints As esriCore.IPointCollection Dim pPoint As IPoint ‘创建屋顶 Set pPoints = New esriCore.TriangleFan Set pPoint = New Point pPoint.PutCoords 5, 4 pPoint.Z = 10 pPoints.AddPoint pPoint Set pPoint = New Point pPoint.PutCoords 0, 0 pPoint.Z = 5 pPoints.AddPoint pPoint ‘屋顶的其它顶点: . . . (10, 0, 5); (10, 8, 5); ( 0, 8, 5); ( 0, 0, 5) ‘将扇加到MultiPatch pGeoCol.AddGeometry pPoints ‘为没有窗户的墙创建条带 Set pPoints = New esriCore.TriangleStrip ‘添加条带顶点: . . . (10, 0, 5); (10, 0, 0); (10, 8, 5) . . . (10, 8, 0); ( 0, 8, 5); ( 0, 8, 0) . . . ( 0, 0, 5); ( 0, 0, 0) ‘将条带添加到MultiPatch pGeoCol.AddGeometry pPoints ‘为前面的墙创建外环 Set pPoints = New esriCore.Ring ‘添加外环顶点: . . . (10, 0, 5); (10, 0, 0); (10, 8, 5) . . . (10, 8, 0); ( 0, 8, 5); ( 0, 8, 0) . . . ( 0, 0, 5); ( 0, 0, 0) ‘将外环添加到MultiPatch pGeoCol.AddGeometry pPoints pMultiPatch.PutRingType pPoints, esriMultiPatchOuterRing ‘为前面的墙创建内环 Set pPoints = New esriCore.Ring ‘添加内环顶点: . . .(1, 0, 2);(3, 0, 2);(3, 0, 4);(1, 0, 4);(1, 0, 2) pGeoCol.AddGeometry pPoints pMultiPatch.PutRingType pPoints, esriMultiPatchInnerRing Set pPoints = New esriCore.Ring ‘添加内环顶点: . . .(7, 0, 2);(9, 0, 2);(9, 0, 4);(7, 0, 4);(7, 0, 2) pGeoCol.AddGeometry pPoints pMultiPatch.PutRingType pPoints, esriMultiPatchInnerRing ‘设置Z和M坐标awareness Dim pZAware As esriCore.IZAware Set pZAware = pMultiPatch pZAware.ZAware = True Dim pMAware As esriCore.IMAware Set pMAware = pMultiPatch pMAware.MAware = False 通常,多片是用来描述阴影平面集合,并且可以在其上粘贴影像,也就是贴图。为了粘贴影像,需要在Multipatch的每一个定点上记录纹理坐标。纹理坐标记录为s和t,值为0到1,示了从x到y方向影像的起点到终点。在ArcObjects中将s和t编码存储在定点的M值中。另外,如果要用Multipatch达复杂连续的几何对象,比如球体,为了平滑阴影平面之间的转折,需要在Multipatch的每一个顶点上记录它的法向量,同样法向量也是编码后存储在定点的M值中。如下面的代码: Dim pNormal As esriCore.IVector3D Dim pVertex As esriCore.Ipoint Dim m As Double m = 0 . . . Dim pEncoder As IEncode3DProperties Set pEncoder = New GeometryEnvironment pEncoder.PackNormal vNormal, m pEncoder.PackTexture2D s, t, m pVertex.M = m 四、3D渲染和动画功能定制简介

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值