REALIZAREA MODELULUI VIRTUAL REALISTIC AL UNEI LOCALIT ĂȚI ÎN STANDARD CITYGML Activitatea 5 Elaborarea și realizarea solutiei noi pentru tehnologia… [600254]
REALIZAREA MODELULUI VIRTUAL REALISTIC
AL UNEI LOCALIT ĂȚI ÎN STANDARD CITYGML
Activitatea 5 Elaborarea și realizarea solutiei noi
pentru tehnologia „extragerea detaliilor planimetrice”
LIVRABIL 5. 2
Descrierea algoritmilor și softurilor utilizate pentru automatizarea
extragerii detaliilor planimetrice
Aprilie 2014
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
2
CUPRINS
1 APLICAȚII SOFT PENTRU EXTRAGEREA DETALIILOR PLANIMETRICE ……… 3
1.1 Structura de programe ………………………….. ………………………….. ………………………….. …….. 3
1.2 Programul INT -PLAN ………………………….. ………………………….. ………………………….. ……. 3
1.3 Programul GIS -AMP ………………………….. ………………………….. ………………………….. ……. 11
1.4 Programul FME ………………………….. ………………………….. ………………………….. …………… 19
2 PROGRAMUL CG-MODELLER ………………………….. ………………………….. ………………….. 20
2.1 Caracteristici și utilitate ………………………….. ………………………….. ………………………….. … 20
2.2 Mod de funcționare ………………………….. ………………………….. ………………………….. ………. 20
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
3 1 APLICAȚII SOFT PENTR U EXTRAGEREA DETALII LOR PLANIMETRICE
1.1 Structura de programe
Pentru extragerea detaliilor planimetrice se utilizează programele de stereorestituție stere oscopică
ARCGDS și DVP care sunt descrise în documentația tehnică Livrabil 5.1
Pentru automatizarea diferitelor procese au fost dezvol tate diferite funcții și aplica ții specifice
– Funcția “ on a plane ” care a fost integrat ă în programul ArcGDS
– Programul INT-PLAN care se atașează mediului CAD sau GIS atât la ArcGDS cât și la
DVP
– Programul GIS-AMP care integrează amprenta clădirilor cu acoperișul generând pereții,
streasina și acoperișul propriu -zis
– Funcții diverse de tip workbench în cadrul aplicației FME
Pentru crearea unei structuri de date compatibile modelării 3D, folosim programul CG-Modeller
în care au fost dezvoltate proceduri semi -automate de generare a standardului intermediar de tip
vectorial City -GRID
1.2 Programul INT -PLAN
Programul INT-PLAN permite i ntersectia unei linii cu un plan și proiectia pe verticală a unui punct
pe plan (snap on a plane )
Programul a fost dezvoltat în două variante una în mediul GIS și alta în mediul CAD
Date de intrare : 3 puncte și o dreapta
Rezultat: coordonate punct de in tersecție
Dim coordonate As String
Dim snap As Boolean
Private Sub CommandButton1_Click()
Dim Point As Variant
CommandButton6.Enabled = False
On Error Resume Next
'hide the UserForm
Me.Hide
snap = False
If ListBox1.ListCount < 6 Then
'ask user to select a point Fig. 1. Interfața de intersecție
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
4 Point = ThisDrawing.Utility.GetPoint(, "Select a Point")
If Err Then Exit Sub
'assign values to appropriate textbox
ListBox1.AddItem (Point(0))
ListBox1.AddItem (Point(1))
ListBox1.AddItem (Point(2))
Point = ThisDrawing.Utility.GetPoint (, "Select a Point")
If Err Then Exit Sub
'assign values to appropriate textbox
ListBox1.AddItem (Point(0))
ListBox1.AddItem (Point(1))
ListBox1.AddItem (Point(2))
End If
'TextBox1.Text = Point(0): txt1Y = Point(1): txt1Z = Point(2)
'redisplay the UserForm
Me.Show
End Sub
Private Sub CommandButton2_Click()
Dim Point As Variant
On Error Resume Next
'hide the UserForm
Me.Hide
If ListBox2.ListCount < 9 Then
'ask user to select a point
Point = ThisDrawing.Utility.GetPoint(, "Select a Point")
If Err Then Exit Sub
'assign values to appropriate textbox
ListBox2.AddItem (Point(0))
ListBox2.AddItem (Point(1))
ListBox2.AddItem (Point(2))
Point = ThisDrawing.Utility.GetPoint(, "Select a Point")
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
5 If Err Then Exit Sub
'assign values to appropriate textbox
ListBox2.AddI tem (Point(0))
ListBox2.AddItem (Point(1))
ListBox2.AddItem (Point(2))
Point = ThisDrawing.Utility.GetPoint(, "Select a Point")
If Err Then Exit Sub
'assign values to appropriate textbox
ListBox2.AddItem (Point(0))
ListBox2.AddItem (Point(1))
ListBox2.Add Item (Point(2))
End If
'TextBox1.Text = Point(0): txt1Y = Point(1): txt1Z = Point(2)
'redisplay the UserForm
Me.Show
End Sub
Private Sub CommandButton3_Click()
ListBox1.Clear
CommandButton1.Enabled = True
CommandButton6.Enabled = True
End Sub
Private Sub C ommandButton4_Click()
ListBox2.Clear
End Sub
Private Sub CommandButton5_Click()
Me.Hide
Dim x1 As Double
Dim x2 As Double
Dim x3 As Double
Dim x4 As Double
Dim x5 As Double
Dim y1 As Double
Dim y2 As Double
Dim y3 As Double
Dim y4 As Double
Dim y5 As Doub le
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
6
Dim z1 As Double
Dim z2 As Double
Dim z3 As Double
Dim z4 As Double
Dim z5 As Double
Dim tt As Double
Dim t As Double
Dim a, b, c As Double
x4 = ListBox1.List(0)
y4 = ListBox1.List(1)
z4 = ListBox1.List(2)
x5 = ListBox1.List(3)
y5 = ListBox1.List(4 )
z5 = ListBox1.List(5)
x1 = ListBox2.List(0)
y1 = ListBox2.List(1)
z1 = ListBox2.List(2)
x2 = ListBox2.List(3)
y2 = ListBox2.List(4)
z2 = ListBox2.List(5)
x3 = ListBox2.List(6)
y3 = ListBox2.List(7)
z3 = ListBox2.List(8)
xx = x2 – x1
a = y3 * z4 – z3 * y4
yy = y2 – y1
b = x3 * z4 – x4 * z3
zz = z2 – z1
c = x3 * y4 – x4 * y3
tt = xx * a – yy * b + zz * c
xx = x4 – x3
a = y1 * z2 – z1 * y2
yy = y4 – y3
b = x1 * z2 – x2 * z1
zz = z4 – z3
c = x1 * y2 – x2 * y1
t = tt + xx * a – yy * b + zz * c
a = (x5 – x4) * (z3 * (y2 – y1) – z2 * (y3 – y1) + z1 * (y3 – y2))
b = (y5 – y4) * (x3 * (z2 – z1) – x2 * (z3 – z1) + x1 * (z3 – z2))
c = (z5 – z4) * (y3 * (x2 – x1) – y2 * (x3 – x1) + y1 * (x3 – x2))
tt = t / (a + b + c)
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
7 x = x4 – (x5 – x4) * tt
y = y4 – (y5 – y4) * tt
z = z4 – (z5 – z4) * tt
'MsgBox (x & " – " & y & " – " & z)
Dim Points(0 To 5) As Double
Points(0) = x
Points(1) = y
Points(2) = z
Points(3) = ListBox1.List(0)
Points(4) = ListBox1.List(1)
Points(5) = ListBox1.List(2)
Dim points1(0 To 2) As Double
points1(0) = x
points1(1) = y
points1(2) = z
If snap = True Then
ThisDrawing.ModelSpace.AddPoint points1
ThisDrawing.ModelSpace.AddCircle points1, 0.5
End If
If snap = False Then
ThisDrawing. ModelSpace.Add3DPoly Points
ThisDrawing.ModelSpace.AddPoint points1
ThisDrawing.ModelSpace.AddCircle points1, 0.5
End If
ThisDrawing.Regen (acAllViewports)
Me.Show
End Sub
Private Sub CommandButton6_Click()
Dim Point As Variant
CommandButton1.Enabled = F alse
On Error Resume Next
'hide the UserForm
Me.Hide
snap = True
If ListBox1.ListCount < 6 Then
'ask user to select a point
Point = ThisDrawing.Utility.GetPoint(, "Select a Point")
If Err Then Exit Sub
'assign values to appropriate textbox
ListBox1.AddIte m (Point(0))
ListBox1.AddItem (Point(1))
ListBox1.AddItem (Point(2))
'assign values to appropriate textbox
ListBox1.AddItem (Point(0))
ListBox1.AddItem (Point(1))
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
8 ListBox1.AddItem (Point(2) + 5)
End If
'TextBox1.Text = Point(0): txt1Y = Point(1): txt1Z = Point(2)
'redisplay the UserForm
Me.Show
End Sub
Private Sub UserForm_Click()
End Sub
Mod de funcționare
Pentru intersectia unei linii cu un plan, se selecteaza în mediul GIS sau CAD cu opțiunea SNAP
3D activă, două puncte pe linia dorită. În fereastra co respunzătoare se afișează coordonatele celor
2 puncte. Planul pentru intersecție se selectează prin 3 puncte, coordonatele acestora vor fi de
asemeni afișate înfereastra corespunzătoare.
Programul permite și intersecții multiple, respectiv se poate păstra linia sau planul și selecta un alt
plan sau linie
Fig. 2 Intersecția unei linii cu un plan
Pentru proiecția unui punct pe un plan programul permite selecția 3D a unui punct și un plan dat
prin selecția a trei puncte.
Pentru determinarea punctului de pe plan in care se proiectează punctul dat, se generează automat
un punct pe aceiași verticală la o distanță de 5m pe Z, așa cum se vede în fig. 2, și care determină
astfel o linie. În acest mod, problema se reduce la intersecția unei linii cu un plan.
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
9
Fig. 3 Intersecția dreptei 1 -2 cu planul format de punctele 3 -4-5-6 înmediul GIS
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
10
Fig. 4 Interfață program în mediul GIS
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
11
Fig. 5 Proiecția unui punct pe un plan în mediul CAD
1.3 Programul GIS -AMP
Programul GIS -AMP proiectează amprenta cadastrală a unei clădiri pe acoperișul 3D
stereorestituit și separă streașina de acoperișul propriuzis generând în același timp pereții clădirii
pentru fiecare amprentă în parte.
Procedura respectiv e îmbunătățește generarea detaliilor planimetrice, respective elimină erorile
care pot apare în aplicațiile FME și CG -Modeller, fiind un program companion la acestea.
Modul de lucru
1. Se incarca fisierele cu amprente si acoperisuri (shp)
– se creaza lay ere separate (obiecte de tip TGIS_LayerAbstract) pentru amprente si acoperis
si se adauga aceste layere in zona de vizualizare (obiect de tip TGIS_ViewerWnd)
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
12
Fig. 6a Încărcarea datelor inițiale
Fig 6b Vizualizare 3D a datelor încărcate
2. Pentru fiecare amprenta se identifica acoperisurile a caror proiectie in planul amprentei se
intersecteaza cu limitele amprentei
– se creaza layere cu proiectiiile amprentelor si acoperisurilor intr -un plan cu Z = 0
– se crea za un obiect de tip TGIS_LayerVectorEnumerator cu ajutorul caruia se parcurg
elementele de tip TGIS_Shape din layerul de amprente
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
13 – pentru fiecare amprenta se verifica intersectia cu unul sau mai multe acoperisuri
folosindu – se un obiect de tip TGIS_Topo logy si functia Combine cu parametrii cele 2 obiecte
TGIS_Shape (ampenta si acoperis) si tipul operatiei "intersectie"
(gisTopologyCombineIntersection)
– daca exista intersectie se adauga amprenta si acoperisurile gasite intr -un layer separat
Fig. 7 Proiecția amprentei pe acoperiș
3. Pentru fiecare punct (vertex) al amprentei se identifica acoperisul (din lista obtinuta la punctul
2) pe care se va face proiectia.
– se parcurge lista cu acoprisuri identificate la punctul 2
– pentru fiecare a coperis
– se parcurg punctele amprentei (folosindu -se functia GetPoint a obiectului
TGIS_Shape)
– pentru fiecare punct al amprentei (de tip TGIS_Point) se creaza un obiect
TGIS_Shape de tip gisShapeTypePoint
– se verifica daca punctul se afl a in interiorul acoperisului, cu ajutorul functiei
TGIS_Shape.Within
– daca rezultatul functiei este "true" se pastreaza acoperisul si se marcheaza legatura
dintre punctul amprentei si acoperis
– se elimina restul de acoperisuri care nu au nici o legatura facuta cu vreun punct al
amprentei
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
14
Fig. 8 Generarea pereților
4. Pentru fiecare punct (vertex) al amprentei se identifica punctul de proiectie in planul
acoperisului
5. Pentru fiecare amprenta se creaza poligoanele (TGIS_Shape de tip g isShapeTypePoligon)
formate din punctele amprentei si punctele identificate la punctul 4
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
15
Fig. 9 Verificarea proiecției
Programul permite verificarea erorilor prin zoom -area automata pe clădirea selectată ( fig. 9 )
Fig. 10 Exportul de date în format shape
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
16 Datel e rezultate pot fi exportate se parat pe fiecare layer în parte sau toate datele grupate în fișiere
de tip shape (fig. 10 și 11)
Fig. 11 Rezultatul exportului de date cu GIS -AMP
Secvențe de cod
Incarcare fisiere cu d ate initiale:
try
ll :=GisCreateLayer('FOOTPRINT',footprintFile);
if Assigned (ll) then begin
ll.ReadConfig;
GIS1.Add(ll);
GIS1.Update;
Gis1.FullExtent;
loop := TGIS_LayerVector(l l).Loop(
GIS1.VisibleExtent, '', nil, '', True
).GetEnumerator() ;
while loop.MoveNext do
begin
footprint_cnt := footprint_cnt + 1;
end;
end;
ll:=GisCreateLayer('ROOF',roofFile);
if Assigned (ll) then begin
ll.ReadConfig;
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
17 TGIS_LayerVector(ll).Params.Area.Color := clRed;
ll.Active := false;
GIS1.Add(ll);
GIS1.Update;
Gis1.FullExtent;
loop := TGIS_LayerVector(ll).Loop(
GIS1.VisibleExtent, '', nil, '', True
).GetEnumerator() ;
while loop.MoveNext do
begin
roof_cnt := roof_cnt + 1;
end;
end;
GIS1.Update;
GIS1.Mode := gisSelect;
btnViewSelectMode.Down := true;
Gis1.FullExtent;
except
on E : Exception do begin
ShowMessage( 'File can''t be open'#13 + E.Message ) ;
GIS1.Close;
end;
end
Identificare acoperisuri si puncte de intersectie pentru o amprenta:
loop2 := lv2.Loop(
GIS1.VisibleExtent, '', nil, '', True
).GetEnumerator();
while loop2.MoveNext do
begin
shp2 := loop2.Current ;
for i:=0 to shp2.GetNumParts – 1 do
begin
shpB := ll2.CreateShape( gisShapeTypePolygon ) ;
shpB.Lock(gisLockProjection);
shpB.Tag := shp2.Uid ;
ShpB.AddPart;
for j:=0 to shp2.GetPartSize(i) -1 do
begin
ptg3d := shp2.GetPoint3D(i, j);
shpB.AddPoint3D(GisPoint3D(ptg3d.X, ptg3d.Y, 0));
end;
end;
shpB.Pa rams.Area.Color := clRed;
shpB.Unlock;
ShpB.Invalidate;
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
18 tmp := topologyObj.Combine( shpA, shpB, gisTopologyCombineTypeIntersection ) ;
if Assigned( tmp ) then
begin
pFound := false;
for i:=0 t o shpA.GetNumParts – 1 do
begin
for j:=0 to shpA.GetPartSize(i) -1 do
begin
ptg := shpA.GetPoint(i, j);
try
shpP := ll4.CreateShape ( gisShapeTypePoint ) ;
shpP.Lock ( gisLockExtent ) ;
shpP.AddPart ;
shpP.AddPoint ( ptg ) ;
shpP.Unlock ;
if shpP.Within(shpB) then
begin
shpP := shpP.MakeEditable;
shpP.Tag := shpB.Uid;
shpP.Params.Labels.Value := IntToSTr(shpP.Tag);
shpP.Invalidate;
pFound := true;
end;
finally
end;
end;
end;
if pFound then
begin
tmp.Tag := shpB.Uid;
n := n + 1;
tmp := tmp.MakeEditable;
tmp.Params.La bels.Value := intToSTr(tmp.Tag);
tmp.Invalidate;
ll3.AddShape(tmp);
end
else
ll2.Delete(ShpB.Uid);
tmp.Free ;
end
else
ll2.Delete(ShpB.Uid);
GIS2.Update ;
end;
GIS2.Update;
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
19
Fig. 12 Produs final: acoperis separat de streasini si pereti generati automat
1.4 Programul FME
FME ( Feature Manipu lation Engine ) – are capacitatea de a gestiona date spa țiale
associate cu caracteristici geometrice, tabele si sisteme de coordinate.
Pentru a transporta caracteristici de la un format la altul, FME consider ă caracteristicile
ca fiind colecții de nume de atribute și valori asociate cu geometria bidimensională (2D) sau
tridimensiona lă (3D). FME nu pune nici o restricție cu privire la valorile sau tipurile de
atribute. Numele atributelor consta din una sau mai multe caractere ASCII. Caracteristicile
atribute lor sunt de tip : întregi, caractere.
Pe plan intern, FME stochează toate atributele ca șiruri de caractere și converte ște în mod
automat între o reprezentare string și o reprezentare numerică după cum este necesar.
FME este compatibil cu următoarele progr ame ce conțin Appearance Support:
– CityGML
– Adobe 3D PDF
– Autodesk 3ds
– Google Sketchup
– Collaborative Design Activity (COLLADA)
– Wavefront OBJ
– FME Feature Store (FFS)
– Esri Geodatabase
– Google Earth KML
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
20
Flux tehnologic editare
2 PROGRAMUL CG -MODELLER
2.1 Caracte ristici și utilitate
CG-Modeller este un instrument unic și puternic pentru crearea și editarea de modele de
clădiri 3D.
• este un editor 3D pentru crearea, actualizarea și texturare a de modele de clădiri 3D .
• oferă proces de editare ini țiativă – lucrează direct doar marginile relevante;
• se ocupă de modelarea acoperișurilor și detalii lor complexe de constru cții;
• oferă moduri alternative de modelare: de lucru direct cu fi șier grafic sau prin intermediul
unei bazei de date;
• oferă integrare comple tă cu 3D Studio Max Design (AutoDesk) .
2.2 Mod de funcționare
Modelul de oraș tridimensional este un instrument modern de pla nificare, simulare și
vizualizare în zonele urbane.
Sistemul este format din mai multe module care pot fi utilizate independent de a avea
interfețe standardizate.
• Modelarea 3D a clădirilor este efectuată de către modelator ul CG. Form a clădirii este extrapolată
din liniile care rezultă din amprenta clădirii , înălțimea clădirii măsurat ă și liniile de acoper iș.
Descrierea algoritmilor și softurilor utilizate pentru automatizarea extragerii Detaliilor Planimetrice (DP)
Tehnogis Grup SRL
21
Modelare 3D – genera re acoperiș
Modelare 3D – generare pereți
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: REALIZAREA MODELULUI VIRTUAL REALISTIC AL UNEI LOCALIT ĂȚI ÎN STANDARD CITYGML Activitatea 5 Elaborarea și realizarea solutiei noi pentru tehnologia… [600254] (ID: 600254)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
