Эхолот+GPS=Лоция (Просматривают: 3)

Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

ход этой инициативе был дан еще на первых страницах этой темы, года два назад...
вопрос стоит только в адаптации к марку , а для этого и требуется схема..
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Хочу сделать выход NMEA на свой MARK-5X PRO, кто знает как двигаться в этом направлении?

принцип, наверно, будет, как на первых страницах этой темы, т.е. подслушка с самостоятельным расчетом глубины и передачей в порт по станд NMEA

Прошивку найти скорее всего не удастся, найти бы схемку марка,
мож кто подбросит инфу по этому вопросу?
Я уже три сезона намотал с этой приставкой, 1.5штук км треков. И лоция в основном готова. Если будите её использовать от другого напряжения вам придётся поставить стабилизатор на аналоговую часть или вогнать транзисторы в режим "А".

Но сейчас я другим озабочен. Пол сезона рулил с комплектом HDS8m + LSS-1. Получил кучу файлов Sonar0000.sl2. При помощи Sonar Viewer 2.1.2 перелопатил их в Sonar0000.csv. А там облом образовался, в виде рисунка №1, координаты представлены в формате Mercator (Желтый и зелёный столбцы). Пересчитать футы в метры не проблема. Выкладываю также вольный перевод с одного сайта определение Mercator.
Но вот разобраться в формулах не получается. Больше всего достаёт Угол "пфи", из чего берётся его численное значение?
Друг нашёл ещё одну упрощённую формулу, вставил её в самодельную прошку и теперь можно конвертировать по одной координате в Градусы. Но для моей лужи получается снос в северозаподном направлении на 2км. Он обещал если найдём рабочую формулу без проблем с конвертацией, то он напишет прогу с автоматическим переводом *.csv в *map. Коррекция глубины, шаг трека и фильтры по срывам показаний не проблема.
Так что Голодранцы усих стран в одну кучу гоп!
 

Вложения

  • 1.jpg
    87.9 КБ · Просмотры: 101
    1.jpg
  • 359.5 КБ · Просмотры: 29
    Меркатор.doc
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Пол сезона рулил с комплектом HDS8m + LSS-1. Получил кучу файлов Sonar0000.sl2. При помощи Sonar Viewer 2.1.2 перелопатил их в Sonar0000.csv.
Думаю оптимально загонять исходники (логи slg иди sl2) в какую-либо программу для рисования изо-линий, например в drdepth
http://www.drdepth.se/features.php?l=gb
Что касается формулы, то в Тырнете полно онлайн конвертеров координат. Но вот пакетные еще надо поискать.
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Думаю оптимально загонять исходники (логи slg иди sl2) в какую-либо программу для рисования изо-линий, например в drdepth
http://www.drdepth.se/features.php?l=gb
Что касается формулы, то в Тырнете полно онлайн конвертеров координат. Но вот пакетные еще надо поискать.
Думать это хорошо! А вот как сообразить, что бы вставить в DrDepth хоть *.csv, *.gpx, хоть логи slg или sl2! Мой DrDepth матюкается по ихнему, аж уши вянут. Если вам эта процедура удалась, поделитесь опытом пожалуйста.
Если кто найдёт формулу перерасчёта координат из Mercator в градусы, проверти её на вшивость. Картплоттеры пишут треки в формате *.gpx, их можно открыть mapedit. Вставьте на этот трек несколько координат полученных из *.sl2, что бы они легли на них.
 
Эхолот+GPS=Лоция
Не говори ГОП, пока не ...

Фигасе, голодранцы с HDS8m + LSS-1, настоящие люмпены предпочитают Etrex + Max10 ))
Немного непонятно, что есть на входе и что должно быть на выходе; если в экселевских столбцах метры в UTM, а должны получиться координаты в WGS84, то тогда вот модуль на VB/VBA, который можно напрямую использовать в ненаглядном Экселе:

Option Explicit
Option Compare Text
' глобальные переменные для пересчета координат и метка выполнения
Public sngDeg As Single
Public sngMin As Single
Public sngSec As Single
' проекция WGS84, долгота - X - longtitude, широта - Y - latitude

'inverse of flattening 1/f = a/(a - b)
'eccentricity e^2 = 2*f - f^2 ' eccentricity square e2^2 = e^2 / (1-e^2)
Public Const a As Double = 6378137 'major
Public Const B As Double = 6356752.3142 'minor
Public Const e As Double = 0.081819190928906
'Public Const B As Double = 6356752.314245 'minor
'Public Const e As Double = 0.081819190842964

