由 goodman » 2004-07-27 9:21
转换本身就是将相同的CellValue转换成Polygon。可以利用这个特性很容易的把grid转换成以cell小格的polygon。
关键是生成每个CellValue都不相同的grid。这个可以利用内部参数在Raster Calculator中实现。输入一下命令:
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)
这样利用cell的行列就生成了各不相同的cellvalue。然后利用转换就可以得到Polygon了。
有了Polygon以后xy坐标就很容易求了,Polygon的中心或者左上角等都可以算出。
关键是生成每个CellValue都不相同的grid。这个可以利用内部参数在Raster Calculator中实现。输入一下命令:
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)
这样利用cell的行列就生成了各不相同的cellvalue。然后利用转换就可以得到Polygon了。
有了Polygon以后xy坐标就很容易求了,Polygon的中心或者左上角等都可以算出。
山不在高,有仙则明;水不在深,有龙则灵。
- 帖子: 422
- 注册: 2001-07-13 12:00
goodman
由 cgh » 2005-05-02 10:10
goodman 写道:转换本身就是将相同的CellValue转换成Polygon。可以利用这个特性很容易的把grid转换成以cell小格的polygon。
关键是生成每个CellValue都不相同的grid。这个可以利用内部参数在Raster Calculator中实现。输入一下命令:
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)
这样利用cell的行列就生成了各不相同的cellvalue。然后利用转换就可以得到Polygon了。
有了Polygon以后xy坐标就很容易求了,Polygon的中心或者左上角等都可以算出。
但是如何将feature的节点坐标x和y作为两个字段加入到属性表呢?
______________
*-------------**
{ cgh } *
*-------------**
{ cgh } *
-
cgh
- 帖子: 40
- 注册: 2002-11-27 22:31
由 yulu11 » 2005-05-07 10:38
生成单个grid小格,并将属性加入的全过程(以房地产为例):
1利用房地产(点要素,内有房产价格字段)数据,采用arcgis desktop的空间分析模块中的任一空间插值方法插值出一个grid表面。注意:首先设定option里面的参数
2打开Raster Calculator(栅格计算器),输入命令:
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)
其中cellnum是新生成grid的名称,如果要理解$$ROWMAP $$NCOLS $$COLMAP这些参数,首先要理解什么是矩阵,栅格文件的特点就是像一个矩阵,一个一个格子排列整齐规则,非常便于数学计算,这也就是raster非常流行的原因之一了。哈,闲话少说,言规正传!原来插值生成的grid是一个矩阵X[M][N],$$NCOLS就是矩阵的N维数,$$ROWMAP是X[M], $$COLMAP是X[N],假设M和N都是5,那么计算过程如下:
0×5+0+1=1 第一行第一个单元格里面的新值(计算机计算的起点都是0,这一点学过c语言的人应该明白)
0×5+1+1=2 第一行第一个单元格里面的新值
……
1×5+0+1=6第二行第一个单元格里面的新值
1×5+1+1=7第二行第二个单元格里面的新值
……
以此类推我们可以得到所有单元格的新值,那么实际上我们就是把原来的grid转换为一个每个单元(cell)值都不相同的grid,这样就可以生成一个一个小格的polygon要素(矢量)。具体实现很简单,空间模块菜单里面有一个将raster转换为vector的菜单,注意不要勾选简化边界,否则生成的矢量图形的边界会出现三角形。
3这样我们就得到了一个一块块小格的矢量图形,但是我们发现原来的属性数据丢失了,即原来空间插值所得到的value没有了,这怎么办呢?我们可以采用空间join的方法,把原来的grid里面的value重新得到。具体操作过程如下,首先把原来的grid转换为点要素(矢量),这样每个点就获取了原grid每个格子上的值。第二步,在新生成的矢量图层(polygon)点击右键,在文本菜单中找到join and relate,打开join对话框,在第一个选项中,选择基于位置的join即空间join,在第二个选项中选择第二个,join的图层选择刚才生成的那个点图层,然后在最下面的指定新生成的文件名和路径。这样我们就得到了即有原来的值,又被分成一个一个小格的矢量图形(每个格子和原来的grid一一对应)。
4如果我们还想把每个格子的中心点坐标加入其中的话,那么就更简单了。在最终得到的那个矢量图层中新建一个类型为double的字段,在字段名上点击右键,选择caculate value,打开字段计算器对话框,调入help中自带计算质心的vbsript,然后点击确定,即可得到每个格子中心点的坐标。每个小格四个角的坐标获取方法和上述一样。
arcgis desktop中空间分析模块生成的grid除了id,value,count三个字段以外,不能添加任何其他字段,所以采用上述方法加入每个格子的其他字段。当然这只是一个折衷的办法,生成的矢量图形分类上色是很困难的,因为一般我们生成的格子都上万个,arcgis对矢量分类上色对数量是有限制的。最好的方法是使用arcgis workstation,那里生成的grid可以添加多个字段,但本人没用过,不清楚。有使用过的人可否给指点一下!!
1利用房地产(点要素,内有房产价格字段)数据,采用arcgis desktop的空间分析模块中的任一空间插值方法插值出一个grid表面。注意:首先设定option里面的参数
2打开Raster Calculator(栅格计算器),输入命令:
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)
其中cellnum是新生成grid的名称,如果要理解$$ROWMAP $$NCOLS $$COLMAP这些参数,首先要理解什么是矩阵,栅格文件的特点就是像一个矩阵,一个一个格子排列整齐规则,非常便于数学计算,这也就是raster非常流行的原因之一了。哈,闲话少说,言规正传!原来插值生成的grid是一个矩阵X[M][N],$$NCOLS就是矩阵的N维数,$$ROWMAP是X[M], $$COLMAP是X[N],假设M和N都是5,那么计算过程如下:
0×5+0+1=1 第一行第一个单元格里面的新值(计算机计算的起点都是0,这一点学过c语言的人应该明白)
0×5+1+1=2 第一行第一个单元格里面的新值
……
1×5+0+1=6第二行第一个单元格里面的新值
1×5+1+1=7第二行第二个单元格里面的新值
……
以此类推我们可以得到所有单元格的新值,那么实际上我们就是把原来的grid转换为一个每个单元(cell)值都不相同的grid,这样就可以生成一个一个小格的polygon要素(矢量)。具体实现很简单,空间模块菜单里面有一个将raster转换为vector的菜单,注意不要勾选简化边界,否则生成的矢量图形的边界会出现三角形。
3这样我们就得到了一个一块块小格的矢量图形,但是我们发现原来的属性数据丢失了,即原来空间插值所得到的value没有了,这怎么办呢?我们可以采用空间join的方法,把原来的grid里面的value重新得到。具体操作过程如下,首先把原来的grid转换为点要素(矢量),这样每个点就获取了原grid每个格子上的值。第二步,在新生成的矢量图层(polygon)点击右键,在文本菜单中找到join and relate,打开join对话框,在第一个选项中,选择基于位置的join即空间join,在第二个选项中选择第二个,join的图层选择刚才生成的那个点图层,然后在最下面的指定新生成的文件名和路径。这样我们就得到了即有原来的值,又被分成一个一个小格的矢量图形(每个格子和原来的grid一一对应)。
4如果我们还想把每个格子的中心点坐标加入其中的话,那么就更简单了。在最终得到的那个矢量图层中新建一个类型为double的字段,在字段名上点击右键,选择caculate value,打开字段计算器对话框,调入help中自带计算质心的vbsript,然后点击确定,即可得到每个格子中心点的坐标。每个小格四个角的坐标获取方法和上述一样。
arcgis desktop中空间分析模块生成的grid除了id,value,count三个字段以外,不能添加任何其他字段,所以采用上述方法加入每个格子的其他字段。当然这只是一个折衷的办法,生成的矢量图形分类上色是很困难的,因为一般我们生成的格子都上万个,arcgis对矢量分类上色对数量是有限制的。最好的方法是使用arcgis workstation,那里生成的grid可以添加多个字段,但本人没用过,不清楚。有使用过的人可否给指点一下!!
-
yulu11
- 帖子: 29
- 注册: 2004-07-13 17:05
-
chnanning
- 帖子: 1
- 注册: 2005-11-02 14:22