cityengine python使用

一、獲取當(dāng)前選擇

#獲取到的是一個(gè)數(shù)組
ce.selection() 

二京郑、修改選中的Name

ce.setName(ce.selection(), 'ShapeNameX')

三宙搬、刪除objects

ce.delete(ce.getObjectsFrom(ce.scene))   #刪除全部
ce.delete(ce.selection())  #刪除選中

選擇某name的obj

# 選擇場(chǎng)景中全部
ce.getObjectsFrom(ce.scene)
# 選擇帶某name
ce.getObjectsFrom(ce.scene,ce.withName("ShapefileSegment"))

注意:導(dǎo)入shp后生成的網(wǎng)絡(luò)名在客戶端顯示是駝峰法空格分開。但這里選擇時(shí)需去掉空格目尖。


四馒吴、導(dǎo)入shp

shpPath = "data/linan/linan.shp"    #我的shp所在地址,放在項(xiàng)目data文件夾下瑟曲,linan文件夾里包含shp饮戳、dbf、prj等文件
settings = SHPImportSettings()
ce.importFile(ce.toFSPath(shpPath), settings)

五洞拨、設(shè)置cga文件及初始規(guī)則并生成模型

cgaPath = "rules/Streets/Street_Modern_Standard.cga" #我的cga文件地址
ce.setRuleFile(ce.selection(), cgaPath)
ce.setStartRule(ce.selection()[0], 'Street')  # 自己導(dǎo)入的shp線會(huì)自動(dòng)生成街道并綁定街道初始規(guī)則扯罐,無需設(shè)置
# ce.selection()返回的是list,其中有節(jié)點(diǎn)烦衣、主街道歹河、人行道,沿用不同規(guī)則

ce.generateModels(ce.selection()) #生成模型

六花吟、獲取規(guī)則名

ce.getStartRule(ce.selection()[0])

七秸歧、獲取屬性

#獲取屬性列表
ce.getAttributeList(ce.selection()[0])
#返回值  ['/ce/name', '/ce/rule/randomSeed', '/ce/rule/ruleFile', '/ce/rule/startRule', 'shapeType', 'sidewalkSide']
#獲取屬性值
ce.getAttribute(ce.selection()[0],'sidewalkSide')  #第二個(gè)參數(shù)需要是在getAttributeList返回的列表中,如使用sidewalkSide則返回Left 或Right

八衅澈、設(shè)置屬性

ce.setAttribute(ce.selection()[0],'屬性名','屬性值') 

九键菱、創(chuàng)建segments

上面第四點(diǎn)通過導(dǎo)入shp線段(其實(shí)是線段,轉(zhuǎn)為geojson是LineString)生成了街道今布。但在ce中使用python也可以直接通過坐標(biāo)生成街道经备。主要分兩步

  • 1、創(chuàng)建layer
    graphlayer = ce.addGraphLayer('streets')
  • 2部默、創(chuàng)建段(segments)
    vertices = [0,0,0,1,0,0]
    graph = ce.createGraphSegments(graphlayer, vertices)
    其中vertices 是線段坐標(biāo)弄喘,三個(gè)一組代表一個(gè)點(diǎn),可多個(gè)甩牺。一組中第二個(gè)是高度

十、設(shè)置街道寬度

在使用cityengine gui界面時(shí)繪制的街道累奈,可以獲取/修改屬性來獲取它的街道寬度/設(shè)置街道寬度贬派。
如下:

segment = ce.getObjectsFrom(ce.selection, ce.isGraphSegment)[0]
ce.getAttribute(segment,'/ce/street/streetWidth')
ce.setAttribute(segment,'/ce/street/streetWidth',newWidth)

這是因?yàn)樵讷@取屬性列表getAttributeList時(shí)可以得到'/ce/street/streetWidth'
但是對(duì)于我導(dǎo)入的shp急但,不知道為什么沒有這個(gè)屬性,也無法設(shè)置搞乏。但我發(fā)現(xiàn)可以使用下面的方法設(shè)置波桩。以下為方法原文:


上面第四和第九分別通過導(dǎo)入shp和手動(dòng)創(chuàng)建segments來創(chuàng)建街道。所創(chuàng)建的街道有一個(gè)默認(rèn)的寬请敦「涠悖可以使用下面的方法對(duì)寬度等進(jìn)行修改。如何要設(shè)置固定x寬度侍筛,可setMinStreetWidth setMaxStreetWidth均設(shè)置為x來實(shí)現(xiàn)萤皂。

settings = FitStreetWidthSettings()
settings.setAdjustStreetOffsets(False)  
settings.setMinStreetWidth(10.0)
settings.setMaxStreetWidth(10.0)
settings.setAdditionalMargin(1)
settings.setSidewalkScale("DONT")
ce.fitStreetWidths(segments, settings)


