14.04.2015 Aufrufe

Aufgabe 1 Aufgabe 2 - GIS-Management

Aufgabe 1 Aufgabe 2 - GIS-Management

Aufgabe 1 Aufgabe 2 - GIS-Management

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

FACHHOCHSCHULE STUTTGART - HOCHSCHULE FÜR TECHNIK<br />

STUDIENGANG VERMESSUNG UND GEOINFORMATIK<br />

LEISTUNGSNACHWEIS IM WINTER-SEMESTER 2004/05 FÜR DAS H AUPTDIPLOM<br />

g) Erläutern Sie den Begriff Basisklassenzeiger!<br />

FACH: Programmieren von <strong>GIS</strong>-Applikationen NAME:<br />

DATUM: 25. Jan. 2005 SEMESTER: V7<br />

ZEIT: 11:00 – 13:00<br />

PRÜFER: Prof. Dr. Behr<br />

HILFSMITTEL: Literatur, Skripte, keine Rechner (PCs, Laptops etc.) mit Software<br />

ANLAGEN: –<br />

Rechenwege, Formeln, Zwischenergebnisse etc. sind mit anzugeben!<br />

<strong>Aufgabe</strong> 1<br />

<strong>Aufgabe</strong> 1.1<br />

Erläuterungen, Definitionen<br />

a) Erläutern Sie den folgenden Funktionskopf bezüglich Klassenzugehörigkeit,<br />

Ergebnisdatentyp, Übergabeparameter<br />

CComplexInt CComplexInt::operator>(const CComplexInt & rhs)<br />

h) Erläutern Sie den Begriff dynamisches Binden!<br />

<strong>Aufgabe</strong> 1.2<br />

Verständnisfragen<br />

Jedes richtige Kreuz ergibt einen Pluspunkt, jedes falsche Kreuz einen Minuspunkt! Die Summe<br />

kann aber nicht negativ werden...<br />

Eine Klasse heißt abstrakt, wenn<br />

a) keine Objektinstanz vorstellbar ist<br />

b) sie mindestens eine rein virtuelle Methode besitzt<br />

c) sie keinen konkreten Algorithmus enthält<br />

d) niemand weiß wozu man sie gebrauchen kann.<br />

Die öffentliche Schnittstelle einer Klasse besteht aus<br />

a) polymorphen Ringen,<br />

b) den protected-Elementen der Klasse oder<br />

c) den public-Elementen oder<br />

d) durchlässigen Stellen in konzentrischen Kreisen.<br />

A sei die Oberklasse und B die davon abgeleitete Unterklasse. Welche Aussage stimmt:<br />

b) In einer Diskussion über Geoinformatik schnappen Sie die Begriffe CSV und CVS auf.<br />

Erläutern Sie kurz diese Begriffe!<br />

c) Was verstehen Sie unter Regulären Ausdrücken?<br />

d) Geben Sie einen Regulären Ausdruck an, der die Nachnamen „Mayer“ und „Mayr“ findet!<br />

e) Geben Sie einen Regulären Ausdruck an, der "100" und "1000" usw. aber nicht "1" findet!<br />

e) A besitzt meistens mehr Methoden und weniger Variablen als B<br />

f) A besitzt meistens weniger Methoden und dafür aber mehr Variablen als B<br />

g) Im UML-Diagramm zeigt die Spitze des Pfeils zwischen A und B auf A<br />

h) Im UML-Diagramm muss am Ende der Verbindungslinie zwischen A und B eine Raute sein.<br />

Wenn Sie beabsichtigen, eine Klasse A als Basisklasse für andere Klassen einzusetzen,<br />

dann gilt:<br />

a) die abgeleitete Klasse muss unbedingt einen eigenen Konstruktor definieren<br />

b) mindestens ein Element von A sollte protected sein<br />

c) der Destruktor von A sollte als virtual deklariert sein.<br />

d) die Klasse muss mittels class parent A deklariert werden<br />

f) Wodurch wird die Plattformunabhängigkeit bei .NET erreicht? (kurze Antwort)<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

1/16<br />

