| 
 | 
 
转自 :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 
  
  
 
 
 
 
 
 |   
 
 
 
 |