以下線段寬指主車道總寬(包含上下行,不包含人行道)匣椰。
1.setAdjustStreetOffsets 可設(shè)置為True False裆熙。為街道偏移量是否應(yīng)該改變。如果是False禽笑,segment兩側(cè)始終一樣寬入录,即如果設(shè)置寬度則往segment兩側(cè)擴(kuò)展。如果是True佳镜,則往一側(cè)擴(kuò)展僚稿,segment兩側(cè)不一樣多。
2.setMinStreetWidth & setMaxStreetWidth蟀伸。沒怎么搞懂這兩個(gè)蚀同。但我發(fā)現(xiàn)了一些規(guī)律。

  • 默認(rèn)線段寬度(主街道上下行之和)是8望蜡,左右人行道默認(rèn)是2唤崭。
  • 如果setAdjustStreetOffsets 為False,即不偏移脖律。那么谢肾,setMinStreetWidth值為道路一個(gè)方向的總寬(道路總寬度的一半)。如設(shè)置成7小泉,則線段寬度(主街道上下行之和)再加上上下行人行道寬(即道路總寬)為14芦疏。
    3.setSidewalkScale 有DONT 和SCALE兩個(gè)值,控制人行道是否能縮放微姊。
  • 人行道默認(rèn)寬是2酸茴。
  • 如果設(shè)置DONE,則始終是2兢交。
  • 如果設(shè)置為SCALE薪捍,則根據(jù)設(shè)置的setMinStreetWidth進(jìn)行變動(dòng)。一個(gè)方向人行道寬與一個(gè)方向道路寬度比為1:2。即為道路總寬度的1/6酪穿。也就是setMinStreetWidth的1/3凳干,是主街道總寬(上下行)的1/4。

4.setAdditionalMargin 設(shè)置附加邊距字段被济。街道與其他街道或靜態(tài)幾何圖形之間的額外填充救赐。
這個(gè)可傳入數(shù)值,也比較奇怪只磷。

  • 如果上面人行道設(shè)置為SCALE经磅。那么一個(gè)方向人行道寬與一個(gè)方向道路寬度比為1:2。如果setAdditionalMargin 設(shè)置為n钮追,那么人行道寬度-n/3预厌,主車道寬-2n/3。也就是說按人行道主車道1比2的比例縮小該值畏陕。
  • 如果人行道不設(shè)置縮放配乓。setAdditionalMargin 設(shè)置為n時(shí),那么主車道寬-n(主車道均指單方向?qū)挘?/li>
  • 上面說的setMinStreetWidth 無法設(shè)置小于6惠毁,設(shè)置小于6時(shí)犹芹,顯示的線段寬還是8(理論上線段寬應(yīng)該變?yōu)?setMinStreetWidth - 2人行道寬)。但我們可以通過設(shè)置setAdditionalMargin 來減少線段寬度
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鞠绰,一起剝皮案震驚了整個(gè)濱河市腰埂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜈膨,老刑警劉巖屿笼,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異翁巍,居然都是意外死亡驴一,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門灶壶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肝断,“玉大人,你說我怎么就攤上這事驰凛⌒匦福” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵恰响,是天一觀的道長趣钱。 經(jīng)常有香客問我,道長胚宦,這世上最難降的妖魔是什么首有? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任燕垃,我火速辦了婚禮,結(jié)果婚禮上绞灼,老公的妹妹穿的比我還像新娘利术。我一直安慰自己,他們只是感情好低矮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著被冒,像睡著了一般军掂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昨悼,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天蝗锥,我揣著相機(jī)與錄音,去河邊找鬼率触。 笑死终议,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的葱蝗。 我是一名探鬼主播穴张,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼两曼!你這毒婦竟也來了皂甘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤悼凑,失蹤者是張志新(化名)和其女友劉穎偿枕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體户辫,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渐夸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渔欢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墓塌。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖膘茎,靈堂內(nèi)的尸體忽然破棺而出桃纯,到底是詐尸還是另有隱情,我是刑警寧澤披坏,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布态坦,位于F島的核電站,受9級(jí)特大地震影響棒拂,放射性物質(zhì)發(fā)生泄漏伞梯。R本人自食惡果不足惜玫氢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谜诫。 院中可真熱鬧漾峡,春花似錦、人聲如沸喻旷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽且预。三九已至槽袄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锋谐,已是汗流浹背遍尺。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涮拗,地道東北人乾戏。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像三热,于是被迫代替她去往敵國和親鼓择。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 作者:白程序員的自習(xí)室鏈接:https://www.studytime.xin/article/mysql-int...
    碼農(nóng)小光閱讀 1,043評(píng)論 0 21
  • 數(shù)據(jù)庫環(huán)境 dev: 開發(fā)環(huán)境開發(fā)可讀寫催跪,可修改表結(jié)構(gòu)。開發(fā)人員可以修改表結(jié)構(gòu)夷野,可以隨意修改其中的數(shù)據(jù)但是需要保證...
    ___n閱讀 197評(píng)論 0 0
  • 一懊蒸、Python介紹 Python 是一個(gè)高層次的結(jié)合了解釋性、編譯性悯搔、互動(dòng)性和面向?qū)ο蟮哪_本語言骑丸。 Python...
    5888eb1818d9閱讀 717評(píng)論 0 0
  • 6.1.3 標(biāo)識(shí)符 什么是標(biāo)識(shí)符? 開發(fā)人員在程序中自定義的一些符號(hào)和名稱 標(biāo)識(shí)符是自己定義的,如變量名 妒貌、函數(shù)名...
    __65a0閱讀 769評(píng)論 0 0
  • python總結(jié) 6.1.3 標(biāo)識(shí)符 什么是標(biāo)識(shí)符通危? 開發(fā)人員在程序中自定義的一些符號(hào)和名稱 標(biāo)識(shí)符是自己定義的,...
    G_eebd閱讀 790評(píng)論 0 0