第068封“情书”:耶路撒冷Assembling a 3DScanOfTheEarth可视化地图数据

每一天都是神的恩赐,请不要辜负。
▉ 热情在慢慢消退,逐渐冷却,惰性的冰川大兵压境,步步紧逼。— 每天翻译一篇教程,这就是我写给houdini的情书。【首发于同名公众号:“致houdini的情书”】<Entagma>Houdini 2018

█ “冰临城下”

前言不搭后语

冰冻三尺非一日之寒:逃避和放弃永远是最容易的选择!放弃一件事没什么,值得警惕的是,养成了放弃的习惯!

本节内容如何可视化地图数据&地理数据

本节要实现效果…

今天是42岁第043天周五

68这是写给Houdini的第068封“情书”

我是geo流程图

我是vex

04 置换海拔数据

//-- 1a 引入海拔属性
//-- 1b alt属性值在-1~1之间,乘32767把grid转换成米
//-- 1c 再加个比例因子,依据下载的Tile的经纬度计算tile的边缘长度
//但是因为地球表面有扭曲,这里乘引入的RSTM海拔信息,添加一个浮动滑块amp振幅
float offset = f@alt32767.0chf(“amp”);
//-- 3 判断偏移,高于1万的移入一个组,然后y轴=0
if(offset>30.0){
@group_error = 1;
offset=0;
v@Cd = {1,0,0};
f@alt = 0;
}

//-- 2 置换到y轴上
v@P.y += offset;

06 模糊“出错点”再次置换

float offset = f@alt32767.0chf(“amp”);
v@P.y += offset;
07 为海拔属性设置的经纬度坐标系

//-- 1 引入经纬度
//-- 1a 因为输入的面有些锯齿边缘所以不是整数;但经纬度是整数,所以四舍五入
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 通过相对坐标(0,0)到对角(1,1)映射,经纬度的最大最小值
float lon = fit01(v@uv.x,min_lon,max_lon);
float lat = fit01(v@uv.y,min_lat,max_lat);

//-- 3 创建矢量坐标
vector latlon = set(lat,lon,0.0);

//-- 4 创建属性
v@latlon = latlon;
09 osm的经纬坐标系匹配成alt海拔属性的经纬坐标系

//–osm的经纬坐标系匹配给alt海拔属性的latlon坐标系
//-- 1 同样引入osm的最大最小经纬度;
// 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 将经纬度转成矢量坐标系;
vector osm_latlon = set(f@latitude,f@longitude,0.0);
//-- 3 使用uvsample在各自的经纬度坐标上采样网格的位置,
//从1接口-想要匹配的位置采样,还有1上的lanlon属性;最后采样应用在0接口-的位置上
v@P = uvsample(1,“P”,“latlon”,osm_latlon);
首先
制作步骤

小节提要

本节将学习:

01)获得&转换地图数据:

1 获取开放地图数据

2 转换获得的数据

02)海拔属性置换&纠正:

1 引入海拔属性进行置换

2 纠正出现错误的点。

03)引入开放地图数据:

1 通过uv坐标映射范围成最大最小经度纬度

2 osm的经纬度采样“海拔经纬度坐标属性”

接下来

正式制作使用软件:houdini17.5.229

01 获得&转换地图数据

1获取开放地图数据

准备工作

首先)更新“游戏工具”标签

游戏标签增加了很多工具

○ 具体操作 ○

任务1) 首先需要“开放地图数据”

到“开放地图网站”下载有海拔信息的地图数据

a)进入开放地图网站: openstreetmap.org/export

b)左侧点击“手动选择不同的区域”

任务2)然后需要“海拔数据”

问题)这个网站没有此数据

❖解决方案)

A)另一网站获取文件(http://dwtkns.com/srtm30m/)

关于数据:SRTMHGT文件

1)Shuttle Radar Topography Mission:航天飞机雷达地形任务。

2)点击黄色瓷砖下载相应的数据。

3)Tiles(每块瓷砖)是从NASA服务器下载的纬度/经度投影(EPSG:4326)中以1弧秒分辨率(3601x3601像素)压缩的SRTMHGT文件。

B)找到某个区域的“左下角,右上角”“坐标”

执行)

A)下载文件:并且知道了“左下角”坐标。

1)点击一块Tile,首先注册一下NASA。点击才能“下载”

B)还有显示它的“左下角坐标”,但是没有“右上角坐标”

(这里是:左下角坐标N39W032)
问题) 没有“右上角坐标”,

分析)可以参考一下旁边有连续连接Tile的坐标规律,比如这个四个Tile区域;

❖解决方案)可以推断出“右上角坐标”N40W031

任务3)回到“开放地图”网站找到对应区域

执行)

1)输入对应的左下角=N39W032,右上角坐标N40W031:

2)点击下载API:文件名叫map

