转:如何求出grid图像每个cell对应的x,y坐标?
生活随笔
收集整理的這篇文章主要介紹了
转:如何求出grid图像每个cell对应的x,y坐标?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
現有一個grid文件,現有三個字段,id,value,count。新建二個字段x,y,如何求出每個cell的坐標值,并輸入到grid的屬性表中的x,y字段中。?
另外,如何將grid轉為一個一個cell小格的polygon feature,我在空間分析模塊下試了一下,轉出來的polygon不是一個一個cell小格圖形,它把value值相同并相鄰的cell合成一個polygon,并且在grid網格的邊緣形成了一些三角形polygon。這是何故,應該如何做?yulu11帖子:?29 注冊:?2004-07-13 17:05 頁首
關鍵是生成每個CellValue都不相同的grid。這個可以利用內部參數在Raster Calculator中實現。輸入一下命令:?
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)?
這樣利用cell的行列就生成了各不相同的cellvalue。然后利用轉換就可以得到Polygon了。?
有了Polygon以后xy坐標就很容易求了,Polygon的中心或者左上角等都可以算出。山不在高,有仙則明;水不在深,有龍則靈。
goodman帖子:?422 注冊:?2001-07-13 12:00 頁首帖子:?29 注冊:?2004-07-13 17:05 頁首
在option中設定范圍和cell的大小,當然是和lu一樣即可。?
另外,如果還有問題的話,看一看默認的臨時目錄中是否有漢字,有時候也有影響。?
注意以上幾點,應該沒有問題的。山不在高,有仙則明;水不在深,有龍則靈。
goodman帖子:?422 注冊:?2001-07-13 12:00 頁首帖子:?29 注冊:?2004-07-13 17:05 頁首
CAFECAT帖子:?84 注冊:?2003-05-07 23:10 頁首
斑竹說的方法,當然也可以。?
能解釋一下:$$ROWMAP、 $$NCOLS以及$$COLMAP代表什么嗎?eger帖子:?64 注冊:?2002-06-10 10:55 頁首帖子:?3 注冊:?2005-01-21 10:14 頁首帖子:?29 注冊:?2004-07-13 17:05 頁首
只要本身的grid帶有經緯度坐標,那ploygon自然也帶有坐標的,也很簡單。leung帖子:?13 注冊:?2004-04-12 12:00 頁首
只要本身的grid帶有經緯度坐標,那ploygon自然也帶有坐標的,也很簡單。
老大,給個extension如何?“余少學書,不成;學劍,又不成;憤而捐書棄劍,不學無術,竟又不成。嗚呼哀哉!”man帖子:?142 注冊:?2002-09-29 17:37 頁首
關鍵是生成每個CellValue都不相同的grid。這個可以利用內部參數在Raster Calculator中實現。輸入一下命令:
CellNum = ($$ROWMAP * $$NCOLS) + ($$COLMAP + 1)
這樣利用cell的行列就生成了各不相同的cellvalue。然后利用轉換就可以得到Polygon了。
有了Polygon以后xy坐標就很容易求了,Polygon的中心或者左上角等都可以算出。
但是如何將feature的節點坐標x和y作為兩個字段加入到屬性表呢?______________?
*-------------**?
{ cgh } *cgh帖子:?40 注冊:?2002-11-27 22:31 頁首
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 頁首
學到了挺多的四十四帖子:?2 注冊:?2005-04-27 13:00 頁首帖子:?1 注冊:?2005-11-02 14:22
另外,如何將grid轉為一個一個cell小格的polygon feature,我在空間分析模塊下試了一下,轉出來的polygon不是一個一個cell小格圖形,它把value值相同并相鄰的cell合成一個polygon,并且在grid網格的邊緣形成了一些三角形polygon。這是何故,應該如何做?yulu11
由?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的中心或者左上角等都可以算出。山不在高,有仙則明;水不在深,有龍則靈。
goodman
由?yulu11?? 2004-08-03 9:32
我運行上面的命令,可是arcgis說命令出錯,您能講得詳細一些嗎?比如說我有一個grid文件lu,我怎樣具體輸入正確的命令表達式?yulu11由?goodman?? 2004-08-03 9:44
命令本身沒有任何問題,應該是你沒有設定參數。?在option中設定范圍和cell的大小,當然是和lu一樣即可。?
另外,如果還有問題的話,看一看默認的臨時目錄中是否有漢字,有時候也有影響。?
注意以上幾點,應該沒有問題的。山不在高,有仙則明;水不在深,有龍則靈。
goodman
由?yulu11?? 2004-08-03 10:19
謝謝,我已經生成了,但是我在help中看不到和命令有關的內容,請問在那里能找到?yulu11由?CAFECAT?? 2004-08-04 8:22
謝謝,學到新東西了CAFECAT
由?eger?? 2004-08-31 19:56
根據Grid的左上角坐標和柵格大小,利用Generate下的Grid labels,同時生成網格和中心點。?斑竹說的方法,當然也可以。?
能解釋一下:$$ROWMAP、 $$NCOLS以及$$COLMAP代表什么嗎?eger
由?albert99?? 2005-01-21 10:59
Thank u:)具體如何操作。用什么命令?albert99由?yulu11?? 2005-01-25 16:20
其實還有更簡單的方法,在空間分析模塊下將grid轉成feature,這時注意要把grid轉成點feature。生成的點將出現在原來柵格的中心,然后通過help里面vbsript將點的坐標算出來,中心點的坐標有了,其他四個角自然也就很好算出來了。如果是想將grid轉為一個一個cell小格的polygon feature,那么就把生成的點feature轉成grid,選擇的字段為id.yulu11由?leung?? 2005-01-30 13:26
arcview中grid轉ploygon的extension多得很。?只要本身的grid帶有經緯度坐標,那ploygon自然也帶有坐標的,也很簡單。leung
由?man?? 2005-02-27 15:16
leung 寫道:arcview中grid轉ploygon的extension多得很。只要本身的grid帶有經緯度坐標,那ploygon自然也帶有坐標的,也很簡單。
老大,給個extension如何?“余少學書,不成;學劍,又不成;憤而捐書棄劍,不學無術,竟又不成。嗚呼哀哉!”man
由?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
由?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可以添加多個字段,但本人沒用過,不清楚。有使用過的人可否給指點一下!!yulu11
由?四十四?? 2005-05-07 19:26
很好啊!?學到了挺多的四十四
由?chnanning?? 2005-11-09 9:28
這樣做出來的文件不能用柵格計算器進行疊加,請問怎么辦?chnanning原文:http://www.cngis.org/bbs/viewtopic.php?t=6329?
轉載于:https://www.cnblogs.com/gxiang/archive/2010/01/25/1656030.html
總結
以上是生活随笔為你收集整理的转:如何求出grid图像每个cell对应的x,y坐标?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌也被逼出局域网了 baidu从此天下
- 下一篇: C#获取二叉树深度及分层遍历二叉树