Smart3D(ContextCapture)操作手冊(cè)中文翻譯7.SDK二次開發(fā)指南(ccmasterkernel’s documentation)

6.SDK二次開發(fā)指南ccmasterkernel’s documentation

本用戶手冊(cè)與ContextCapture MasterKernel SDK有關(guān)

作為ContextCapture MasterKernel SDK的一部分坐求,ccMasterKernel是一個(gè)以編程方式訪問ContextCapture Master所有功能的python模塊。此模塊代替用戶界面,用于完整的項(xiàng)目創(chuàng)建擦耀、編輯和監(jiān)控贼邓。

提醒:本文件中的信息如有更改亡问,恕不另行通知机断,并按“原樣”提供畸颅。Bentley對(duì)本材料不作任何形式的保證盟猖,包括但不限于對(duì)適銷性和特定用途適用性的暗示保證讨衣。Bentley不對(duì)本文所包含的錯(cuò)誤或與使用本材料有關(guān)的任何直接、間接式镐、特殊反镇、附帶或后果性損害負(fù)責(zé)。

版權(quán):Bentley Systems

6.1概述(Overview)

作為ContextCapture MasterKernel SDK的一部分娘汞,ccMasterKernel是一個(gè)以編程方式訪問ContextCapture Master所有功能的python模塊歹茶。此模塊代替用戶界面,用于完整的項(xiàng)目創(chuàng)建、編輯和監(jiān)控惊豺。

ccmasterkernel模塊允許在一個(gè)簡(jiǎn)單的方式燎孟,通過Python腳本開發(fā)定制的基于ContextCapture的應(yīng)用程序,自定義和/或自動(dòng)3D重建過程尸昧。

API模塊(應(yīng)用程序編程接口)允許控制ContextCapture主項(xiàng)目(CCM文件)中使用的所有項(xiàng):

項(xiàng)目(Project):創(chuàng)建缤弦、保存、編輯彻磁、選項(xiàng)設(shè)置碍沐、樹結(jié)構(gòu)管理。

塊(Block):(Excel衷蜓,XML導(dǎo)入以及導(dǎo)出(KML)累提,XML,非約束的照片)磁浇,分割斋陪,提取,照片/?照片組(PhotoGroup)創(chuàng)建和編輯包括相機(jī)的三維屬性和位置/旋轉(zhuǎn)置吓,控制點(diǎn)(三維位置无虚、照片測(cè)量),連接點(diǎn)的創(chuàng)建和編輯衍锚。

AT(空中三角測(cè)量/?Aerotriangulation):組件儿咱,定位模式,設(shè)置,任務(wù)提交浴骂,監(jiān)測(cè)/控制式撼,導(dǎo)出空三報(bào)告。