<strong>Aufgabe</strong> 2<br />

(72 Punkte)<br />

Das Desktop-<strong>GIS</strong> MapInfo Professional kann Daten im sog. MIF-Format an andere GI-Systeme<br />

übergeben. Die grafischen Daten werden in einer Datei mit der Extension .mif, die Sachdaten<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

2/16


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

werden in einer Datei mit der Extension .mid gespeichert. Sachdaten werden durch ein<br />

Trennzeichen getrennt.<br />

Eine MIF-Datei (siehe unten und auch letzte Seite) besteht aus zwei Bereichen: dem Dateiheader<br />

(sechs Zeilen umfassend) und dem Datenbereich (ab dem Schlüsselwort Data, in dem sich die<br />

Definitionen der grafischen Objekte befinden<br />

Version 300<br />

Charset "WindowsLatin1"<br />

Delimiter ","<br />

CoordSys Earth Projection 8, 1000, "m", 9, 0, 1, 3500000, 0 Bounds<br />

(3400000.0, 5400000,0) (3600000.0, 5600000.0)<br />

Columns 1<br />

Type Char(20)<br />

Data<br />

Point 3455887.3 5429803.92<br />

Symbol (35,0,12)<br />

...<br />

<strong>Aufgabe</strong> 2.1<br />

a) Was ist die Bedeutung der Zeile:<br />

Delimiter ","<br />

Denken Sie dabei an das CSV-Format!<br />

b) Was ist die Bedeutung der Zeile:<br />

Verständnisfragen (7 Punkte)<br />

CoordSys Earth Projection 8, 1000, "m", 9, 0, 1, 3500000, 0 Bounds<br />

(3400000.0, 5400000,0) (3600000.0, 5600000.0)<br />

zu entwerfen. Beachten Sie beim Entwurf, dass diese Klasse als Basisklasse für andere Klassen<br />

dienen soll!<br />

Folgende Methoden sind zu implementieren:<br />

? Standard-Konstruktor einschließlich Initialisierung,<br />

? zusätzlicher Konstruktor (z. B. mit Vorgaben für Rechtswert, Hochwert des Zentroids)<br />

? Destruktor (virtuell),<br />

? set- und get-Funktionen für die Eigenschaft Darstellungsstil<br />

? Ausgabefunktion.<br />

Die Ausgabefunktion ist als rein virtuelle Funktion zu deklarieren, d. h. dass sie in abgeleiteten<br />

Klassen überschrieben werden muss. Die Klasse wird somit zu einer abstrakten Basisklasse.<br />

<strong>Aufgabe</strong> 2.3<br />

Implementierung der Klasse CPoint (11 Punkte)<br />

Für ein Punktobjekt sind zwei Angaben erforderlich: ein Rechtswert (X-Koordinate) und ein<br />

Hochwert (Y-Koordinate). Daneben besteht die die Möglichkeit, das Symbol festzulegen, das zur<br />

Darstellung des Punktobjektes verwendet wird.<br />

Point 3455887.3 5429803.92<br />

Symbol (35,0,12)<br />

Leiten Sie nun von der Klasse CGraphicObject eine Klasse CPoint ab mit den Eigenschaften<br />

1. Rechts- und<br />

2. Hochwert<br />

3. einem parametrisierten Konstruktor (mit Rechts- und Hochwert sowie Darstellungsstil als<br />

Parameter) unter Nutzung einer Initialisiererliste einschließlich Setzen der Zentroid-<br />

Koordinaten sowie einer<br />

4. Ausgabefunktion für alle Eigenschaften der Klasse (dezimal, zwei Nachkommastellen)<br />

Welche Elemente können Sie erkennen / interpretieren?<br />

c) Was ist die Bedeutung der folgenden Zeilen:<br />

<strong>Aufgabe</strong> 2.4<br />

Implementierung der Klasse CLine (optional, 10 Punkte)<br />

– optional –<br />

Columns 1<br />

Type Char(20)<br />

<strong>Aufgabe</strong> 2.2<br />

Implementierung der Basisklasse (18 Punkte)<br />

