"ГГ ММ.мм" в "ГГ" ? в ArcGIS

0 голосов
спросил 14 Июнь, 08 от mboga (1,200 баллов) в категории Программные продукты Esri
каким образом правильно будет создавать пространственные точечные данные на основе текстового файла с координатами вида "ГГ ММ.мм" ?    

035;58 41.161;59 46.632

9 Ответы

0 голосов
ответил 16 Июнь, 08 от Worker (22,480 баллов)
Если я правильно Вас понял, то Вам надо перевести Ваши координатные данные из географического формата в десятичный. Для этого можно использовать очень удобную программу Geographic Calculator (BlueMarble Technologies) - она позволяет в пакетном режиме и с учетом датумов проводить такие преобразования. Попробуйте поискать ее в сети.
0 голосов
ответил 17 Июнь, 08 от BPS (2,160 баллов)
Если это разовая задача, то наверно проще открыть текстовый файл в экселе, перевести координаты в формат DD и сохранить в виде таблицы .dbf, а по таблице построить точечный шейп-файл
0 голосов
ответил 17 Июнь, 08 от mboga (1,200 баллов)
спасибо. задача не разовая - очень часто данные поступают в очень странных видах. буду искать Geographic Calculator. надеялся найти готовое решение для ArcGIS, позволяющее переводить координаты из градусов в градусы-минуты, градусы-минуты-секунды и обратно.
0 голосов
ответил 17 Июнь, 08 от Alexander1 (32,520 баллов)
0 голосов
ответил 17 Июнь, 08 от mboga (1,200 баллов)
спасибо, это видел. не найду скрипта к градусы-минуты 2 градусы. а еще лучше всё в одном. наверно проще самому написать будет
0 голосов
ответил 17 Июнь, 08 от Alexander1 (32,520 баллов)
А что, "градусы-минуты 2 градусы" и "DMS 2 DD" это не одно и то-же? image
0 голосов
ответил 17 Июнь, 08 от mboga (1,200 баллов)
у меня "ГГ ММ.мм" - минуты и десятичные (без секунд) image
0 голосов
ответил 17 Июнь, 08 от Alexander1 (32,520 баллов)
Ну раз такое щасте привалило, модифицируй: image


'=========================
'field_DMS2DD.cal
'Author: Ianko Tchoukanski
'http://www.ian-ko.com
'=========================
Dim sField
Dim sDMS As String, sS As String, sSuf 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 below
sField = [Long]
'=============================
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 = "." Then
        If Not iDec = 0 Then
          bReplace = True
        Else
          bReplace = False
        End If
        iDec = iDec + 1
      ElseIf UCase(sS) = "S" Or UCase(sS) = "N" Or UCase(sS) = "W" Or UCase(sS) = "E" Then
        sSuf = UCase(sS)
        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 sSuf = "S" Or sSuf = "W" Then
    dDD = dDD * -1#
End If
End If
0 голосов
ответил 20 Июнь, 08 от rromeo (9,780 баллов)
Это конечно всё правильно))))) но по-моему проще сразу в экселе пересчитать и не париться))))
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...