等高線建模核心演算法

2021-08-21 13:52:22 字數 2780 閱讀 4837

構造斷層面 

void testbuildsurf()

else if( linetype==2)

faultlines.push_back( pline );//斷層線

else

delete pline;

flag = fset.movenext();

} // 統計高程範圍

double dmax = -1e+17, dmin = 1e+17;

for(int i=0; idmax )

dmax = heights[i];

if( heights[i]faultfaces;

for( int i=0; ivectordot3d;

vectorvectortri;

int dotnum = faultlines[i]->m_varlin.dotnum()-1;//封閉折線上的點多了乙個重複點。所以減1

// 重新定義大小

vectordot3d.resize(dotnum * 2);//二維點拉伸成三維的面

vectortri.resize(dotnum * 2);//三角網的個數=2*二維點個數

d_3dot dottemp;

tri tritemp;

for( int dotindex=0; dotindex < dotnum; dotindex++ )

else

tritemp.c = dotindex;

vectortri[dotindex + dotnum ] = tritemp;

} //設定面的點集 三角網集

psu***ce->set( dotnum*2, &vectordot3d.front(), dotnum*2, (dword*)&vectortri.front() );

//斷層面

faultfaces.push_back(psu***ce);

//更新面要素

} // 獲取高程樣本點,構建三角網tin

vectorsampledots;

for( int i=0; im_varlin.dotnum()-1; j++ )

} // 利用斷層面切割tin,並儲存

long pntnum = 0, trinum = 0;

d_3dot *ptripnt = null;

dword *ptri = null;

dword *ptritopo = null;

tncreatedelaunaytinbymempnts( null, null, &sampledots.front(), sampledots.size(), null, 0, 0, false,

pntnum, &ptripnt, trinum, &ptri, &ptritopo );

canysu***ce tins;

tins.set( pntnum, ptripnt, trinum, ptri, ptritopo );

tnfreetinpntnet( ptripnt, ptri, ptritopo );

// 釋放記憶體

for( int i=0; i切割面

void cutsurf()

{ geoclass geofaceline, geofacefault, geofaceresult;

csfeaturecls *pfacelinecls = null, *pfacefaulcls = null, *pfaceresultcls = null;

canysu***ce faceline, facefault;

cmultisu***ce resultfaces;

//開啟基本要素類

geofaceline.open( "gdbp://mapgislocal/plugintest/sfcls/isoheightsurf" );

geofaceline.get( (void**)&pfacelinecls, "csfeaturecls" );

geofacefault.open( "gdbp://mapgislocal/plugintest/sfcls/faultsurf" );

geofacefault.get( (void**)&pfacefaulcls, "csfeaturecls" );

geofaceresult.open( "gdbp://mapgislocal/plugintest/sfcls/resultsurf" );

geofaceresult.get( (void**)&pfaceresultcls, "csfeaturecls" );

if( pfacelinecls==null || pfacefaulcls==null || pfaceresultcls==null )

return;

pfaceresultcls->cls_clear();

//獲取三維面

pfacelinecls->su***ce_get( 1, &faceline );//高程面

pfacefaulcls->su***ce_get( 1, &facefault );//斷層面

int i=facefault.getpointnum();

int j=faceline.getpointnum();

//曲面與曲面相互切割重構

g3dxcutsu***cewithsu***ce(&faceline, &facefault, &resultfaces);

int item=resultfaces.getnum();

for( long i=0; i構建位址面 二維轉三維

1.三維地學建模-》資料匯入 -》平面地質圖匯入

MATLAB 等高線的繪製

語法 contour z contour x,y,z contour levels contour linespec contour name,value contour ax,m contour m,c contour 說明 contour z 建立乙個包含矩陣 z 的等值線的等高線圖,其中 z ...

實現高程點到等高線的轉換

1 啟動arccatalog,新建資料庫data.mdb,在空白處右擊,匯入data.txt,四個字段分別為code 設為主健 x y z,儲存為表point。2 啟動arcmap,tools add xy data,在 choose a table 中新增資料庫data.mdb 中點已被展繪 3 ...

四種等高線的區別

等高線按其作用不同,分為首曲線 計曲線 間曲線與助曲線四種。1 首曲線,又叫基本等高線,是按規定的等高距測繪的細實線,用以顯示地貌的基本形態。2 計曲線,又叫加粗等高線,從規定的高程起算面起,每隔五個等高距將首曲線加粗為一條粗實線,以便在地圖上判讀和計算高程。3 間曲線,又叫半距等高線,是按二分之一...