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