Als Ausgangspunkt zur Übernahme der Geodaten in eine C++-Applikation ist eine Klasse<br />

CGraphicObject mit den Membervariablen<br />

Für eine Linie sind vier Angaben erforderlich: eine X-Koordinate und eine Y-Koordinate für jeden<br />

Endpunkt. Optional kann der Linientyp durch einen "Stift" (= PEN) angegeben werden.<br />

Line 3516202.87 5445008.99 3513000.4 5404202.38<br />

Pen (1,2,0)<br />

Leiten Sie nun von der Klasse CGraphicObject eine weitere Klasse CLine mit den notwendigen<br />

Eigenschaften ab. Ein parametrisierter Konstruktor soll alle notwendigen Parameter (d. h. die<br />

vier Koordinatenwerte und Stilangabe) als Übergabewerte erhalten und die Zentroid-Koordinaten<br />

setzen.<br />

? Zentroid-Rechtswert (double) und<br />

? Zentroid-Hochwert (double) 1<br />

? Darstellungsstil (string, ohne Zerlegung in die jeweiligen Bestandteile!)<br />

<strong>Aufgabe</strong> 2.5<br />

Implementierung der Klasse CPolyline (16 Punkte)<br />

1 Ein Zentroid ist ein (fiktiver) Punkt, der im Inneren eines Objektes liegt.<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

3/16<br />

Eine Polylinie besteht aus einem Abschnitt oder mehreren Abschnitten. In unserem Beispiel<br />

beschränken wir uns auf den einfachen Fall: Es wird die Anzahl der Stützpunkte und, pro<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

4/16


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

Stützpunkt, eine X-Koordinate und eine Y-Koordinate angegeben. Dann erfolgt die Angabe des<br />

Linientyps.<br />

Pline 5<br />

3456688.2 5429308.32<br />

3468949.91 5430766.37<br />

3492968.6 5440463.19<br />

3503290.26 5438237<br />

3516202.87 5445008.99<br />

Pen (1,2,0)<br />

Entwerfen Sie nun, ausgehend von der Klasse CGraphicObject, eine weitere Klasse<br />

CPolyline mit den notwendigen Eigenschaften.<br />

Bedenken Sie dabei, dass die Anzahl der Stützpunkte beliebig groß sein kann! Welche<br />

Datenstruktur ist zweckmäßig?<br />

1. Deklarieren Sie eine entsprechende Datenstruktur.<br />

2. Begründen Sie kurz Ihre Entscheidung.<br />

Ein parametrisierter Konstruktor soll alle notwendigen Parameter als Übergabewerte erhalten<br />

und die Zentroid-Koordinaten setzen.<br />

<strong>Aufgabe</strong> 2.6<br />

Datei-Verarbeitung (20 Punkte)<br />

Der Programmcode dieser Teilaufgabe ist durch einen try ... catch-Block abzusichern!<br />

Schreiben Sie einen Programmabschnitt, der eine .mif-Datei mit Namen test.mif öffnet (siehe<br />

Anlage). Kontrollieren Sie das erfolgreiche Öffnen der Datei.<br />

Auf die Auswertung der ersten 8 Zeilen wird verzichtet. Überlesen Sie diese, ohne den Inhalt<br />

auszuwerten.<br />

Lesen und verarbeiten Sie den Datenabschnitt solange, bis das Dateiende erreicht wird.<br />

Hinweis: Das wird das Dateiende erreicht, liefert die Methode eof() des Streamobjekts den Wert<br />

true zurück.<br />

<strong>Aufgabe</strong> 2.7<br />

(optionale Zusatzaufgabe, 8 Punkte)<br />

Schreiben Sie eine Funktion, die alle Punkte in eine ASCII-Datei im CSV-Format 2 ausgibt. Sie<br />

können dabei davon ausgehen, dass alle notwendigen get-Funktionen verfügbar sind (auch wenn<br />

nicht alle implementiert sind).<br />

<strong>Aufgabe</strong> 3<br />

Template-Funktionen (8 Punkte)<br />