3)重命名azores.osm(亚速尔群岛)

2 转换获得的数据

○ 两个文件○

1).hgt文件。2)osm文件

○ 具体操作 ○

解决方案)

❖ 1)把.hgt改成 .raw格式。

❖ 2)用ps打开。

测试)

a)图像模式转成32位。

b)使用曝光命令调节,白色就是高度信息

3)保存tif格式。

02 海拔属性置换&纠正

1 引入海拔属性进行置换

○ 节点 ○

○ 具体操作 ○

1)geo内建立sop_osm_import节点

(osm=open street map开放地图)

1-1)导入osm

需求)几何表格里有点对应的“经度”“纬度”。 我们需要经纬度与SRTMHGT文件进行匹配。

执行)

2)建立分辨率36013601的grid:size=1010

3)引入“海拔贴图”//azros.tif;//输出属性alt(altitude海拔)

(现在grid每个点上都由alt高度属性)

需求)将这些数据转换成高度

执行)

4)pointwrangle:

//-- 1a 引入海拔属性

//-- 1b alt属性值在-1~1之间,乘32767把grid转换成米

//-- 1c 再加个比例因子,依据下载的Tile的经纬度计算tile的边缘长度 但是因为地球表面有扭曲,这里乘引入的RSTM海拔信息,添加一个浮动滑块amp振幅

float offset = f@alt32767.0chf(“amp”);

//-- 2 置换到y轴上

v@P.y += offset;

问题1)产生一个非常高的海拔

解决方案)改变“比例因子amp”

amp=0.001

2 纠正出现错误的点

○ 节点 ○

○ 具体操作 ○

问题2)残留一些细竖线;这些就是ps中的那些白点

改进)

1) 判断偏移,高于30(这个数值参考几何图表看y轴的高度,作者的是一万,我的是高于30)的移入一个组,设置偏移=0

if(offset>30.0){

@group_error = 1;

offset=0;

}

问题2a)效果仍然有问题

解决方案)在attribfrommap1过滤设置中

问题2b)还是有些点要纠正

测试)将error组中的那些点设置成红色

v@Cd= {1,0,0};

这些要纠正的点,需要跟周围融合一下

解决方案)

通过模糊出错点的模糊属性,以适应整个地形

1)增加attributblur节点

2)新增加pointwrangle,条件判断取消

float offset = f@alt32767.0chf(“amp”);

v@P.y += offset;

问题2c) 还是有点没有纠正过来

分析)因为模糊之前,这些要纠正的点alt属性也应该=0

float offset = f@alt32767.0chf(“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 引入开放地图数据

1 通过uv坐标映射范围成最大最小经度纬度

○ 具体操作 ○

02)降低一下grid分辨率:360*360

03)pointwragle3

问题1)grid上需要“经度”“纬度”属性

分析)

sop_osm_import节点的几何图表

1)最大最小的“经度lontitude”“纬度 latitude”

2)理论上相当于下载的Tile的坐标。

3)引入“经纬度”为grid的点生成坐标。

执行)

1)sop_osm_import连接pointwrangle3的“槽2”

2)vex代码

//-- 1 引入经纬度

//-- 1a 因为输入的面有些锯齿边缘所以不是整数;但经纬度是整数,所以四舍五入

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坐标映射成纬度最大最小值建坐标属性

解决方案)

1)使用uv Texture 产生uv坐标属性

现在有了uv相对坐标属性

2)将uv坐标范围映射成“经纬度最小最大范围”

float lon = fit01(v@uv.y,min_lon,max_lon);

float lat = fit01(v@uv.x,min_lat,max_lat);

3)创建经纬度坐标属性

//-- 创建矢量变量坐标

vector latlon = set(lat,lon,0.0);

//-- 创建经纬度属性

v@latlon = latlon;

2 osm的经纬度采样“海拔经纬度坐标属性”

执行)

1)pointwrangle4:

a)“槽1”连接sop_osm_import1b)"槽2"连接“pointwrangle3”

b) vex代码:

//-- 将经纬度转成矢量坐标系;

vector osm_latlon = set(f@latitude,f@longitude,0.0);

//-- 3 使用uvsample在各自的经纬度坐标上采样网格的位置,

//从1接口-想要匹配的位置采样,还有1上的lanlon属性;最后采样应用在0接口-的位置上

v@P = uvsample(1,“P”,“latlon”,osm_latlon);

可视化地图数据&地理数据

今天就到这里,收功

教程翻译自entagma的网络教程下一节:20180924 Crochet - Blending between Delaunay and Voronoi

