▉ 熱情在慢慢消退,逐漸冷卻,惰性的冰川大兵壓境,步步緊逼?!?每天翻譯一篇教程,這就是我寫給houdini的情書?!臼装l(fā)于同名公眾號:“致houdini的情書”】

█?“冰臨城下”
前言不搭后語
逃避和放棄永遠是最容易的選擇!人一旦通過努力做到了某件事,就會慢慢形成積極的做事態(tài)度和思維模式。放棄一件事沒什么,值得警惕的是,養(yǎng)成了放棄的習(xí)慣!
本節(jié)內(nèi)容
如何可視化地圖數(shù)據(jù)&地理數(shù)據(jù)
本節(jié)要實現(xiàn)效果
.....

今天是42歲
第043天周五
68
這是寫給Houdini的第068封“情書”
我是geo流程圖

我是pointvop
04 置換海拔數(shù)據(jù)
//-- 1a 引入海拔屬性
//-- 1b alt屬性值在-1~1之間,乘32767把grid轉(zhuǎn)換成米
//-- 1c 再加個比例因子,依據(jù)下載的Tile的經(jīng)緯度計算tile的邊緣長度
//但是因為地球表面有扭曲,這里乘引入的RSTM海拔信息,添加一個浮動滑塊amp振幅
float offset = f@alt*32767.0*chf("amp");
//-- 3 判斷偏移,高于1萬的移入一個組,然后y軸=0
if(offset>30.0){
? ? @group_error = 1;
? ? offset=0;
? ? v@Cd = {1,0,0};
? ? f@alt = 0;
}?
//-- 2 置換到y(tǒng)軸上
v@P.y += offset;
06 模糊“出錯點”再次置換
float offset = f@alt*32767.0*chf("amp");
v@P.y += offset;
07?為海拔屬性設(shè)置的經(jīng)緯度坐標(biāo)系
//-- 1 引入經(jīng)緯度?
//-- 1a 因為輸入的面有些鋸齒邊緣所以不是整數(shù);但經(jīng)緯度是整數(shù),所以四舍五入
float max_lat = rint(detail(1,"max_lat"));
float min_lat = rint(detail(1,"min_lat"));
float max_lon = rint(detail(1,"max_lon"));
float min_lon = rint(detail(1,"min_lon"));
//-- 2 通過相對坐標(biāo)(0,0)到對角(1,1)映射,經(jīng)緯度的最大最小值
float lon = fit01(v@uv.x,min_lon,max_lon);
float lat = fit01(v@uv.y,min_lat,max_lat);
//-- 3 創(chuàng)建矢量坐標(biāo)
vector latlon = set(lat,lon,0.0);
//-- 4 創(chuàng)建屬性
v@latlon = latlon;
09?osm的經(jīng)緯坐標(biāo)系匹配成alt海拔屬性的經(jīng)緯坐標(biāo)系
//--osm的經(jīng)緯坐標(biāo)系匹配給alt海拔屬性的latlon坐標(biāo)系
//-- 1 同樣引入osm的最大最小經(jīng)緯度;
// float max_lat = rint(detail(0,"max_lat"));
// float min_lat = rint(detail(0,"min_lat"));
// float max_lon = rint(detail(0,"max_lon"));
// float min_lon = rint(detail(0,"min_lon"));
//-- 2 將經(jīng)緯度轉(zhuǎn)成矢量坐標(biāo)系;
vector osm_latlon = set(f@latitude,f@longitude,0.0);
//-- 3 使用uvsample在各自的經(jīng)緯度坐標(biāo)上采樣網(wǎng)格的位置,
//從1接口-想要匹配的位置采樣,還有1上的lanlon屬性;最后采樣應(yīng)用在0接口-的位置上
v@P = uvsample(1,"P","latlon",osm_latlon);
首先
制作步驟
? ? ? ? ? ? ○
小節(jié)提要
本節(jié)將學(xué)習(xí):?
01)獲得&轉(zhuǎn)換地圖數(shù)據(jù):
? 1 獲取開放地圖數(shù)據(jù)?
?2 轉(zhuǎn)換獲得的數(shù)據(jù)
02)海拔屬性置換&糾正:
??1?引入海拔屬性進行置換
? 2 糾正出現(xiàn)錯誤的點。
03)引入開放地圖數(shù)據(jù):
? 1 通過uv坐標(biāo)映射范圍成最大最小經(jīng)度緯度
? 2 osm的經(jīng)緯度采樣“海拔經(jīng)緯度坐標(biāo)屬性”
接下來
正式制作
? ? ? ? ? 使用軟件:houdini17.5.229
01 獲得&轉(zhuǎn)換地圖數(shù)據(jù)
1獲取開放地圖數(shù)據(jù)?
準(zhǔn)備工作
首先)更新“游戲工具”標(biāo)簽
游戲標(biāo)簽增加了很多工具

