NCF参数化建筑论坛

标题: LeafVein——Grasshopper图论插件介绍 [打印本页]

作者: wdc63    时间: 2021-7-3 00:11
标题: LeafVein——Grasshopper图论插件介绍
LeafVein是本人近期发布的一款Grasshopper插件。

在建筑学和城乡规划学领域,图论已成为许多研究方向(例如路径优化、设施分布、空间句法等)开展量化研究必不可少的基础数学工具。LeafVein是Grasshopper(GH)平台上的一个通用图论仿真工具,LeafVein的设计目标是使用Rhino/GH中的几何对象轻松创建抽象的网络图以取代传统基于代码的图创建方式,并提供图论领域尽可能完善的算法,以帮助任何Rhino/GH用户轻松地使用图论工具对研究问题开展分析。使用LeafVein可以以多种方式创建有向、无向和混合图,并提供了基于序列和对象两种方式以指定图任何元素的特定属性(方向与权重/距离)。LeafVein具备丰富的图相关分析、路径计算和临近点算法以适应不同问题需要。LeafVein具备较高性能,能够支持大规模复杂图(上十万节点或弧(Arc)/边(Edge))的创建与计算。相对于价格昂贵GIS软件或复杂的代码工具,使用LeafVein能够帮助您在相关研究中节省时间与成本,提高效率。

[attach]54579[/attach]

LeafVein运算器一览(alpha0.5)

LeafVein主要有以下特性:
•        多种方式建立图,并完全自定义图的属性:
-        使用Rhino或GH曲线、点、网格(对象可位于三维空间)建立自定义图、完全图或二分图;使用Openstreetmap开源地图在线或离线文件创建城市路径网络图;
-        通过全局设置图的有向性或无向性,边按几何对象长度设置权重或等权;
-        通过自定义属性运算器(json列表或rhino对象的用户属性参数)设置每条弧的方向与权重(距离)。
•        可视化图:节点编号、弧编号、弧长度、弧方向,自定义文字和图形大小和颜色。
•        轻松查询Rhino/GH对象和图的元素:根据曲线、点定位图的弧、节点,根据图的弧和节点显示相应的曲线和点。
•        图可编辑:通过添加、删除弧和节点,改变弧的方向来调整已建立的图。
•        多种图相关分析算法:图/弧/节点的属性、二分图转换、二分图匹配(最大匹配、最小费用最大匹配)、最小生成树、图的强弱连通分量、图的割点/边、拓扑排序、邻近点搜索(Kd-tree)等,并提供多种参数选项。
•        丰富的路径算法:广度优先搜索、深度优先搜索、最短路径(Dijkstra和Astar)、单源最短路径、欧拉路径、汉密尔顿路径、启发式旅行商求解器等,并提供多种参数选项。

LeafVein可从https://www.food4rhino.com/en/app/leafvein  下载,支持windows版Rhino 6和Rhino 7,使用LeafVein需遵循LGPL协议(署名、可商用、可修改、但不可出售基于LeafVein的修改或衍生版本)。当前仍处于早期的Aplha版,任何意见/bug反馈可以联系:i@alwayswdc.com
重要功能与特性介绍如下:

从几何对象创建图与可视化
LeafVein支持以不同对象创建多种类型的图,图创建运算器提供了全局选项以定义图的属性,同时提供了两个自定义图元素属性设置工具。LeafVein的不同Graph对象均储存了图的逻辑和几何对象,图创建完成后可使用View Graph运算器对图的节点分布、弧方向/权重等信息进行可视化。相关运算器说明如下:
  
子类别(SubCategory)
  
运算器简称
功能说明
CreateGraph
CustGraph
使用Rhino/GH曲线和自定义设置创建图,输入端Opt若为空使用全局设置,如果建立有向图弧的方向为Rhino/GH曲线方向,默认弧权重(长度)为曲线长度,可全局设置为等权。
CplBipGraph
使用两列点(红点与蓝点)建立一个完全二分图,可全局指定弧方向从红点指向蓝点或从蓝点指向红点,可全局设置权重为等权。
CplGraph
使用一个点集建立一个完全图,生成边的数量为n!,全局设置同CustGraph。
MeshGraph
使用Rhino/GH网格对象创建图。
CreOpt
根据一个方向列表和权重/长度列表建立图中弧的属性。
GetOpt
从Rhino曲线的用户自定义属性获取图arc的建立属性,包括方向和权重/长度。

[attach]54580[/attach][attach]54581[/attach]

LeafVein中使用曲线建立有向图、使用两列点建立二分图示意

[attach]54582[/attach]

LeafVein中的自定义图、完全图和网格图可视化示意

[attach]54583[/attach]

求解地形图两点最短路径:采用CreOpt根据坡度自定义边距离权重(蓝色)与默认距离(绿色)的对比,作为演示边的加权简单使用公式:L×(tanθ+1)

从开源地图建立图
LeafVein提供了两个基于OpenStreetMap地理空间数据创建真实世界街道与路径的网络图。其中OSMGraph可从离线xml地图格式(.osm)创建图,ONLMapGraph可下载世界上任何地区的路径数据并建立图,支持地名搜索、区域ID和经纬度坐标矩形三种方式,相关运算器说明及主要特性如下。


[attach]54584[/attach]

重庆市二郎立交桥道路图解析可视化
•        在线图解析器采用Nominatim地名搜索API和Overpass地图下载API,能够突破官方50000节点的地图下载限制,并且支持文件缓存(下载地图位于用户的“Documents\leafvein_cache”文件夹下)。


[attach]54575[/attach]

