Español

Cómo: Convertir un archivo con coordenadas en grados, minutos y segundos en un shapefile en ArcMap 9.x

Resumen

Nota:
El procedimiento que se describe a continuación es para ArcGIS 9.3.1 o versiones anteriores. Desde la versión 10.0 de ArcGIS, las expresiones de la Calculadora se crean solo con VBScript o un formato de Python estándar.  Para conocer el proceso equivalente en ArcGIS Desktop 10, consulte Cómo: Convertir un archivo con coordenadas en grados, minutos y segundos en una clase de entidad o un shapefile utilizando ArcMap en la versión 10

Procedimiento

Siga los pasos a continuación.

  1. Formatee los valores de coordenadas para que ArcGIS interprete los datos correctamente.
    1. Las coordenadas en DMS de un archivo se deben formatear con espacios que separen los valores de grados, minutos y segundos, como se muestra en el siguiente ejemplo:
      80 37 40,35 00 48
    2. En el caso de los datos de Norteamérica, los valores de longitud deben ser números negativos. Observe el siguiente ejemplo:
      -80 37 40,35 00 48
    3. Cada columna de la tabla debe tener un encabezado que describa los datos introducidos en dicha columna de la tabla:
      Longitud,Latitud
      -80 37 40,35 00 48
    4. La tabla debe tener un campo que contenga un número de identificación único para cada registro de la tabla (clave principal).
      Id.,Longitud,Latitud
      1,-80 37 59,35 00 38
  1. Inicie ArcMap con un nuevo mapa vacío una vez que la tabla esté formateada correctamente.
  2. Guarde el siguiente script como "conv_DMS2DD.cal" en ArcMap siguiendo estos pasos:
Código:
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 = "." Antes
        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. Abra una tabla en ArcMap.
  2. Haga clic con el botón derecho en un campo y seleccione Calcular valores.
  3. Active la casilla de verificación Opciones avanzadas.
  4. Copie el código de arriba en la sección Código de script Pre-Logic de VBA de la Calculadora de campo.
  5. Escriba dDD en la sección inferior de la Calculadora de campo.
  6. Haga clic en Guardar para guardar el script en un archivo .cal y llame al archivo "conv_DMS2DD.cal".
  1. Siga estos pasos para ejecutar el código de arriba en la Calculadora de campo:
    1. Agregue la tabla que contiene las coordenadas DMS a ArcMap con el botón Agregar datos.
    2. Haga clic con el botón derecho en el nombre de la tabla > Datos > Exportar y exporte la tabla a un archivo DBF.
    3. Abra la tabla DBF, agregue a la tabla dos elementos con los nombres "longDD" y "latDD", y defínalos como Doble, Precisión 18 y Escala 13.
    4. Calcule los valores de campo de "longDD" y "latDD" iniciando una carga del script conv_DMS2DD.cal en la Calculadora de campo.
Nota:
Cambie el nombre del campo del script al de los campos DMS originales:

'Change the source field name below
sField = [Long]
  1. Haga clic con el botón derecho en la tabla DBF y seleccione Mostrar datos XY una vez convertidas las coordenadas de DMS a DD.

    Defina la proyección de la capa de eventos haciendo clic en el botón Editar de la sección Referencia espacial de coordenadas de entrada del cuadro de diálogo.
    Nota:
    Definir la proyección permite que los datos se muestren en la ubicación correcta en ArcMap como capa de eventos.
  1. Convierta la capa de eventos en un shapefile.
    1. Haga clic con el botón derecho en la capa de eventos y seleccione Datos > Exportar datos.
    2. Seleccione la ubicación de salida para el shapefile y escriba el nombre.
    3. Haga clic en Guardar y Aceptar en el cuadro de diálogo Exportar datos para crear el shapefile.

Información relacionada