Public Const LonNO As Long = 0 'longitude of natural origin, рад
Public Const LatNO As Long = 0 'latitude of natural origin, рад
Public Const ko As Double = 0.9996 'scale factor at the natural origin, Euc
Public Const FE As Long = 0 'false easting, метр
Public Const FN As Long = 0 'false northing, метр
Public Const n As Double = 2.71828182845904 'натуральное число Е
Public Const pi As Double = 3.14159265358979 'число Пи
'rad = grad * pi / 180
'grad = rad * 180 / pi
Public Const LonNOr As Double = 0 'LonNOr = LonNO * pi / 180
Public Const LatNOr As Double = 0 'LatNOr = LatNO * pi / 180
Public Const kko As Double = 1 'kko = Cos(LatNOr) / (1 - (e ^ 2) * (Sin(LatNOr)) ^ 2) ^ 0.5

Public Function Lon2X(xLon As Double) As Double
' Longitude - совпадает полностью
Lon2X = FE + a * kko * ((xLon * pi / 180) - LonNOr)
End Function

Public Function Lat2Y(yLat As Double) As Double
Dim yN As Double
' Latitude - совпадает до целого при .3142 и до седьмого знака при .314245
yN = Tan((pi / 4) + (yLat * pi / 180) / 2) * (((1 - e * Sin(yLat * pi / 180)) / (1 + e * Sin(yLat * pi / 180))) ^ (e / 2))
Lat2Y = FN + a * kko * (Log(yN) / Log(n))
End Function

Public Function X2Lon(xE As Double) As Double
Dim xLon As Double
' Longitude - совпадает полностью
xLon = ((xE - FE) / (a * kko)) + LonNOr
X2Lon = RoundN(xLon * 180 / pi, 6)
End Function

Public Function Y2Lat(yN As Double) As Double
Dim yLat As Double, x As Double, t As Double
' Latitude - совпадает до 8-го знака
t = n ^ ((FN - yN) / (a * kko))
x = (pi / 2) - (2 * Atn(t))
yLat = x + ((e ^ 2) / 2 + 5 * (e ^ 4) / 24 + (e ^ 6) / 12 + 13 * (e ^ 8) / 360) * Sin(2 * x) + _
(7 * (e ^ 4) / 48 + 29 * (e ^ 6) / 240 + 811 * (e ^ 8) / 11520) * Sin(4 * x) + _
(7 * (e ^ 6) / 120 + 81 * (e ^ 8) / 1120) * Sin(6 * x) + (4279 * (e ^ 8) / 161280) * Sin(8 * x)
Y2Lat = RoundN(yLat * 180 / pi, 6)
End Function

Public Function RoundN(Number As Double, Decimals As Integer) As Double
' округляет число до заданного количества десятичных знаков
' 0,5 округляется в сторону увеличения
Dim Factor As Double, temp As Double
Factor = 10 ^ Decimals
temp = Number * Factor + 0.5
RoundN = Int(temp) / Factor
End Function

и еще пара функций преобразования координат:

Public Function NMEA2G(NMEA_Deg As String) As Double
' перевод NMEA вывода ГрадМин.мин в десятичные градусы
If Len(NMEA_Deg) = 9 Then
sngDeg = Val(Left(NMEA_Deg, 2))
ElseIf Len(NMEA_Deg) = 10 Then
sngDeg = Val(Left(NMEA_Deg, 3))
Else
Exit Function
End If
sngMin = Val(Mid(NMEA_Deg, InStr(1, NMEA_Deg, ".") - 2)) / 60
NMEA2G = sngDeg + sngMin
End Function

Public Function GMM2G(ByVal GMM As String) As String
' перевод Град Мин,мин в десятичные градусы
Dim sngMinDec As Single, sngSecDec As Single
On Error GoTo Skip
sngDeg = Val(Left(GMM, InStr(1, GMM, " ") - 1))
sngMin = Val(Mid(GMM, InStr(1, GMM, " ") + 1, InStr(1, GMM, ",") - InStr(1, GMM, " ") - 1))
sngSec = Val("0," & Mid(GMM, InStr(1, GMM, ",") + 1)) * 60
sngMinDec = sngMin / 60
sngSecDec = sngSec / 3600