○ 具體操作 ○
任務(wù)1)?首先需要“開放地圖數(shù)據(jù)”??
? ? ?到“開放地圖網(wǎng)站”下載有海拔信息的地圖數(shù)據(jù)
a)進入開放地圖網(wǎng)站:?openstreetmap.org/export?
b)左側(cè)點擊“手動選擇不同的區(qū)域”

任務(wù)2)然后需要“海拔數(shù)據(jù)”?
問題)這個網(wǎng)站沒有此數(shù)據(jù)
?解決方案)
A)另一網(wǎng)站獲取文件(http://dwtkns.com/srtm30m/)
關(guān)于數(shù)據(jù):SRTMHGT文件
????1)Shuttle Radar Topography Mission:航天飛機雷達地形任務(wù)。
2)點擊黃色瓷磚下載相應(yīng)的數(shù)據(jù)。
????3)Tiles(每塊瓷磚)是從NASA服務(wù)器下載的緯度/經(jīng)度投影(EPSG:4326)中以1弧秒分辨率(3601x3601像素)壓縮的SRTMHGT文件。
????????B)找到某個區(qū)域的“左下角,右上角”“坐標(biāo)”
執(zhí)行)
?A)下載文件:并且知道了“左下角”坐標(biāo)。
?1)點擊一塊Tile,首先注冊一下NASA。點擊才能“下載”
B)還有顯示它的“左下角坐標(biāo)”,但是沒有“右上角坐標(biāo)”
(這里是:左下角坐標(biāo)N39W032)
問題)?沒有“右上角坐標(biāo)”,
? ? 分析)可以參考一下旁邊有連續(xù)連接Tile的坐標(biāo)規(guī)律,比如這個四個Tile區(qū)域;?

?解決方案)可以推斷出“右上角坐標(biāo)”N40W031
任務(wù)3)回到“開放地圖”網(wǎng)站找到對應(yīng)區(qū)域
執(zhí)行)
1)輸入對應(yīng)的左下角=N39W032,右上角坐標(biāo)N40W031:
????????2)點擊下載API:文件名叫map
????????3)重命名azores.osm(亞速爾群島)
2 轉(zhuǎn)換獲得的數(shù)據(jù)
○兩個文件○
1).hgt文件。2)osm文件
○ 具體操作 ○
解決方案)
?????????1)把.hgt改成 .raw格式。
?????????2)用ps打開。

測試)
???????????a)圖像模式轉(zhuǎn)成32位。
???????????b)使用曝光命令調(diào)節(jié),白色就是高度信息

????????????3)保存tif格式。
02 海拔屬性置換&糾正
1 引入海拔屬性進行置換
○ 節(jié)點 ○

○ 具體操作 ○
1)geo內(nèi)建立sop_osm_import節(jié)點
(osm=open street map開放地圖)?
????1-1)導(dǎo)入osm

需求)幾何表格里有點對應(yīng)的“經(jīng)度”“緯度”。? 我們需要經(jīng)緯度與SRTMHGT文件進行匹配。 ? ?
執(zhí)行)
????2)建立分辨率3601*3601的grid:size=10*10
????3)引入“海拔貼圖”//azros.tif;//輸出屬性alt(altitude海拔)

(現(xiàn)在grid每個點上都由alt高度屬性)
需求)將這些數(shù)據(jù)轉(zhuǎn)換成高度
執(zhí)行)
????4)pointwrangle:??
//-- 1a 引入海拔屬性
//-- 1b alt屬性值在-1~1之間,乘32767把grid轉(zhuǎn)換成米
//-- 1c 再加個比例因子,依據(jù)下載的Tile的經(jīng)緯度計算tile的邊緣長度?但是因為地球表面有扭曲,這里乘引入的RSTM海拔信息,添加一個浮動滑塊amp振幅
float offset = f@alt*32767.0*chf("amp");
//-- 2 置換到y(tǒng)軸上
v@P.y += offset;
問題1)產(chǎn)生一個非常高的海拔

解決方案)改變“比例因子amp”
amp=0.001

2 糾正出現(xiàn)錯誤的點?
○ 節(jié)點 ○