In einer Bibliothek stehen verschiedene Template-Funktionen zur Verfügung:<br />

template <br />

void tausche (T2 & a, T2 & b)<br />

{<br />

const T2 tmp = a;<br />

a = b;<br />

b = tmp;<br />

}<br />

template <br />

void bubblesort (F &feld, int anzahl)<br />

{<br />

for (int k=anzahl; k > 1; k --)<br />

{<br />

for (int i=0; i < k-1; i ++)<br />

{<br />

if (feld [i] < feld [i+1])<br />

{<br />

tausche (feld[i], feld[i+1]);<br />

}<br />

};<br />

};<br />

};<br />

Die Nutzung dieser Templates für die Sortierung von Punktdaten setzt bestimmte Methoden in der<br />

Klasse CPoint voraus.<br />

1. Um welche zwei Methoden (Operator-Funktionen) handelt es sich?<br />

2. Implementieren Sie eine dieser Methoden für die Klasse CPoint!<br />

Für die einzelnen, eingelesenen Objekte (Geometrie und Stilangabe) legen Sie mit new<br />

entsprechende Objekte der jeweiligen Klasse an. In ein Feld (oder Vector) mit<br />

Basisklassenzeigern tragen Sie die Zeiger auf diese Objekte ein.<br />

Danach schließen Sie die Datei.<br />

<strong>Aufgabe</strong> 4<br />

<strong>Aufgabe</strong> 4.1<br />

Windows-Programmierung<br />

(15 Punkte)<br />

a) Was versteht man bei Windows-Programmen unter "Ereignissen"?<br />

Nennen Sie zwei bis drei typische Ereignisse und die entsprechenden, in Windows-<br />

Programmen verwendeten Bezeichner!.<br />

2 Einzelne Datenfelder sind dabei durch ein Trennzeichen, wie das Komma, getrennt.<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

5/16<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

6/16


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

b) Wie werden diese in einem Windows-API-Programm verarbeitet?<br />

c) Wie werden diese in einem MFC-basierten-Programm verarbeitet?<br />

d) Erläutern Sie das Prinzip der Dokument-Ansicht-Architektur!<br />

e) Was verstehen Sie unter Serialisierung?<br />

<strong>Aufgabe</strong> 4.2<br />

Zusatzaufgabe (5 Punkte)<br />

Was sind Eigenschaften einer Fensterklasse?<br />

Was ist bei einer Windows-Applikation die <strong>Aufgabe</strong> einer Fensterprozedur?<br />

<strong>Aufgabe</strong> 4.3<br />

Einfach Windows-MFC-Applikation (16 Punkte)<br />

Erläutern Sie das nachfolgende Windows-Programm bezüglich folgender Aspekte:<br />

? Klassen, ihre Abhängigkeiten von anderen Klassen, ihre Methoden und Eigenschaften<br />

? Nachrichtenverarbeitung und Ereignis-Behandlungs-Funktionen (Callback-Funktionen)<br />

? Funktionalität<br />

? Variable prg01<br />

#include <br />

class CTopWindow : public CFrameWnd<br />

{<br />

public:<br />

CTopWindow() {Create(NULL,_T("<strong>GIS</strong>"));}<br />

protected:<br />

void OnLButtonDown(UINT nFlags, CPoint point);<br />

DECLARE_MESSAGE_MAP();<br />

};<br />

BEGIN_MESSAGE_MAP(CTopWindow, CFrameWnd)<br />

ON_WM_LBUTTONDOWN()<br />

END_MESSAGE_MAP()<br />

void CTopWindow::OnLButtonDown(UINT nFlags, CPoint point)<br />

{<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

7/16<br />

CClientDC dc(this);<br />

char str[30] = "Punkt erfasst!";<br />

dc.TextOut(point.x, point.y, str, strlen(str));<br />

CFrameWnd::OnLButtonDown(nFlags, point);<br />

}<br />

class C<strong>GIS</strong> : public CWinApp<br />

{<br />

public:<br />

virtual BOOL InitInstance();<br />

};<br />