Skip:
GMM2G = CStr(Int((sngDeg + sngMin + sngSecDec) * 1000000) / 1000000)
GMM2G = FFormat(GMM2G, 6, ",")
End Function

Public Function GMS2G(ByVal GMS As String) As String
' перевод Град°Мин'Сек" в десятичные градусы
Dim sngMinDec As Single, sngSecDec As Single
On Error GoTo Skip
sngDeg = Val(Left(GMS, InStr(1, GMS, "°") - 1))
sngMin = Val(Mid(GMS, InStr(1, GMS, "°") + 1, InStr(1, GMS, "'") - InStr(1, GMS, "°") - 1))
sngSec = Val(Mid(GMS, InStr(1, GMS, "'") + 1, Len(GMS) - InStr(1, GMS, "'") - 1))
sngMinDec = sngMin / 60
sngSecDec = sngSec / 3600

Skip:
GMS2G = CStr(Int((sngDeg + sngMinDec + sngSecDec) * 1000000) / 1000000)
GMS2G = FFormat(GMS2G, 6, ",")
End Function

Public Function G2GMS(ByVal GGG As Single, Optional Ozi As Boolean = True) As String
' перевод десятичных градусов в Град°Мин'Сек"
sngDeg = Int(GGG)
sngMin = (GGG - sngDeg) * 60
sngSec = (sngMin - Int(sngMin)) * 60
'sngSec = Format(((sngMin - Int(sngMin)) * 60), "0")

If Ozi = True Then
' для мап-файла ози
If Int(sngMin) < 10 Then G2GMS = sngDeg & "," & Int(sngMin) & "." & Right(FFormat(CStr(sngMin), 5, ","), 5) _
Else G2GMS = sngDeg & "," & Int(sngMin) & "." & Right(FFormat(CStr(sngMin), 5, ","), 5)
Else
' для обычного текста
G2GMS = sngDeg & "°" & Int(sngMin) & "'" & Int(sngSec * 1000000) / 1000000 & Chr$(34)
End If
End Function


ну и до кучи модули работы с номенклатурными листами ГШ

Public Function XY2GST(xLon As Double, yLat As Double) As String
' поиск номенклатурного листа 100.000 по координатам левого верхнего угла
' пример: N36 - N=52-56гр, 36=30-36гр
Dim LatKm100 As Double, LonKm100 As Long, Km100 As String
On Error GoTo Skip

' поправка при попадании координаты в угол квадрата
If Int(yLat / 4) = yLat / 4 Then yLat = yLat - 0.000001
' координаты находятся за пределами России (? проверка уже проведена...)
If Int(yLat / 4) < 4 Or Int(yLat / 4) > 32 _
Or Int(xLon / 6) + 30 < 21 Or Int(xLon / 6) + 30 > 189 Then GoTo Skip
' определяем лист 1.000.000 - широта 4гр, долгота 6гр
' широта от экватора к полюсам A,B,C - Asc("A")=65 ANSI Chr(65)="A" Asc("-")=45
' долгота не от 0 гринвича, а от 180гр меридиана: те +30 квадратов
XY2GST = Chr(Int(yLat / 4) + 65) & "-" & (Int(xLon / 6) + 31)
' определяем лист 100.000 - широта 20мин, долгота 30мин (144шт)
LonKm100 = Int((xLon - Int(xLon / 6) * 6) / 0.5) + 1
LatKm100 = 11 - Int((yLat - Int(yLat / 4) * 4) / (1 / 3))
' вычисляем номер квадрата
Km100 = 12 * LatKm100 + LonKm100
If Len(Km100) = 1 Then Km100 = "0" & Km100
If Len(Km100) = 2 Then Km100 = "0" & Km100
XY2GST = XY2GST & "-" & Km100
If CLng(Km100) > 144 Then XY2GST = ""

Skip:
End Function

Public Function GST2LL(nList As String) As String
' поиск координат углов снимка по номенклатурному квадрату
Dim LatList As Long, LonList As Long, ListKm100 As Long, Km050 As String, Km500 As String
Dim LonBeg As Double, LatBeg As Double, LonEnd As Double, LatEnd As Double
On Error GoTo Skip

' лист 1'000'000, левый верхний угол
LonBeg = (CLng(Mid(nList, 3, 2)) - 30 - 1) * 6
LatBeg = (Asc(Left(nList, 1)) - 64) * 4