重建(Reconstruction):空間框架(SRS告匠,興趣區(qū)域戈抄,瓦片分塊),重建約束后专,參考三維模型划鸽,(導(dǎo)入導(dǎo)出retouches,勻色戚哎,處理設(shè)置裸诽,導(dǎo)出瓦片分割為kml。

生產(chǎn)(Production):控制所有參數(shù)(用途建瘫,格式崭捍,選項(xiàng),范圍和定義)啰脚,任務(wù)提交殷蛇,監(jiān)測(cè)/控制实夹。

工作隊(duì)列監(jiān)測(cè)。

應(yīng)用設(shè)置(Application?Settings):許可檢查粒梦,軟件的版本控制亮航,在線更新。

二次開發(fā)API包括各種工具和數(shù)據(jù)交換(屬性樹匀们,幾何)測(cè)量運(yùn)算缴淋。

6.2?安裝(Installation)

從更新9(update?9)開始,?python將被打包為一個(gè)wheel包泄朴。您可以在sdk/dist安裝目錄下找到*.whl文件重抖。需要python 3.6 x64版本支持。

烈建議使用virtualenv和pip安裝此軟件包祖灰。

但是钟沛,仍然有一個(gè)ContextCapture SDK命令提示快捷方式,您可以使用它來創(chuàng)建virtualenv并在其中安裝ccmasterkernel局扶。

6.3?升級(jí)指南(Migration?guide

從更新9(update9)開始恨统,包名不再是ccmasterkernelpy,而是*ccmasterkernel三妈。您需要更新腳本畜埋,才能是你老的腳步可以在新版本下運(yùn)行。如果不想全部更改畴蒲,可以做如下替換:

把老命令

importCCMasterKernelPy

替換為:

importccmasterkernelasCCMasterKernelPy

作為一個(gè)小技巧

6.4教程

此簡(jiǎn)單腳本創(chuàng)建新的CCM項(xiàng)目悠鞍,導(dǎo)入XML塊定義,并保存項(xiàng)目:

importccmasterkernel


project=ccmasterkernel.Project()

project.setName('my project')

project.setProjectFilePath('D:/DATA/my project/my project.ccm')


project.importBlocks("'D:/DATA/block.xml")


project.writeToFile()

幾個(gè)完整的示例將與包一起安裝在python安裝示例/目錄中饿凛。

automaster.py

此腳本讀取照片目錄創(chuàng)建一個(gè)完整的重建(Reconstruction)狞玛,它遵循整個(gè)工作流程(航空三角測(cè)量、重建和生產(chǎn))涧窒,并介紹了任務(wù)監(jiān)控。

module_info.py

此腳本演示如何通過Python模塊General面板的信息:許可證和功能锭亏、支持的生產(chǎn)(production)格式和選項(xiàng)等纠吴。

dump_project.py

此腳本從現(xiàn)有CCM項(xiàng)目中提取各種數(shù)據(jù)信息。

import_and_extract.py

此腳本演示了Aerial塊導(dǎo)入慧瘤、塊提取和塊導(dǎo)出的示例戴已。

import_and_split.py

此腳本演示了Aerial塊導(dǎo)入、塊分割和塊導(dǎo)出的示例锅减。

import_txt.py

此腳本根據(jù)自定義文本塊格式創(chuàng)建塊

reconstruction_settings.py

此腳本在現(xiàn)有CCM項(xiàng)目中使用自定義設(shè)置創(chuàng)建新的重建糖儡。

6.5 API參考手冊(cè)

6.5.1模塊信息

獲取模塊的基本信息,無許可也可以訪問怔匣。

version()?→?str

Returns?軟件版本.


edition()?→?str

Returns?軟件規(guī)格?(eg. Expert, Ultimate).


isLicenseValid()?→?bool

Returns True?許可有效.

如果許可無效握联,可以通過lastLicenseErrorMsg()獲取許可詳細(xì)信息


lastLicenseErrorMsg()?→?str

Returns?許可錯(cuò)誤的信息.

6.5.2?項(xiàng)目(Project)

Project選項(xiàng)管理與ContextCapture處理的場(chǎng)景相關(guān)的所有數(shù)據(jù)。

創(chuàng)建空項(xiàng)目的示例:

project=ccmasterkernel.Project()

project.setName('my project')

project.setProjectFilePath('D:/DATA/my project/my project.ccm')


project.writeToFile()


?MasterItem

ProjectSRS

ProjectSRSManager

?Project

6.5.3塊(block

一個(gè)Block區(qū)塊項(xiàng)目包含了一系列影像和屬性,包括傳感器尺寸金闽、焦距纯露、主點(diǎn)、透鏡畸變以及位置和旋轉(zhuǎn)?等姿態(tài)信息代芜,基于這些信息埠褪,可以建立一個(gè)或多個(gè)重建項(xiàng)目。

Block的定義如下:

照片(Photos):導(dǎo)入或添加的照片及其相關(guān)的照片組屬性和照片姿態(tài)(通過航空三角測(cè)量或?qū)胗?jì)算)挤庇。通過塊的照片組(photogroup)訪問照片

點(diǎn)云(PointClouds):導(dǎo)入的點(diǎn)云及其關(guān)聯(lián)屬性

控制點(diǎn)(Control?points):手工輸入或?qū)氤佟?刂泣c(diǎn)是可選的嫡秕。參見類:'ccmasterkernel.controlpoint'

連接點(diǎn)(Tie?points):由ContextCapture自動(dòng)提取或?qū)肟视铩_€可以輸入用戶連接點(diǎn)以幫助進(jìn)行航空三角測(cè)量。

塊類型(BlockType):例如“Aerial”淘菩,可選選項(xiàng)

Reconstruction列表(List?of reconstructions):基于Block

