Koordinaten in eine Textdatei schreiben

Einen guten Morgen,

seit Tagen versuche ich schon Koordinaten eines Punktshapes in eine Textdatei zu schreiben, leider vergeblich. Wer kann mir helfen? Bin über jeden Tipp, Auszüge aus Programmcode, etc. dankbar.
Vielen vielen Dank im Vorraus.
Hallo Gast,

probier es mal hiermit. Ich habe so Koordinaten für die Georeferenzierung (zum Laden in die ViewLinkTable) in eine Textdatei geschrieben. Klappt aber auch mit Text oder ähnlichem.
oder kommst du nicht an die Punkte des Shapes ran? da habe ich allerdings auch keine ahnung wie das geht.

Viele Grüße, Imke Dörge

-------------------------

Public Sub txtfile_write()



Dim pFile As IGxFile
Set pFile = New GxFile

pFile.Path = "C:\temp\Ref_Koordinaten.txt" 'in diese Datei soll geschrieben werden



'******** schreiben der Daten in die txt-datei******************
Open pFile.Path For Output As #1 ' Datei öffnen zum editieren
'zeilenweise schreiben (Nr, x_Raster, y_Raster, x_Karte, y_Karte)
'die Umwandlung in String ist notwendig, da bei deutscher Ländereinstellung
'das Double-Trennzeichen ein Komma ist, aber zum Einlesen ein Punkt benötigt wird
Print #1, "1"; vbTab; Point_LO.X; vbTab; Point_LO.Y; vbTab; _
Str(Point_A.X); vbTab; Str(Point_A.Y)
Print #1, "2"; vbTab; Point_LU.X; vbTab; Point_LU.Y; vbTab; _
Str(Point_B.X); vbTab; Str(Point_B.Y)
Print #1, "3"; vbTab; Point_RU.X; vbTab; Point_RU.Y; vbTab; _
Str(Point_C.X); vbTab; Str(Point_C.Y)
Print #1, "4"; vbTab; Point_RO.X; vbTab; Point_RO.Y; vbTab; _
Str(Point_D.X); vbTab; Str(Point_D.Y)
Close #1 ' Editieren der Datei beenden

pFile.Edit 'öffnet die Datei im Texteditor

End Sub
Hallo Imke,

vielen vielen Dank erstmal für das schnelle Antworten. Allerdings hab ich nun doch noch einige Fragen zu dem Programm. Ich hab es in VB-Editor eingefügt und mal laufen lassen.
Dazu hab ich vorher die Ref_Koordinaten.txt angelegt. So nun aber mein Verständnisproblem und die Fehlermeldung beim Debuggen:
"Print #1, "1"; vbTab; Point_LO.X; vbTab; Point_LO.Y; vbTab; _
Str(Point_A.X); vbTab; Str(Point_A.Y)"
tritt in dieser Zeile auf. Du hattes ja vorher beschrieben, dass hier erst die Nr., dann die xKoordinate, yKoordinate, xKarte und yKarte eingefügt wird. Das vbTab ist vermutlich ein TabSprung oder? Soweit ist das auch klar, allerdings wo kommen die Koordinaten her bzw. wenn ich einen Koordinatenwerte habe, wie füg ich die dann ein? Schreibe ich an Stelle von Point_LO.X den Koordinatenwert 3500000 hin? Oder hast Du eine andere Datei vorliegen aus der die Koordinaten kommen????

Übrigens hab ich die x und y Koordinaten der Punkte im Shape mit in die InfoTabelle schreiben lassen, aber wie ich die da rauslesen soll, weiss ich auch noch nicht.

Gruß und vielen Dank
Geri
Hallo Geri,

ich habe meine Punkte als globale variablen in einer anderen Datei erzeugt. Du kannst die Werte aber auch beim Aufruf der Funktion übergeben oder erst in diesem Programmteil auslesen. Die Werte direkt einzutragen ist wahrscheinlich nicht sinn und zweck der sache, denn dann könntest du das ganze auch gleich in eine Txt-datei schreiben.