If Len(nList) = 4 Then
' лист 1'000'000, правый нижний угол
LonEnd = LonBeg + 6: LatEnd = LatBeg - 4
ElseIf Len(nList) = 6 Then
' лист 500'000, все углы
Km500 = Right(nList, 1)
If Km500 = "А" Then
LonEnd = LonBeg + 3: LatEnd = LatBeg - 2
ElseIf Km500 = "Б" Then
LonBeg = LonBeg + 3: LonEnd = LonBeg + 3: LatEnd = LatBeg - 2
ElseIf Km500 = "В" Then
LonEnd = LonBeg + 3: LatBeg = LatBeg - 2: LatEnd = LatBeg - 2
ElseIf Km500 = "Г" Then
LonBeg = LonBeg + 3: LonEnd = LonBeg + 3
LatBeg = LatBeg - 2: LatEnd = LatBeg - 2
End If
ElseIf Len(nList) >= 8 Then
' лист 100'000, все углы
ListKm100 = CLng(Mid(nList, 6, 3))
If ListKm100 < 1 Or ListKm100 > 144 Then GoTo Skip
LonBeg = LonBeg + (ListKm100 - (Int((ListKm100 - 1) / 12) * 12)) * 0.5 - 0.5
LatBeg = LatBeg - Int((ListKm100 - 1) / 12) * (1 / 3)
LonEnd = LonBeg + 0.5: LatEnd = LatBeg - (1 / 3)
End If

If Len(nList) = 10 Then
' лист 50'000, все углы
Km050 = Right(nList, 1)
If Km050 = "А" Then
LonEnd = LonBeg + 0.25: LatEnd = LatBeg - (1 / 6)
ElseIf Km050 = "Б" Then
LonBeg = LonBeg + 0.25: LonEnd = LonBeg + 0.25: LatEnd = LatBeg - (1 / 6)
ElseIf Km050 = "В" Then
LonEnd = LonBeg + 0.25: LatBeg = LatBeg - (1 / 6): LatEnd = LatBeg - (1 / 6)
ElseIf Km050 = "Г" Then
LonBeg = LonBeg + 0.25: LonEnd = LonBeg + 0.25
LatBeg = LatBeg - (1 / 6): LatEnd = LatBeg - (1 / 6)
End If
End If
' приводим к текстовому виду с разделителям запятой
GST2LL = FFormat(CStr(LonBeg), 6, ",") & "/" & FFormat(CStr(LatBeg), 6, ",") & "-" & _
FFormat(CStr(LonEnd), 6, ",") & "/" & FFormat(CStr(LatEnd), 6, ",")

Skip:
End Function
 
Последнее редактирование:
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Подожди благодарить, нужны данные для проверки - как я понял на скриншоте 2007 эксель, если хочешь - пересохрани кусок в бинарный формат от 2003-го и скинь в аську или вложением, посмотрю оперативно
Можно конечно и пакетник собрать из комма сепарейтет или из тхт, но зачем - если все в Экселе (который не очень вобщем то предназначен для обработки таких массивов однородных данных)
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Думать это хорошо! А вот как сообразить, что бы вставить в DrDepth хоть *.csv, *.gpx, хоть логи slg или sl2! Мой DrDepth матюкается по ихнему, аж уши вянут.
File -> Import/Convert
Если не получается, скинь в личку исходник, попробую открыть у себя.
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Думать это хорошо! А вот как сообразить, что бы вставить в DrDepth хоть *.csv, *.gpx, хоть логи slg или sl2! Мой DrDepth матюкается по ихнему, аж уши вянут. Если вам эта процедура удалась, поделитесь опытом пожалуйста.
Ничего не понимаю :neznayu:
Вы хотите сказать, что у Вас ДрДепт не импортирует родные Лоу логи slg, sl2? Трудно поверить в это, ведь если он этого не делает, то зачем он вабще нужен?
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Ничего не понимаю :neznayu:
Вы хотите сказать, что у Вас ДрДепт не импортирует родные Лоу логи slg, sl2? Трудно поверить в это, ведь если он этого не делает, то зачем он вабще нужен?
Блин, блин бл.... Китаёзкие мудреци работают в Ловраже:aggressive:. HDS с прошивкой 3.5 (которая по умолчанию стояла на моём приборе) по чесноку писала в sl2 Частоту 800кгц и этот файл не воспринимается DrDepth, "нет данных". Кода перепрошил на 4.0, карплоттер стал писать частоту 200кгц вместо работающей на самом деле 800кгц. И вот эти sl2 DrDepth стал глотать только давай!:dubina:
Но чёрт возьми! Мне не нужны эти красивые картинки, которые безбожно врут! Как вытащить из этого DrDepth отметки глубин со всего трека и втавить их в мой любимый mapedit. :sdayus::sdayus:
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