BOOL C<strong>GIS</strong>::InitInstance()<br />

{<br />

m_pMainWnd = new CTopWindow();<br />

m_pMainWnd->ShowWindow(m_nCmdShow);<br />

return TRUE;<br />

}<br />

C<strong>GIS</strong> prg01;<br />

<strong>Aufgabe</strong> 4.4<br />

MFC (10 Punkte)<br />

Bei der Analyse des obigen Programms stoßen Sie auf die Basisklasse CWinApp und analysieren<br />

ihre Deklaration (siehe nachfolgenden Abschnitt).<br />

1. Interpretieren Sie die Klassendeklaration. Welche Elemente / Abschnitte können Sie<br />

benennen?<br />

2. Nehmen Sie dabei Bezug auf die Variablen, Abläufe, Vorgaben usw. der API-basierten<br />

Windows-Programmierung!<br />

Tragen Sie entsprechende Erläuterungen direkt in den Source ein!<br />

class CWinApp : public CWinThread<br />

{<br />

public:<br />

CWinApp(LPCTSTR lpszAppName = NULL);<br />

// Startup args (do not change)<br />

HINSTANCE m_hInstance;<br />

HINSTANCE m_hPrevInstance;<br />

LPTSTR m_lpCmdLine;<br />

int m_nCmdShow;<br />

LPCTSTR m_pszAppName; // human readable name<br />

LPCTSTR m_pszRegistryKey; // used for registry entries<br />

CDocManager* m_pDocManager;<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

8/16<br />

// app name defaults to EXE name<br />

public: // set in constructor to override default<br />

LPCTSTR m_pszExeName; // executable name (no spaces)<br />

LPCTSTR m_pszHelpFilePath; // default based on module path<br />

LPCTSTR m_pszProfileName; // default based on app name<br />

// Initialization Operations - should be done in InitInstance<br />

protected:<br />

void LoadStdProfileSettings(UINT nMaxMRU = _AFX_MRU_COUNT); // load MRU<br />

file list and last preview state<br />

...<br />

public:<br />

// Cursors<br />

HCURSOR LoadCursor(LPCTSTR lpszResourceName) const;<br />

};


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

<strong>Aufgabe</strong> 4.5<br />

Implementierung einer Anwendungsklasse (10 Punkte)<br />

1) An welcher Stelle wird der Event „Datei öffnen“ ausgewertet? Welche Funktion wird gerufen?<br />

(Bitte markieren)<br />

2) An welcher Stelle wird das Applikationsobjekt geschaffen? Wie heißt es (markieren)?<br />

3) An welcher Stelle wird die Class Id zur Nutzung der COM-Technologie festgelegt?<br />

4) An welcher Stelle wird der Fensterinhalt angezeigt? Durch welche Methode (markieren)?<br />

5) Markieren Sie den Konstruktor!<br />

6) Was steckt hinter MRU?<br />

BEGIN_MESSAGE_MAP(CMdimapApp, CWinApp)<br />

//{{AFX_MSG_MAP(CMdimapApp)<br />

ON_COMMAND(ID_APP_ABOUT, OnAppAbout)<br />

ON_COMMAND(ID_FILE_OPEN, OnFileOpen)<br />

//}}AFX_MSG_MAP<br />

// Standard file based document commands<br />

ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)<br />

ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)<br />

END_MESSAGE_MAP()<br />

CMdimapApp::CMdimapApp() { }<br />

CMdimapApp theApp;<br />

static const CLSID BASED_CODE clsid =<br />

{ 0xae8b3fc0, 0xf801, 0x11ce, { 0xbd, 0x29, 0x0, 0xaa, 0x0, 0x59, 0x4a,<br />

0xd7 } };<br />

DMapInfo mapinfo;<br />

BOOL CMdimapApp::InitInstance()<br />

{<br />

LoadStdProfileSettings(); // Load standard INI file options<br />

(including MRU)<br />

CMainFrame* pMainFrame = new CMainFrame;<br />

if (!pMainFrame->LoadFrame(IDR_MAINFRAME))<br />

return FALSE;<br />

m_pMainWnd = pMainFrame;<br />

3) An welcher Stelle wird die Statuszeile angelegt?<br />

