NCF参数化建筑论坛

标题: 将地理信息数据调入到Grasshopper平台连载-02(完结)(转) [打印本页]

作者: RichieBall    时间: 2012-11-21 09:46
标题: 将地理信息数据调入到Grasshopper平台连载-02(完结)(转)
转自 :http://cadesign.cn/bbs/thread-62-1-1.html
接将地理信息数据调入到Grasshopper平台连载-01
可以将Python代码直接粘入到Python组件中使用,但是同时需要修改输入输出选项

                               
登录/注册后可看大图

基于Python编写的数据处理基本模块Python代码解读:
mport rhinoscriptsyntax as rs
import re
point=point#调入相对控制点
print(point)  #编写过程中通过Print查看运行结果
pcoordi=rs.PointAdd (point,(0,0,0))#通过点相加的方式改变数据格式
print(pcoordi)
file=File
print(file)
f=open(file,'r')#以只读的方式打开.txt文件
x=[]
y=[]
z=[]
xyz=[]
rexyz=[]
firstpoint=f.readline()#以读取单独行的方式获得第一个点的坐标
repoint=[]
orpoint=[]
print(firstpoint)
subdistance=rs.PointSubtract (rs.AddPoint (firstpoint),rs.AddPoint (pcoordi))
print(subdistance[0])
for line in f.readlines():#循环遍历.txt文件数据
    lst=re.split('[,]+',line)
    x.append(float(lst[0]))#X值输出
    y.append(float(lst[1]))#Y值输出
    z.append(float(lst[2]))#Z值输出
xyz.append((float(lst[0]),float(lst[1]),float(lst[2])))
#xyz坐标值输出
    orpoint.append(rs.AddPoint(float(lst[0]),float(lst[1]),float(lst[2])))#xyz坐标点输出
    rexyz.append(((float(lst[0])-subdistance[0]),(float(lst[1])-subdistance[1]),\#相对xyz坐标值输出
    (float(lst[2])-subdistance[2])))
    repoint.append(rs.AddPoint((float(lst[0])-subdistance[0]),(float(lst[1])-subdistance[1]),\
    (float(lst[2])-subdistance[2])))#相对xyz坐标点输出
print(orpoint)

                               
登录/注册后可看大图


基于Python编写的分类模块:

                               
登录/注册后可看大图


import math
import rhinoscriptsyntax as rs
data=data
cal=classification
print(cal)
for i in cal:
    cal[cal.index(i)]=float(i)#将文本值改为浮点数值模式
print(cal)
for k in range(len(cal)-1):#遍历输入列表,将同一分类区间值赋予相同值
    a=cal[k]
    b=cal[k+1]
    for q in range(len(data)):
        if a<=data[q]<b:
            data[q]=a
for w in range(len(data)):
    if data[w]>=cal[-1]:
        data[w]=0
clalist=data#输出分类列表数据

基于Python编写的图例模块:

                               
登录/注册后可看大图


import math
import rhinoscriptsyntax as rs
color=color#输入颜色值
value=value#输入分类值
selectvalue=value
boolean=switch#设置开关,当数据量较大时可以先输入False值,禁止运算
print(boolean)

def classification(color,value,selectvalue):
    color=color
    value=value
selectvalue=selectvalue
    symcolor=[]
    symvalue=[]
    sym=[]
    for m in value:
        for n in range(len(selectvalue)):
            if selectvalue[n]==m:
                selectvalue[n]=None#将相同的值赋予None,占据列表
        sym.append(m)
    for i in range(len(sym)):
        if sym!=None:#排除None值
            symvalue.append(sym)
            symcolor.append(color)
    return symvalue,symcolor
if boolean==True:#True,False判断,为True时则运行函数classification()
    symvalue,symcolor=classification(color,value,selectvalue)

坡度值的调入:
    在GIS平台处理的坡度等信息数据调入到GH中的方式与高程调入方式是一样的,之前编写的程序同样可以在这里使用。

                               
登录/注册后可看大图



--Richie
可以查看01   http://cadesign.cn/bbs/thread-56-1-1.html
将地理信息数据调入到Grasshopper平台连载-01








作者: toryyu    时间: 2012-11-21 09:47
提示: 作者被禁止或删除 内容自动屏蔽
作者: 建筑师哈哈    时间: 2012-11-21 12:54
很给力,期待楼主的更新
作者: moplee    时间: 2012-11-21 16:40
等学会python在看吧,有大侠知道把python放到gh组件下面显示不出来什么原因吗?
作者: 活建鬼    时间: 2012-11-21 20:30
moplee 发表于 2012-11-21 16:40
等学会python在看吧,有大侠知道把python放到gh组件下面显示不出来什么原因吗?

要使用Rhino5,GH要新版的~~
作者: leonwhitekof    时间: 2012-11-22 15:56
程序能稍微讲解一下吗
作者: zarch    时间: 2012-11-25 12:19
受教了,谢谢楼主
作者: liyuqun    时间: 2014-4-21 21:13
很给力,期待楼主的更新




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