Deutsch

Ho To: Konvertieren einer Datei mit Koordinaten in Grad, Minuten und Sekunden in ein Shapefile in ArcMap 9.x

Zusammenfassung

Hinweis:
Das nachstehende Verfahren bezieht sich auf ArcGIS 9.3.1 oder frühere Versionen. Ab ArcGIS 10.0 können Ausdrücke in der Feldberechnung nur mit VBScript oder im Python-Standardformat erstellt werden. Informationen zum entsprechenden Verfahren in ArcGIS Desktop 10 finden Sie im Artikel How To: Verwenden von ArcMap 10 zum Konvertieren einer Datei mit Koordinaten in Grad, Minuten und Sekunden in eine Feature-Class oder ein Shapefile.

Vorgehensweise

Führen Sie hierfür die folgenden Schritte aus.

  1. Formatieren Sie die Koordinatenwerte für ArcGIS, damit die Daten ordnungsgemäß ausgewertet werden.
    1. Koordinaten in DMS aus einer Datei müssen mit Leerzeichen zwischen den Grad-, Minuten- und Sekundenwerten formatiert werden, wie im folgenden Beispiel gezeigt:
      80 37 40,35 00 48
    2. Für Daten in Nordamerika müssen die Längengradwerte negative Zahlen sein. Beispiel:
      -80 37 40,35 00 48
    3. Jede Spalte in der Tabelle muss eine Überschrift aufweisen, die die in diese Tabellenspalte eingegebenen Daten beschreibt:
      Longitude,Latitude
      -80 37 40,35 00 48
    4. Die Tabelle muss über ein Feld verfügen, das eine eindeutige numerische Kennung für jeden Datensatz in der Tabelle enthält (Primärschlüssel).
      ID,Longitude,Latitude
      1,-80 37 59,35 00 38
  1. Starten Sie ArcMap mit einer neuen, leeren Karte, nachdem die Tabelle ordnungsgemäß formatiert wurde.
  2. Speichern Sie mit den folgenden Schritten das unten stehende Skript in ArcMap unter dem Namen "conv_DMS2DD.cal":
Code:
Dim sField
Dim sDMS As String, sS As String, sSuf As String, sPre as string
Dim sList
Dim i As Integer, j As Integer
Dim iDec As Integer, iNum As Integer
Dim dD As Double, dM As Double, dS As Double, dDD As Double
Dim bReplace As Boolean
'=============================
'Change the source field name bellow
sField = [dms]
'=============================
sDMS = sField
If Len(Trim(sDMS)) = 0 Then
  dDD = 0
Else
  iDec = 0
  iNum = 0
  For i = 1 To Len(sDMS)
    sS = Mid(sDMS, i, 1)
    If Not IsNumeric(sS) Then
      If sS = "." Dann
        If Not iDec = 0 Then
          bReplace = True
Else
          bReplace = False
End If
        iDec = iDec + 1
      ElseIf sS = "-" Then
	sPre = "-"
        bReplace = True
      Else
        bReplace = True
      End If
      If bReplace Then
        If iNum > 0 Then
          Mid(sDMS, i, 1) = ","
        Else
          Mid(sDMS, i, 1) = " "
        End If
      End If
    Else
      iNum = iNum + 1
    End If
  Next i
  sList = Split(sDMS, ",")
  Dim iLen As Integer
  If UBound(sList) = 0 Then
    sDMS = sList(0)
    iLen = Len(sDMS)
    If iLen >= 4 Then
      dS = CDbl(Mid(sDMS, iLen - 1, 2))
      dM = CDbl(Mid(sDMS, iLen - 3, 2))
      sDMS = Left(sDMS, (iLen - 4))
      If (Len(sDMS) > 2) Then
        dD = CDbl(Right(sDMS, 3))
      ElseIf (Len(sDMS) = 0) Then
        dD = 0#
      Else
        dD = CDbl(sDMS)
      End If
    Else
      dDD = 0
    End If
    dDD = dD + dM / 60# + dS / 3600#
  Else
    j = 0
    dD = 0#
    dM = 0#
    dS = 0#
    For i = 0 To UBound(sList)
      If IsNumeric(sList(i)) Then
        If j = 0 Then
          dD = CDbl(sList(i))
          j = j + 1
        ElseIf j = 1 Then
          dM = CDbl(sList(i))
          j = j + 1
        ElseIf j = 2 Then
          dS = CDbl(sList(i))
          j = j + 1
        End If
      End If
    Next i
    dDD = dD + dM / 60# + dS / 3600#
  End If
  If dDD < -180# Or dDD > 180# Then
    dDD = 0#
  End If
  If sPre = "-" Then  
    dDD = dDD * -1#
  End If
End If
  1. Öffnen Sie eine Tabelle in ArcMap.
  2. Klicken Sie mit der rechten Maustaste auf das Feld, und wählen Sie Wert berechnen aus.
  3. Aktivieren Sie das Kontrollkästchen Erweitert.
  4. Kopieren Sie den oben dargestellten Code in den Abschnitt Pre-Logic VBA Script Code der Feldberechnung.
  5. Geben Sie im unteren Abschnitt der Feldberechnung dDD ein.
  6. Klicken Sie auf Speichern, um das Skript in einer CAL-Datei zu speichern, und benennen Sie die Datei mit "conv_DMS2DD.cal".
  1. Führen Sie die folgenden Schritte aus, um in der Feldberechnung den obigen Code auszuführen:
    1. Fügen Sie ArcMap mithilfe der Schaltfläche Daten hinzufügen die Tabelle hinzu, in der sich die DMS-Koordinaten befinden.
    2. Klicken Sie mit der rechten Maustaste auf den Tabellennamen, und klicken Sie auf Daten > Exportieren, um die Tabelle in eine DBF-Datei zu exportieren.
    3. Öffnen Sie die DBF-Tabelle, und fügen Sie ihr die Felder "longDD" und "latDD" hinzu. Definieren Sie diese mit dem Datentyp Double, mit der Genauigkeit 18 und einer Anzahl von 13 Dezimalstellen.
    4. Berechnen Sie die Feldwerte für "longDD" und "latDD", indem Sie das Skript "conv_DMS2DD.cal" in die Feldberechnung laden.
Hinweis:
Ändern Sie den Namen des Feldes im Skript in den Namen der ursprünglichen DMS-Felder:

'Unten den Quellfeldnamen ändern
sField = [Long]
  1. Nachdem die Daten von DMS in DD konvertiert wurden, klicken Sie mit der rechten Maustaste auf die DBF-Tabelle, und wählen Sie XY-Daten anzeigen aus.

    Klicken Sie im Abschnitt Raumbezug der Eingabekoordinaten des Dialogfeldes auf die Schaltfläche Bearbeiten, um die Projektion für den Ereignis-Layer zu definieren.
    Hinweis:
    Durch das Definieren der Projektion können die Daten in ArcMap an der richtigen Position als Ereignis-Layer angezeigt werden.
  1. Konvertieren Sie den Ereignis-Layer in ein Shapefile.
    1. Klicken Sie mit der rechten Maustaste auf den Ereignis-Layer, und wählen Sie Daten > Daten exportieren aus.
    2. Wählen Sie das Ausgabeverzeichnis für das Shapefile aus, und geben Sie den Namen ein.
    3. Klicken Sie im Dialogfeld Daten exportieren auf Speichern und OK, um das Shapefile zu erstellen.

Referenzinformationen