創(chuàng)建Block的示例:

block?=?ccmasterkernel.Block(project)

project.addBlock(block)


forinputFile?in?inputFiles:

????????block.getPhotogroups().addPhotoInAutoMode(inputFile)

為了管理塊的空三遵班,可以創(chuàng)建專門用于調(diào)整的特殊塊。對(duì)于這些塊潮改,附加一個(gè)AT對(duì)象來管理航空三角測(cè)量設(shè)置狭郑、處理和報(bào)告。

示例:

blockAT?=?ccmasterkernel.Block(project)

project.addBlock(blockAT)

blockAT.setBlockTemplate(ccmasterkernel.BlockTemplate.Template_adjusted, inputBlock)

坐標(biāo)系:對(duì)于地理參考項(xiàng)目汇在,在塊級(jí)別翰萨,三維位置使用ECEF參考(EPSG:4978)。

6.5.4?照片(Photos)

管理照片集和關(guān)聯(lián)的屬性糕殉。通過照片組訪問塊的照片亩鬼。

照片被分為一組或多組照片。均勻的一組照片阿蝶,所有照片都是用同一個(gè)具有相同內(nèi)部方向(圖像尺寸雳锋、傳感器尺寸、焦距等)的物理相機(jī)拍攝的羡洁。

如果照片是根據(jù)拍攝時(shí)使用的相機(jī)按子目錄組織的玷过,則ContextCapture可以自動(dòng)確定相關(guān)的照片組。

6.5.5?空三(Aerotriangulation)

航空三角測(cè)量從輸入塊(Block)開始筑煮,生成具有計(jì)算或調(diào)整屬性的新塊辛蚊。

航空三角測(cè)量可考慮當(dāng)前攝像機(jī)位置(例如,從GPS初始化)或地理參考控制點(diǎn)真仲。

示例:

blockAT?=?ccmasterkernel.Block(project)

project.addBlock(blockAT)

blockAT.setBlockTemplate(ccmasterkernel.BlockTemplate.Template_adjusted, block)


# submit aerotriangulation processing

blockAT.getAT().submitProcessing()

6.5.6?連接點(diǎn)(TiePoints)

一個(gè)連接點(diǎn)對(duì)應(yīng)于兩張或多張不同照片中的像素袋马,其中這些像素表示場(chǎng)景中同一物理點(diǎn)的投影。ContextCapture可以在航空三角測(cè)量過程中自動(dòng)生成大量的連接點(diǎn)秸应。但是虑凛,用戶連接點(diǎn)也可以預(yù)先輸入碑宴,以幫助進(jìn)行航空三角測(cè)量。

6.5.7?點(diǎn)云(PointClouds)

管理點(diǎn)云集和關(guān)聯(lián)屬性

6.5.8?重建Reconstruction

一個(gè)重建項(xiàng)目(Reconstruction)管理著一個(gè)三維重建框架(包含空間坐標(biāo)系卧檐,建模區(qū)域墓懂,瓦片設(shè)置,處理設(shè)定等)霉囚,?基于一個(gè)重建項(xiàng)目可以建立一或多個(gè)生產(chǎn)任務(wù)捕仔。

Reconstruction的定義包含以下屬性:

空間參考(Spatial?framework):定義空間參考系統(tǒng)(SRS)、感興趣區(qū)域(ROI)和瓦片切割方式盈罐。

重建約束(Reconstruction?constraints):允許使用現(xiàn)有的三維數(shù)據(jù)來控制重建并避免重建錯(cuò)誤

參考三維模型(Reference?3D model):是重建沙盒榜跌,它以本機(jī)格式存儲(chǔ)一個(gè)三維模型,隨著生產(chǎn)進(jìn)度逐步完成盅粪。該參考三維模型是應(yīng)用了修飾和重建約束的模型钓葫,并從中派生出需要完成的生成。通過InternalTile對(duì)象訪問參考三維模型

重建設(shè)置(Reconstruction?settings):處理選項(xiàng)設(shè)置票顾,設(shè)置幾何精度級(jí)別(高或最高)和其他重建設(shè)置础浮。

Production列表(List?of productions)

示例:

reconstruction?=?ccmasterkernel.Reconstruction(block)