第068封“情书”:耶路撒冷Assembling a 3DScanOfTheEarth可视化地图数据相关推荐

  1. 蝙蝠侠一键改udid软件_对于您的第一个HTML代码,让我们帮助蝙蝠侠写一封情书...

    蝙蝠侠一键改udid软件 by Kunal 由Kunal 对于您的第一个HTML代码,让我们帮助蝙蝠侠写一封情书 (For your first HTML code, let's help Batma ...

  2. 第075封“情书”:百撕不得其解Tearing Cloth<Entagma>Houdini 2018

    ▉通往自由的路上充满了撕扯狡诈,与阴谋,难道"卑鄙是卑鄙者者的通行证"是真的?- 每天翻译一篇教程,这就是我写给houdini的情书.[首发于同名公众号:"致houdin ...

  3. 第077封“情书”:弯弯绕<Entagma>Houdini 2018

    ▉ 我命硬学不会弯腰- 每天翻译一篇教程,这就是我写给houdini的情书.[首发于同名公众号:"致houdini的情书"] █命运,就算你想尽一切办法,也休想压弯我追求理想的执着 ...

  4. 《致盛夏的七封情书》 ------------ 第一篇《晨曦》

    写了一个短篇小说,<致盛夏的七封情书>,一共七篇,采用拼凑式的记述和多位不间断的场景转换,讲一个小小的爱情故事,不精美,也不感人,纯粹给目前毫无道理的无望生活找一点存在感. 第一篇< ...

  5. 第023封“情书”: 草书 Point Advection点的平流染色线

    ▉又一波韭菜长好了,该收割了,各位庄辛苦了! 像一棵 海草 海草随波飘摇,海草海草海草,随风飘摇!海草 海草浪花里舞蹈,海草 海草管它骇浪惊涛我有我乐逍遥,人海啊 茫茫啊随波逐流浮浮沉沉. 庄:韭菜的 ...

  6. 从零学编程1-写一封情书

    一哥们闲暇之余想学编程,博主作为"会装系统的人"自然脱不了干系,这哥们名字叫鹰,初中文化,对于电脑的认识属于只会上网听歌看电影,差点忘了他强调过CF玩的不错. 那就教起吧. 主人公 ...

  7. 阿狸给桃子的999封情书(123封)

    阿狸给桃子的999封情书(123封) <第一封> 我爱你,不是因为你是一个怎样的人,而是因为我喜欢与你在一起时的感觉. <第二封> 我不生气,因为身体是自己的:我不伤心,因为心 ...

  8. 第060封“情书”:相对论 Signed Distance Outlines Houdini

    第060封"情书":相对论 20180507 Quicktip- Signed Distance Outlines<Entagma>Houdini 2018  ▉ 中国 ...

  9. 第079封“情书”:“I服了You”Cloth Solver From Scratch<Entagma>Houdini 2018

    ▉ 我从来不会对任何人任何事投降,直到遇见你.- 每天翻译一篇教程,这就是我写给houdini的情书.[首发于同名公众号:"致houdini的情书"] █城头变幻大王旗:曾经面对刁 ...

最新文章

  1. sqlalchemy(一)基本操作
  2. Android 开发包括哪些方面?如何提升?
  3. IBC+Palette 实现屏幕内容编码优化
  4. 得到classpath和当前类的绝对路径的一些方法
  5. 黑客入侵交警计算机系统删交通违法记录牟利
  6. java强制gc_java应用性能调优之详解System的gc垃圾回收方法
  7. eclipse中快捷搜索文件快捷键
  8. html跟随鼠标事件,HTML5深入学习之鼠标跟随,拖拽事件
  9. ipa在线安装搭建_iOS 可以永久安装IPA软件了,前提是……
  10. 解决阿里云不能使用yum问题
  11. cf计算机丢失msvcp100,Win7丢失MSVCP100.dll导致程序无法启动怎们办
  12. c语言编程绘制空间螺旋线,在UG中绘制变螺距螺旋线的方法
  13. Android Studio 部分查找快捷键
  14. 计算机更新一直在57转怎么办,win10系统更新到57%出现死机的原因和解决方法
  15. Python3使用Xpath解析网易云音乐歌手页面
  16. FFmpeg自学入门笔记
  17. 查询表名所在数据库名
  18. 面向对象设计原则-03依赖倒置原则
  19. 项目六总结 创建与使用存储过程
  20. 阅读软件汇-EPUB专版

热门文章

  1. django视频教程
  2. Tom小猫,让我看清你的五脏六腑1
  3. 智能合约通证化与 Web3 革命(1):为何智能合约没能成为区块链的杀手级应用?...
  4. 看来不止一次的电影(电影经典给你好看准备下载下来,免得以后收费了)
  5. Sorry, but pdflatex did not succeed
  6. available: expected single matching bean but found 2
  7. 《算法图解》学习笔记(十一):十种经典的算法与数据结构
  8. 提高spark任务稳定性的解决方案及Blacklist 机制说明解释
  9. 灰色的心情,贴几首我们一起唱的歌吧
  10. 2020年中国智能物联网(AIoT)白皮书