скажите пожалуйста на Humminbird 718 карты водоемов есть или они вообще не существуют!
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

скажите пожалуйста на Humminbird 718 карты водоемов есть или они вообще не существуют!
Откуда им там быть, ели в этой модели GPS отсуствует :wacko:

---------- Сообщение добавлено в 14:08 ---------- Предыдущее сообщение размещено в 14:04 ----------

Но чёрт возьми! Мне не нужны эти красивые картинки, которые безбожно врут! Как вытащить из этого DrDepth отметки глубин со всего трека и втавить их в мой любимый mapedit. :sdayus::sdayus:
Так ведь ДрДепт могет делать экпорт в кучу форматов, в том числе в оч популярный polish формат. Разве мапедит его не кушает?
А кстати, в чем заключается безбожное вранье "красивых картинок"?
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Как вытащить из этого DrDepth отметки глубин со всего трека и втавить их в мой любимый mapedit. :sdayus::sdayus:
Расскажу как это делаю я:
1. Пишу эхограммы на карту памяти в формате slg при минимальном разрешении. С карты памяти я их не удаляю и они сами нумеруются последовательными числами (до заполнения карты).
2. В компьютере создал папку "Глубина" в которой расположил четыре папки:
-эхограммы
-база
-полигоны
-карты
3. Эхограммы из карты памяти копирую в одноименную папку.
4. Каждую эхограмму с помощью DrDepth командой Import/Convert конвертирую в DrDepth data file который автоматически сохраняется в этой же папке под номером соответствующим номеру эхограммы. Каждый data file обрабатываю с помощью команды edit data (убираю экстремальные точки, стоянки на якоре и т.п.).
5. Все полученные data file, с помощью команды database, вношу в базу, которую сохраняю в папке "база".
6. С помощью команды waypoint manager создаю точки центров квадратов размером 3х3 км с обязательным перекрытием квадратов на 1-2 пикселя. Переименовываю названия точек в номера -1,2,3 и т.д. На сегодняшний день у меня их уже накопилось 17.
7. По очереди открываю каждый квадрат с помощью команды map here, командой map calculation расчитываю карту и командой Create Iso/contour lines перевожу в Польский формат (Lowrance types), сохраняя в папке "полигоны" под номерами соответствующими номерам квадратов. Дальнейшую обработку и соединение квадратов, добавление островов, полигонов и т.п. осуществляю с помощью программы GPMapEdit. Этой же программой экспортирую готовую карту в формат lcm для эхолота Lowrance, в который ее и загружаю, а затем использую на рыбалке.
7. Одновременно, после открытия каждого квадрата в программе DrDepth, с помощью команды Create Map Image, конвертирую карты в формат OziExplorer, которые сохраняю под соответствующими номерами в папку "карты". После соединения этих квадратов соответствующей утилитой, планирую попробовать пользоваться полученной картой с помощью автомобильного ЖПС типа Tenex-70M. Должна получиться очень красивая картинка.
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Так ведь ДрДепт могет делать экспорт в кучу форматов, в том числе в оч популярный polish формат. Разве мапедит его не кушает?
А кстати, в чем заключается безбожное вранье "красивых картинок"?
Он выдумывает то чего нет, когда ему не хватает данных. К примеру нарисует бугор на середине затопленного русла, если там моей рыбы нет я туда и не суюсь и данных не имею.
 
Эхолот+GPS=Лоция
Re: ЭХОЛТ+GPS=ЛОЦИЯ

Он выдумывает то чего нет, когда ему не хватает данных. К примеру нарисует бугор на середине затопленного русла, если там моей рыбы нет я туда и не суюсь и данных не имею.

Да, иногда при записи эхограмм происходят сбои ЭХОЛОТА , а не DrDepth. Он иногда записывает или нулевые глубины там где их нет или десятки и сотни метров, там где меляки. Причиной этого может, к примеру, стать куст травы зацепившийся за датчик эхолота. Поэтому каждую эхограмму нужно обрабатывать с помощью команды edit data, удаляя из нее нереальные точки. Тоже самое прийдется делать после того, когда на записанном участке поработает земснаряд.
 

Сейчас смотрят

Назад
Вверх