ONLMapGraph运算器根据地区名字下载地图文件并建立网络图


[attach]54576[/attach]

ONLMapGraph运算器下载全重庆市地图并建立超过十万节点和边的图

•        图的解析能力及性能与其他同类工具对比:
-        OSMnx(https://github.com/gboeing/osmnx)是一个将OpenStreetMap路径地图解析为网络图的python开源库,OSMnx在解析图时会简化或合并路径(例如被隔离开的双向车道合并为一条路径),与之相比,LeafVein的OSM图解析器不会改变原始路径的逻辑关系,并且解析性能明显高于OSMnx。
-        Itiero(https://www.itinero.tech/) 是一个采用.net框架的开源OSM路径分析库,Itiero在解析同水平道路交点有时会出现不被分割不建立节点的错误。


[attach]54585[/attach]
LeafVein与OSMnx解析OSM(均使用缓存)性能对比

[attach]54586[/attach]

LeafVein、Itinero、OSMnx解析同一区域OSM数据后计算相同起点与终点的最短路径对比

•        LeafVein对节点经纬度坐标的转换方式与著名城市可视化插件ELK一致,可与ELK协同使用。
[attach]54587[/attach]

LeafVein与ELK(城市可视化工具)协同使用,重庆渝中半岛地区
图的编辑与查询

绝大部分图论工具在图建立后是无法更改的,LeafVein支持在创建图后对图的节点、弧/边以及元素属性进行编辑。使用图编辑运算器将建立一个新的图对象而不是在原图对象上进行修改。Rhino/GH几何对象与节点和弧可轻松相互查询。
  
子类别(SubCategory)
  
运算器简称
功能说明
ModifyGraph
SubGraph
删除一个图中的节点或弧/边。
SuperGraph
通过输入曲线增加一个图中的节点和弧/边。
RedirGraph
更改图中弧的方向:变为无向图、弧反向、从U到V重定向弧方向、从V到U重定向弧方向
SearchGraph
FindArc
根据输入的Rhino/GH曲线输出图中相应的弧/边。
FindNode
根据输入的Rhino/GH点输出图中相应的节点。
Adjac
找到节点的临近节点和弧/边,输出节点的度以及到临近节点的方向。
AnalyArc
输出弧/边的属性:方向、长度/权重、U节点、V节点
DisplayGraph
Arc2Crv
输出图的弧/边对应的曲线。
Node2Pt
输出图的节点对应的点。
图分析算法
LeafVein包含一系列常见的图分析算法,后续开发将增加更多功能。
  
子类别(SubCategory)
  
运算器简称
功能说明
AnalyzeGraph
GraphInfo
输出图的信息,包括图类型、节点列表、弧/边列表、弧/边的长度/权重列表和方向列表。
Bipar
判断一个图是否为二分图,如果是,将其转换为包含红色节点集和蓝色节点集的二分图。
MaxMatch
计算二分图的最大匹配,输出相应的边。
MinCMatch
使用增广路算法计算二分图的最小费用最大匹配,输出相应的边。
CutComp
找到无向图的割点或桥,并输出子图(SubGraph)对象(有向图将被当做无向图计算)。
WCC
找到图的弱连通分量,计算数量,并输出每个部分为子图。
SCC
找到图的强连通分量,计算数量,并输出每个部分为子图。
MST
计算图的最小生成树,包含Kruskal(适合稀疏图)和Prim(适合密集图)两种算法。
TO
判断有向图是否为非循环图,如果是,输出有向图的一个拓扑排序。


[attach]54588[/attach]
图分析相关运算器示意
路径算法
LeafVein包含了丰富的路径搜索算法,具备高性能的特性,路径搜索是建筑学和城乡规划学领域利用图论仿真最常用的工具,研究者可组合使用这些运算器来求解特定研究问题。


[attach]54589[/attach]

各种路径搜索算法

[attach]54578[/attach]

一个近8万节点和边的图搜索随机两点的最短路径耗时基本上<100ms

[attach]54590[/attach]

使用单源最短路径计算重庆三峡广场中心步行20分钟覆盖范围,耗时1.3s

[attach]54591[/attach][attach]54592[/attach]

TSP求解器,右为Parametrichouse使用TSP求解器进行造型(教程地址:https://parametrichouse.com/traveling-salesman-problem/

临近点搜索
建立一个KD树,在二维或三维空间内高效率搜索临近点(多种规则,基于几何位置,不依赖预先生成图)

  
子类别(SubCategory)
  
运算器简称
功能说明
NeighborSearch
KdTree
建立一个2D或3D的kdtree。
KNN
找到给定点的K个最临近点(K包含自身)。
RNN
找到给定半径内的所有临近点。
InBox
找到方形或立方体内的所有点



[attach]54593[/attach]

多种规则搜索三维空间临近点







作者: aisong2202021    时间: 2021-10-20 10:17
厉害
作者: work2011    时间: 2021-11-18 09:55
在哪能下到 ?大佬
作者: 老李在修炼    时间: 2021-11-18 10:39
work2011 发表于 2021-11-18 09:55
在哪能下到 ?大佬

https://www.food4rhino.com/en/app/leafvein 大佬的插件,马上下一波搞搞
作者: 老李在修炼    时间: 2021-11-18 10:41
大赞啊,大佬牛逼!!!!
作者: xiaoyu12138    时间: 2022-4-18 20:02
模板下,学习啦
作者: yc79959286    时间: 2022-5-15 18:05
下载了,希望很有用。
作者: 鹏行天下    时间: 2022-6-23 10:06
您好,请问这个插件的使用教程有没有相关的资料。




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2