○ 具體操作 ○
問題2)殘留一些細豎線;這些就是ps中的那些白點
改進)
1)?判斷偏移,高于30(這個數(shù)值參考幾何圖表看y軸的高度,作者的是一萬,我的是高于30)的移入一個組,設(shè)置偏移=0
????if(offset>30.0){
? ? @group_error = 1;
? ? offset=0;
}? ? ?
問題2a)效果仍然有問題
解決方案)在attribfrommap1過濾設(shè)置中
問題2b)還是有些點要糾正
測試)將error組中的那些點設(shè)置成紅色
????v@Cd= {1,0,0};? ??
這些要糾正的點,需要跟周圍融合一下

解決方案)
通過模糊出錯點的模糊屬性,以適應(yīng)整個地形
????1)增加attributblur節(jié)點

????2)新增加pointwrangle,條件判斷取消
????float offset = f@alt*32767.0*chf("amp");
v@P.y += offset;
問題2c)還是有點沒有糾正過來
分析)因為模糊之前,這些要糾正的點alt屬性也應(yīng)該=0
?float offset = f@alt*32767.0*chf("amp");
if(offset>300.0){
? ? @group_error = 1;
? ? offset=0;
? ? //v@Cd = {1,0,0};
? ? f@alt = 0;
}?
//v@P.y += offset;? ?

通過過濾和修正“海拔屬性alt”引入到grid上
03 引入開放地圖數(shù)據(jù)
1 通過uv坐標(biāo)映射范圍成最大最小經(jīng)度緯度

○ 具體操作 ○
????02)降低一下grid分辨率:360*360
????03)pointwragle3
問題1)grid上需要“經(jīng)度”“緯度”屬性? ??
分析)
sop_osm_import節(jié)點的幾何圖表

1)最大最小的“經(jīng)度lontitude”“緯度?latitude”
????2)理論上相當(dāng)于下載的Tile的坐標(biāo)。
????3)引入“經(jīng)緯度”為grid的點生成坐標(biāo)。
執(zhí)行)
1)sop_osm_import連接pointwrangle3的“槽2”
?2)vex代碼
//-- 1 引入經(jīng)緯度?
//-- 1a 因為輸入的面有些鋸齒邊緣所以不是整數(shù);但經(jīng)緯度是整數(shù),所以四舍五入
float max_lat = rint(detail(1,"max_lat"));
float min_lat = rint(detail(1,"min_lat"));
float max_lon = rint(detail(1,"max_lon"));
float min_lon = rint(detail(1,"min_lon"));
????問題2)建uv坐標(biāo)映射成緯度最大最小值建坐標(biāo)屬性?
解決方案)
????1)使用uv Texture?產(chǎn)生uv坐標(biāo)屬性?? ?

現(xiàn)在有了uv相對坐標(biāo)屬性

???2)將uv坐標(biāo)范圍映射成“經(jīng)緯度最小最大范圍”
float?lon =?fit01(v@uv.y,min_lon,max_lon);
??floatlat =fit01(v@uv.x,min_lat,max_lat);
????3)創(chuàng)建經(jīng)緯度坐標(biāo)屬性? ?
//--? 創(chuàng)建矢量變量坐標(biāo)
vector latlon =set(lat,lon,0.0);
//--? 創(chuàng)建經(jīng)緯度屬性
v@latlon = latlon;???
2 osm的經(jīng)緯度采樣“海拔經(jīng)緯度坐標(biāo)屬性”

執(zhí)行)
????1)pointwrangle4:
????????a)“槽1”連接sop_osm_import1b)"槽2"連接“pointwrangle3”
b) vex代碼:
?//--? 將經(jīng)緯度轉(zhuǎn)成矢量坐標(biāo)系;
?vector osm_latlon =set(f@latitude,f@longitude,0.0);
//-- 3 使用uvsample在各自的經(jīng)緯度坐標(biāo)上采樣網(wǎng)格的位置,
????//從1接口-想要匹配的位置采樣,還有1上的lanlon屬性;最后采樣應(yīng)用在0接口-的位置上
v@P =uvsample(1,"P","latlon",osm_latlon);
可視化地圖數(shù)據(jù)&地理數(shù)據(jù)

今天就到這里,收功

教程翻譯自entagma的網(wǎng)絡(luò)教程
下一節(jié)::20180924 Crochet - Blending between Delaunay and Voronoi
電子郵箱:oneinchtime@126.com
公眾號:
微信號