Wie soll denn deine Datei hinterher aussehen?
"Print #1, [diesen Teil bestimmt die Ausgabe in einer Zeile, einzelne Teile mit ; trennen]"
vbTab bezeichnet einen tabsprung richtig.

werde mal schauen , ob ich für das auslesen der Koordinaten aus der tabelle auch noch was passendes finde.

Bis später, Imke
Hallo Imke,

also die WErte einzutragen ist auf jeden Fall nicht Sinn und Zweck der Sache, da hast Du vollkommen recht, dann könnte ich jedenPunkt auch einzeln eintragen, allerdings würde ich da ewig zu brauchen, da es wesentlich mehr als nur mal eben 10 Koordinaten sind.
In meiner Textdatei sollen nachher in einer Reihe der Index des Punktes, die xKoordinate, die yKoordinate und die Höhe eingetragen werden. Anschließend der nächste Punkt in der neuen Zeile.
Ich hoffe Du findest noch was hilfreiches.

Liebe Grüße Gerlinde
Hallo Gerlinde,

ich garantiere nicht dafür, das das richtig läuft aber ich denke, so ähnlich müsste es funktionieren.
allerdings besteht noch Handlungsbedarf bei der verknüpfung zwischen auslesen und schreiben. da musst du ein bisschen rumprobieren. vielleicht solltest du alle werte nach und nach in ein array schreiben und dann komplett zur "schreiben-Funktion" weitergeben. dazu in den "auslese"-Teil noch einen Zähler i einbauen, der dir den arrayindex mit hochzählt.

ansonsten erstmal das hier.
Viele Grüße Imke

Public Sub TabelleRead()

Dim pAIFact As IWorkspaceFactory
Dim pAIWSP As IFeatureWorkspace
Dim pPropertyset As IPropertySet
Dim pTable As ITable
Dim pQueryFilter As IQueryFilter
Dim pCursor As ICursor
Dim pRow As IRow
Dim TabIndex As Long 'Index der jeweiligen Tabellenspalte
Dim auslesen As String 'Hilfsvariable für ausgelesene Werte
dim pX, pY, pZ as Double 'die Koordinaten



' InfoWorkspaceFactory erzeugen
Set pAIFact = New ArcInfoWorkspaceFactory


'Propertyset für Verbindung erstellen
Set pPropertyset = New PropertySet
pPropertyset.SetProperty "DATABASE", "D:\canada2" 'Pfad zur Tabelle


' Verweis auf die IWorkspace-Schnittstelle --> Verbindung herstellen
Set pAIWSP = pAIFact.Open(pPropertyset, hWnd)

'Verweis auf die ITable-Schnittstelle ...
Set pTable = pAIWSP.openTable("NameDerTabelle.dat")

' QueryFilter erzeugen und Auswahlbedingung formulieren
Set pQueryFilter = New QueryFilter

pQueryFilter.WhereClause = "OBJECTID >= 1 AND OBJECTID < 15" 'hier deine Auswahlbedingung
'formulieren

' Cursor über alle ausgewählten Objekte
Set pCursor = pTable.Search(pQueryFilter, False)
Set pRow = pCursor.NextRow

Do While Not pRow Is Nothing

'das Auslesen: Feld mit Namen "xxx" suchen, dessen Nummer zwischenspeichern und
'dann den wert des feldes mit dieser Nummer in die entsprechende Variable schreiben

TabIndex = pTable.FindField("X-Koordinate")
pX = pRow.Value(TabIndex)

TabIndex = pTable.FindField("y-Koordinate")
pY = pRow.Value(TabIndex)

TabIndex = pTable.FindField("z-Koordinate")
pZ = pRow.Value(TabIndex)

Set pRow = pCursor.NextRow 'Zeiger auf nächste Zeile setzen,
'dadurch werden die Variablen wieder überschrieben
Loop

End Sub
Hallo Imke,

dankeschön, ich versuchs mal damit.
Schönes WE und

viele Grüße
Geri