block.addReconstruction(reconstruction)


6.5.9生產(chǎn)(Production)

生產(chǎn)項(xiàng)管理三維模型的生成,包括錯(cuò)誤反饋奠骄、進(jìn)度監(jiān)控和有關(guān)底層重建更新的通知(例如豆同,修飾)。

6.5.10?幾何對(duì)象(Geometry)

MasterKernel中使用的基本幾何類型的定義

6.5.11?大地測(cè)量(Geodesy)

通過Geodesy來實(shí)現(xiàn)在不同坐標(biāo)系統(tǒng)下的轉(zhuǎn)換

6.6?編碼指引API programming guid

6.7?空間參考系統(tǒng)(Spatial?Reference System

地理參考項(xiàng)目需要通過選擇空間參考系統(tǒng)(SRS)來定義制圖系統(tǒng)含鳞∮靶猓可以為管道中的各個(gè)步驟定義不同的SRS。例如蝉绷,重構(gòu)(空間框架)級(jí)別和生產(chǎn)級(jí)別都接受SRS的定義鸭廷。

可以使用任何已知的SRS定義,包括epsg定義熔吗、proj.4聲明或包含已知文本(wkt)的.prj文件名辆床。

尋找空間參考系,請(qǐng)?jiān)L問:www.spatialreference.org

EPSG編碼

支持大多數(shù)EPSG定義桅狠,包括EPSG投影制圖系統(tǒng)和EPSG地理系統(tǒng)佛吓。使用語法“epsg:code”輸入epsg代碼(例如“epsg:32651”)

示例:

ProjectionCode

ECEF (Earth-Centered, Earth-Fixed)EPSG:4978

WGS84 (World Geodetic System 1984)EPSG:4326

WGS84 / UTM Zone 31NEPSG:32631

PROJ4

Proj4聲明允許定義自定義投影系統(tǒng)(例如“+proj=utm+zone=11+datum=wgs84”)。另見項(xiàng)目4一般參數(shù)垂攘。

