默认头像
路人甲
路人甲
  • 注册日期2004-10-21
  • 发帖数126
  • QQ
  • 铜币540枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2317回复:5

遇到奇怪问题,探讨探讨

楼主#
更多 发布于:2006-10-04 16:15
我的想法是要把栅格文件类型中每个cell的值读出来,现在只能做出有某个值的cell有多少个(如值是5的cell有1022个)。但是遇到了奇怪的问题,我这段码对jpg,dem等都有效,不过遇到由ploygon转过来(用feature to raster)的栅格文件就会出现错误,此栅格文件有属性表。错误截图附上,请问是为什么??大家讨论下!<br>
[此贴子已经被作者于2006-10-4 16:18:12编辑过]
喜欢0 评分0
中国GIS的未来,要靠GIS农民创造.
默认头像
路人甲
路人甲
  • 注册日期2004-10-21
  • 发帖数126
  • QQ
  • 铜币540枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-10-14 16:53
我发现有些有属性表的栅格文件也能用,只不过它的pixle type是unsigned integer的,这个unsigned integer是什么意思,有什么办法可以把signed integer的改成unsigned integer的
中国GIS的未来,要靠GIS农民创造.
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-10-21
  • 发帖数126
  • QQ
  • 铜币540枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-10-10 12:19
兄弟们有没遇到过这种问题啊??
中国GIS的未来,要靠GIS农民创造.
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-10-27
  • 发帖数517
  • QQ4604052
  • 铜币1枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-10-08 22:02
MSN:hsghxm@163.com QQ:4604052 (很少用,最好别加) Email:hsghxm@163.com 我的BOLG:http://www.gisempire.com/blog/user1/864/index.htm
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-10-07 21:05
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2004-10-21
  • 发帖数126
  • QQ
  • 铜币540枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-10-07 10:19

Sub countnumber()

Dim pMap As IMap
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument
Set pMap = pMxDocument.FocusMap

Dim pRasterlayer As IRasterLayer
Set pRasterlayer = pMap.Layer(0)

Dim pRaster As IRaster
Set pRaster = pRasterlayer.Raster

Dim pRasBC As IRasterBandCollection
Set pRasBC = pRaster

Dim pRasterBand As IRasterBand
Set pRasterBand = pRasBC.Item(0)

' This example shows the usage of the IRawPixels interface to
' Read and write pixels to a raster band that is passed in.
' QI for the IRawPixels interface
Dim pRawPixels As IRawPixels
Set pRawPixels = pRasterBand

' QI for the IRasterProps interface to get height and width
Dim pProps As IRasterProps
Set pProps = pRaster

Dim pPnt As IPnt
Set pPnt = New DblPnt
pPnt.SetCoords pProps.Width, pProps.Height

' Use the RawPixels interface to create a new PixelBlock
Dim pPixelBlock As IPixelBlock
Set pPixelBlock = pRawPixels.CreatePixelBlock(pPnt)
' Create a new point to specify where to begin reading, then read
' Note:the origin is specified in pixel (or image) coordinates
Dim pOrigin As IPnt
Set pOrigin = New DblPnt
pOrigin.SetCoords 0, 0
pRawPixels.Read pOrigin, pPixelBlock

' get the variant SafeArray from the pixelblock
Dim vPixels As Variant
vPixels = pPixelBlock.SafeArray(0)

Dim i As Long, j As Long, sum As Long, value As Double

value = InputBox("请输入元胞的值:", "输入框")

For i = 0 To pProps.Width - 1
For j = 0 To pProps.Height - 1
If vPixels(i, j) = value Then sum = sum + 1
Next
Next

MsgBox "此栅格图层中值为" ; value ; "的元胞有" ; sum ; "个"

End Sub

中国GIS的未来,要靠GIS农民创造.
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部