4) Was ist die Toolbar? Wie wird ihr Aussehen definiert?<br />

5) Markieren Sie den Konstruktor!<br />

static UINT BASED_CODE indicators[] =<br />

{<br />

ID_SEPARATOR,<br />

ID_INDICATOR_CAPS,<br />

ID_INDICATOR_NUM,<br />

};<br />

CMainFrame::CMainFrame() { }<br />

CMainFrame::~CMainFrame() { }<br />

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<br />

{<br />

if (!m_wndToolBar.Create(this) ||<br />

!m_wndToolBar.LoadBitmap(IDR_MAINFRAME) ||<br />

!m_wndToolBar.SetButtons(buttons,<br />

sizeof(buttons)/sizeof(UINT)))<br />

{<br />

return -1; // fail to create<br />

}<br />

}<br />

if (!m_wndStatusBar.Create(this) ||<br />

!m_wndStatusBar.SetIndicators(indicators,<br />

sizeof(indicators)/sizeof(UINT)))<br />

{<br />

return -1; // fail to create<br />

}<br />

return 0;<br />

}<br />

pMainFrame->ShowWindow(m_nCmdShow);<br />

pMainFrame->UpdateWindow();<br />

return TRUE;<br />

<strong>Aufgabe</strong> 4.6<br />

Verständnis für die Implementierung einer Fensterklasse<br />

1) An welcher Stelle werden die Statusindikatoren definiert?<br />

2) An welcher Stelle werden sie zur Anzeige gebracht?<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

9/16<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

10/16


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

Implementierung der Klasse CGraphicObject<br />

GraphicObject.h<br />

Implementierung der Klasse CPoint<br />

Point.h<br />

GraphicObject.cpp<br />

Point.cpp<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

11/16<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

12/16


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

Implementierung der Klasse CLine<br />

Implementierung der Klasse CPolyline (<strong>Aufgabe</strong> 2.5)<br />

Line.h<br />

Polyline.h<br />

Line.cpp<br />

Polyline.cpp<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

13/16<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

14/16


Name:<br />

Semester:<br />

Name:<br />

Semester:<br />

Datei-Handling, Basisklassenzeiger (<strong>Aufgabe</strong> 2.6)<br />

Anlage: Beispieldatei im mif-Format<br />

Version 300<br />

Charset "WindowsLatin1"<br />

Delimiter ","<br />

CoordSys Earth Projection 8, 1000, "m", 9, 0, 1, 3500000, 0 Bounds (3400000.0,<br />

5400000,0) (3600000.0, 5600000.0)<br />

Columns 1<br />

Type Char(20)<br />

Data<br />

Point 3455887.3 5429803.92<br />

Symbol (35,0,12)<br />

Point 3512705.31 5404702.08<br />

Symbol (35,0,12)<br />

Point 3516206.32 5372899.37<br />

Symbol (35,0,12)<br />

Point 3516202.87 5445008.99<br />

Symbol (35,0,12)<br />

Line 3516202.87 5445008.99 3513000.4 5404202.38<br />

Pen (1,2,0)<br />

Line 3513000.4 5404202.38 3516206.32 5372899.37<br />

Pen (1,2,0)<br />

Pline 9<br />

3455887.3 5429803.92<br />

3460753.91 5425875.34<br />

3473862.85 5419059.64<br />

3478292.49 5419707.81<br />

3484352.19 5416685.2<br />

3489932.89 5409296<br />

3501836.64 5406055.63<br />

3509766.57 5407676.9<br />

3513000.4 5404202.38<br />

Pen (1,2,0)<br />

Pline 5<br />

3456688.2 5429308.32<br />

3468949.91 5430766.37<br />

3492968.6 5440463.19<br />

3503290.26 5438237<br />

3516202.87 5445008.99<br />

Pen (1,2,0)<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

15/16<br />

Klausur Programmieren von <strong>GIS</strong>-Applikationen, WS 2004/05<br />

16/16

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!