WKT規(guī)范支持(Well?known text

OpenGIS坐標(biāo)系的眾所周知的文本格式(WKT)可以在一個(gè)附加的.prj文件中提供。在這種情況下淤刃,輸入投影文件路徑作為SRS定義(例如“c:/projects/myprojection.prj”)晒他。

示例:

GEOGCS["WGS 84",

DATUM["WGS_1984",

SPHEROID["WGS 84",6378137,298.257223563,

AUTHORITY["EPSG",7030]],

TOWGS84[0,0,0,0,0,0,0],

AUTHORITY["EPSG",6326]],

PRIMEM["Greenwich",0,AUTHORITY["EPSG",8901]],

UNIT["DMSH",0.0174532925199433,AUTHORITY["EPSG",9108]],

AXIS["Lat",NORTH],

AXIS["Long",EAST],

AUTHORITY["EPSG",4326]]

其他定義(Other?definitions):

ContextCapture在工作流的某些步驟中支持其他類型的SRS定義

ENU(East-North-Up):可以使用語法“ENU:lat,lon”(例如“ENU:41.57231,2.26157”)輸入本地ENU定義逸贾。

Bing Maps瓦片系統(tǒng)(Bing?Maps Tile System):Bing地圖坐標(biāo)系統(tǒng)可用于重建空間框架(例如“Bing地圖:15”)陨仅。另請(qǐng)參閱msdn.microsoft.com津滞。

6.8?生產(chǎn)格式和選項(xiàng)(Production?formats and options

建議的輸出格式和選項(xiàng)取決于重建特性和生產(chǎn)目的。

輸出格式通過ProductionDriver對(duì)象進(jìn)行管理灼伤,并在ProductionDriverManager中注冊(cè)触徐。

獲取支持的Production格式驅(qū)動(dòng):

fori?inrange?(0, ccmasterkernel.ProductionDriverManager.getNumDrivers()):

print( ccmasterkernel.ProductionDriverManager.getDriver(i)getShortName() )

ProductionDriver對(duì)象是在具有短名稱的生產(chǎn)對(duì)象(如obj、osgb)上指定的狐赡。

每個(gè)ProductionDriver都有自己的實(shí)現(xiàn)并接受自己的選項(xiàng)撞鹉。ProductionDriver對(duì)象可以返回受支持選項(xiàng)的元描述。

獲取obj驅(qū)動(dòng)程序的選項(xiàng)元描述:

objDriver?=?ccmasterkernel.ProductionDriverManager.getDriverByName('OBJ')

ptOptionsDesc?=?ccmasterkernel.PropertyTree()

objDriver.getOptionsMetaDescription(ptOptionsDesc)

ptOptionsDesc.dump()

每個(gè)選項(xiàng)由ID字符串颖侄、類型(bool鸟雏、double、int览祖、string)孝鹊、可顯示名稱name和默認(rèn)值標(biāo)識(shí)。

選項(xiàng)元描述示例:

Id:?"TextureEnabled"

Type:?bool

Name:?"Include texture maps"

Default:?True

還可以在帶有名稱/值對(duì)的元描述的子項(xiàng)屬性中提供可選的預(yù)定義值展蒂。

6.9?任務(wù)隊(duì)列監(jiān)測(cè)(Job?queue monitoring

以下示例顯示如何提交航空三角測(cè)量作業(yè)又活,以及如何監(jiān)視作業(yè)進(jìn)度:

The following example shows how to submit an aerotriangulation job, and how to monitor the job progress:

# job submission

atSubmitError?=?blockAT.getAT().submitProcessing()


ifnot?atSubmitError.isNone():

print('Error: Failed to submit aerotriangulation.')

print(atSubmitError.message)

??????sys.exit(0)


print('The aerotriangulation job has been submitted and is waiting to be processed...')


# job monitoring

iPreviousProgress?=0

iProgress?=0

previousJobStatus?=?ccmasterkernel.JobStatus.Job_unknown

jobStatus?=?ccmasterkernel.JobStatus.Job_unknown


while1:

jobStatus?=?blockAT.getAT().getJobStatus()


ifjobStatus?!=?previousJobStatus:

print(ccmasterkernel.jobStatusAsString(jobStatus))


ifjobStatus?==?ccmasterkernel.JobStatus.Job_failed?orjobStatus?==?ccmasterkernel.JobStatus.Job_cancelled?orjobStatus?==?ccmasterkernel.JobStatus.Job_completed:

break


ifiProgress?!=?iPreviousProgress:

print('%s%%-?%s'%?(iProgress,blockAT.getAT().getJobMessage()))


iPreviousProgress?=?iProgress

iProgress?=?blockAT.getAT().getJobProgress()

??????time.sleep(1)

??????blockAT.getAT().updateJobStatus()

previousJobStatus?=?jobStatus


# job result

ifjobStatus?!=?ccmasterkernel.JobStatus.Job_completed:

print('"Error: Incomplete aerotriangulation.')


if?blockAT.getAT().getJobMessage()?!='':

print( blockAT.getAT().getJobMessage() )


print('Aerotriangulation completed.')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锰悼,隨后出現(xiàn)的幾起案子柳骄,更是在濱河造成了極大的恐慌,老刑警劉巖松捉,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夹界,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡隘世,警方通過查閱死者的電腦和手機(jī)可柿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丙者,“玉大人复斥,你說我怎么就攤上這事⌒得剑” “怎么了目锭?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)纷捞。 經(jīng)常有香客問我痢虹,道長(zhǎng),這世上最難降的妖魔是什么主儡? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任奖唯,我火速辦了婚禮,結(jié)果婚禮上糜值,老公的妹妹穿的比我還像新娘丰捷。我一直安慰自己坯墨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布病往。 她就那樣靜靜地躺著捣染,像睡著了一般。 火紅的嫁衣襯著肌膚如雪停巷。 梳的紋絲不亂的頭發(fā)上耍攘,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音叠穆,去河邊找鬼少漆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛硼被,可吹牛的內(nèi)容都是我干的示损。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚷硫,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼检访!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仔掸,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤脆贵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后起暮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卖氨,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年负懦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了筒捺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纸厉,死狀恐怖系吭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颗品,我是刑警寧澤肯尺,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站躯枢,受9級(jí)特大地震影響则吟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锄蹂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一逾滥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦寨昙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至槽棍,卻和暖如春捉蚤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炼七。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工缆巧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豌拙。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓陕悬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親按傅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捉超,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355