Matlab 向量裁剪柵格應該注意的問題

2021-10-06 01:49:33 字數 2476 閱讀 1439

還不點贊收藏?等你用到了,估計找不到資料了~

摘要很多matlab向量裁剪柵格的內容,看得一頭霧水,本文也來簡要說說如何使用向量裁剪柵格。

思想(重要)

利用向量裁剪柵格,我沒有找到什麼好用的函式,其核心思想目前我仍然是取值賦值,先找到向量邊界圖形的boundary range,即經度和緯度最大最小值,然後利用柵格影象中的boundary range中的x_min和y_max,以及影象的空間解析度 ° ,對向量邊界圖形的經度和緯度最大最小值求其行列號。以上過程可以得到向量邊界圖形對應柵格中的起始行列號和終止行列號,裁剪的影象的本質就是找到其下標範圍,對柵格資料直接取值。

temp = data;

tif_i = temp(line_start:line_end,sample_start:sample_end)

;

需要注意的是,如果柵格影象使用的是依據某一基準橢球體的大地座標系,即投影座標系,而不是地理座標系,此時需要首先將二者的座標系統一為柵格影象的投影座標系,且投影基準橢球體應保持一致,然後求向量圖形x和y最大最小大地座標系,然後基於柵格影象的x和y的最小最小座標系,以及空間解析度 m ,求出行列號,取影象值。

%起始行號和終止行號

%假設polygon乙個角點位於第1行,應該取行號是多少

line_start = floor(

(tif_ymax-poly_i_ymax)/10

)+1;

line_end = floor(

(tif_ymax-poly_i_ymin)/10

)+1;

%起始列號和終止列號

sample_start = floor(

(poly_i_xmin-tif_xmin)/10

)+1;

sample_end = floor(

(poly_i_xmax-tif_xmin)/10

)+1;

向量邊界外的值設為無效值

這一步往往也很重要,有的人先把向量轉為了柵格,然後利用填充演算法填充了邊界內部,外部置為了無效值或者0,然後在柵格轉向量的過程中就會有各種問題,比如多乙個像元少乙個像元的問題,然後再處理這乙個像元,而這個過程就比較複雜了。也有人使用了makerefmat和mask = vector2mtx()函式,將mask中值》1的區域設定為nan,邊界設定為0,製作掩膜。

詳細見鏈結,沒有用過,不知道好用不好用。下面是利用inpolygon方法。判斷生成的經緯度meshgrid,在不在向量範圍之內,如果在,則這些經緯度置為1,外圍置為0,然後得到的邏輯陣列,再借給上面的子柵格使用,tif_i(~isin) = nan;將0區域置為無效值。

x = linspace(poly_i_xmin,poly_i_xmax,temp_ref.rastersize(2)

);y = linspace(poly_i_ymin,poly_i_ymax,temp_ref.rastersize(1)

);[lon,lat]

= meshgrid(x,y);%

----

----

----

----!!!!!!!!!!---

----

----

----

----

----

----

----

----

----

----

----

----

----

----

--isin = inpolygon(lon,lat,shp(i)

.x,shp(i)

.y);%-

----

----

----

---!!!!!!!!!!---

----

----

----

----

----

----

----

----

----

----

----

----

----

----

--tif_i(

~isin)

= nan;

接著再把裁剪取到的資料和空間參考資訊修改之後存入tif。

如圖,黑色部分為無效值。

值得注意的是,如果是用大地座標系生成的meshgrid,向量也是大地座標系的話,即投影座標系的話,生成的isin影象是翻轉的,因此需要增加一步翻轉回來,然後再取其對應值,可能的原因是從本質上講是因為地理座標系和大地座標系關於起始和終止位置座標的表示方法不同。

isin_new = flipud(isin)

;

結果圖:

祝大家生活愉快,變瘦變美變好看!給個關注行不行?我有個朋友想認識一下您。

IDL實現向量 shp 裁剪柵格TASK(一

隨著envi idl版本的更新,idl對向量和柵格資料的處理也變得越來越簡單化。其提供了很多方便的介面,使得使用者呼叫和學習練習便捷成為了可能。最近接觸idl,發現好多網上的 都是延後的,新的介面 理解和編寫起來都比較方便,尤其是在做大量資料研究和應用時,使用批處理的方式顯得尤其重要。新的介面還在摸...

向量裁剪向量

也不知道為啥,向量裁剪向量這麼普通的東西這麼難找,趕緊放出來讓大家用用 import os import numpy as np import geopandas as gpd import warnings warnings.filterwarnings ignore geoseries.notn...

柵格擦除 反向裁剪

前言 最近辦公室的師兄在處理橫斷山區水土耦合的時候,遇到乙個問題,需要對柵格資料進行擦除,也就是反向提取。如果是向量資料,arcgis中提供直接的工具可以進行,但是柵格資料並沒有直接的工具。如果將柵格資料轉換為向量資料,則會遇到座標系 轉換方法和像元大小確定的問題,還會造成精度損失。網上搜尋的方法不...