GeoFAQ siteФОРУМ ПО ГЕО-ИНФОРМАЦИОННЫМ ТЕХНОЛОГИЯМ

GIS, CAD, DTM, SQL, WWW, GPS, ETC.
 - Начало - Регистрация - Ответить - Поиск - Статистика - RSS
Форум GeoFAQ / Гео-технологии / Новые средства для привязки спутниковых интернет-данных
. 1 . 2 . 3 . 4 . 5 . 6 . >>
Автор Сообщение
lalex
Участник
# Дата: 14 Июн 2007 14:12
Ответить 


По сообщениям от Mitrich'а, разработка идет полным ходом, раздаётся пробная (вполне рабочая) версия (по почте mitrichtools@mail.ru). Полное описание здесь.
http://mitrichtools.narod.ru/Rus/GService.html
Также с большим интересом принимаются замечания. Особо нужны сведения по точности привязки. Пример одного из них ниже по теме.

Краткая предыстория проекта будет изложена дополнительно. кому интересно, следите за темой - возможно, будет раздача слонов, идут переговоры :)

Разработчик: MitrichTools; разработка идет при поддержке проекта GeoFAQ.

lalex
Участник
# Дата: 14 Июн 2007 14:13
Ответить 


Пример точности, поскольку были сомнения. На фото - гринвич из космоса. Подложка - гугл привязанный с помощью GService. Накладка - гугл вручную. Толстая красная линия - нулевой меридиан по ГИС.

Словом, с меридианами можно считать решенным, вопрос теперь о параллелях, как они ложатся. Где на местности, интересно, из космоса видно полярный круг??? :)



geologic
Участник
# Дата: 14 Июн 2007 14:15
Ответить 


Предыстория проекта:

- Начало декабря - открыт сайт "GeoFAQ", публикацией статьи "Привязка растров в ArcView и ArcMap". До сих пор наиболее популярная статья на сайте, да и в интернете на эту тему;

- 20 декабря, В.Каминским на Датаплюс открыта дискуссия: Привязка мозаики из растров???. До сих пор наиболее популярная тема ГИС рунета.

- 21 марта 2007. Опубликована статья "Взгляд из-за гуглА", где угадана меркаторская проекция на сфероиде. Разработана GooGeo - первая утилита для ГИС.

- 30 марта. В Каминским на территорию Москвы закончена мозаика космических снимков, с анализом точности методики.

- 22 сентября. Добавлено описание скачивания карт.

- 27 марта 2007 - разработана первая версия GService... Предыстория закончилась, началась история :) Митрич освободится, добавит.

mitrich
Участник
# Дата: 14 Июн 2007 14:16
Ответить 


Технические трудности закончились. Разработка продолжена.
Из главного: добавлена возможность при создании большого растра догружать блоки в уже готовый растр. Особенно полезно при создании растра вдоль линейных объектов.
Пример на страничке модуля:
http://mitrichtools.narod.ru/Rus/GService.html

существует как триальная, так и полная версия.

Митрич

geologic
Участник
# Дата: 14 Июн 2007 14:17
Ответить 


А какие мысли насчет автономного варианта, или хотя бы конвертации привязки под ОЗИ? Вроде бы обкатка основного средства завершена в целом...

И другая мысль - иные сервисы. Карты Yahoo, Scanex (kosmosnimki.ru). В последней проекция также меркаторская, как уже стало известно, но алгоритм расчета другой.

mitrich
Участник
# Дата: 14 Июн 2007 14:17
Ответить 


автономный вариант сделать не представляет труда, но его функционал мало чем будет отличаться от предшественников. Разве только ворлд-файлы для блоков можно добавить. Этого ,правда, будет достаточно, чтобы грузить тайлики в AutoCad Map или MapInfo. Было бы интересно скооперироваться с разработчиками, пишущими для этих пакетов и предоставить им dll, а они пусть напишут интерфейс и загрузку в программы. Я по CAd писал раньше, но сейчас навык утерян. Надо сходить на их форумы...

ОЗИ! Актуальное направление. Там есть Меркатор, но кто бы подсказал его параметры - сфера, WGS84 - что-то еще. Надо попробовать. или может у кого-то есть карта в Меркаторе для ОЗИ. Вышлите, плизззз!

lalex
Участник
# Дата: 14 Июн 2007 14:18
Ответить 


Запустил вопросы на map-info.ru и gps.boston.ru, может, коллективный разум подскажет варианты. В мапинфе загвоздка файл prj не документирован, ддля проекций не видно их строения. найти бы опись, былоб ясно - как добавлять свои проекции туда, я в курсе, приходилось подправлять но надо ж коды знать, заменить эллипсоид (а он там NAD27 для всех мировых) можно, но на ЧТО??? Какой код сферы? Проглядел весь файл, боюсь, нету там сферы как таковой. Если только где-то глубоко внутри.

Если окажется что нету сферы, то может, все же реализовать расчет для эллипсоида? Алгоритм есть, но с точностью посадки растра будет головная боль - сжатие по меридиану там нелинейное.

mitrich
Участник
# Дата: 14 Июн 2007 14:18
Ответить 


добавлена опция, призванная предотвратить забанивание сервера:
приостановка скачивание на некоторое время после загрузки определенного числа блоков.
Картинка на страничке

lalex
Участник
# Дата: 14 Июн 2007 14:20 - Поправил: lalex
Ответить 


Knowledge database пишет, что сфера стоит под номером 12 в mapinfo.prj. Поглядел, под этим номером идет какой-то Австралийский эллипсоид, так что со сферой скорее всего ошибочка. Нету ее вообще в мапинфе, тем более что знатоки молчат на всех форумах. В ОЗИ тем более нету. Придется для эллипса клепать версию, как описано выше. Задача не очень сложная, всего-то каждый блок "сжать" по вертикали. Это можно делать и world-файлом, кстати. Но вот для склеенной мозаики сложнее...

mitrich
Участник
# Дата: 23 Июл 2007 17:41
Ответить 


Ошибка склейки блоков с индексированными палитрами решена. В письмах пользователям я проблему ранее обозначил, теперь ее , надеюсь, нет.
Время склейки увеличилось, но такова производительность ArcMap(?).
На выходе получается RGB-растр.
1- до, 2 -после.




как обычно чуть-чуть подробнее тут

mitrich
Участник
# Дата: 15 Авг 2007 10:48
Ответить 


Очередная доработка модуля:
- подгрузка блоков с сайта Космоснимки.ру
- работа с прокси сервером
- более гибкая работа в Демо версии, проведена деДЕМОнизация программы.
подробнее тут

mitrich
Участник
# Дата: 29 Авг 2007 12:07
Ответить 


добавлен сервис "рельеф с отмывкой" с сайта http://www.maps-for-free.com/index.html
все данные в свободном доступе. Их пример - другим наука


geologic
Участник
# Дата: 4 Сен 2007 13:50
Ответить 


Да, здорово. Похоже, прогресс идет в направлении либерализации :)

mitrich
Участник
# Дата: 26 Окт 2007 14:00
Ответить 


Добавлена опция фильтрации только тех блоков, которые пересекаются с выделенными на карте объектами
и установка экстентов для закачки по выделенным объектам



открыт адрес для скачки демо-версии:


однако мне бы хотелось продолжать получать от Вас подтверждение о скачке, вопросы и предложения

lalex
Участник
# Дата: 29 Окт 2007 11:32
Ответить 


А что, красиво так все подровнялось. Замечания были, только давно - с тех пор бумажку потерял. Вспомню, напишу :)

oleg
Участник
# Дата: 29 Окт 2007 12:01
Ответить 


а к geoengine.nga.mil/geospatial/SW_TOOLS/NIMAMUSE/webinter/rast_roam.html GService применить можно? или там механизм иной?

Feel
Участник
# Дата: 31 Окт 2007 10:45 - Поправил: Feel
Ответить 


Пришлось зарегиться, ибо Лялекса никак не выцепить
на бостоне личка не проходит, мыло тоже в никуда

код для генерирования map-файла привязки в Ози (извиняюсь за ВБА):

Public Function XY2OZY() As String
' Генератор map-файла для OziExplorer из координат СканЭкса
Dim MapFile As String, IW As Long, IH As Long, NameF As String, ll As String, MM As String
On Error GoTo Skip
IW = xTrip * 256: IH = yTrip * 256

MapFile = "OziExplorer Map Data File Version 2.2" & vbCrLf
MapFile = MapFile & SattDesk & " (ScanEx)" & vbCrLf
If What = "map" Then MapFile = MapFile & PathName & "_m.tif" & vbCrLf _
Else MapFile = MapFile & PathName & ".tif" & vbCrLf
MapFile = MapFile & "1 ,Map Code," & vbCrLf
MapFile = MapFile & "WGS 84,WGS 84, 0.0000, 0.0000,WGS 84" & vbCrLf
MapFile = MapFile & "Reserved 1" & vbCrLf
MapFile = MapFile & "Reserved 2" & vbCrLf
MapFile = MapFile & "Magnetic Variation,,,E" & vbCrLf
MapFile = MapFile & "Map Projection,Mercator,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No" & vbCrLf

ll = XY2LL(xBeg + Trip / 2, yBeg - Trip / 2, 0)
xLonBeg = CDbl(Mid(ll, 1, InStr(ll, "/") - 1)): xLonBeg = Int(xLonBeg * 1000000) / 1000000
yLatBeg = CDbl(Mid(ll, InStr(ll, "/") + 1)): yLatBeg = Int(yLatBeg * 1000000) / 1000000
MapFile = MapFile & "Point01,xy, 128, 128,in, deg, " & G2GMS(yLatBeg) & ",N, " & G2GMS(xLonBeg) & ",E, grid, , , ,N" & vbCrLf
ll = XY2LL(xEnd + Trip / 2, yEnd - Trip / 2, 0)
xLonEnd = CDbl(Mid(ll, 1, InStr(ll, "/") - 1)): xLonEnd = Int(xLonEnd * 1000000) / 1000000
yLatEnd = CDbl(Mid(ll, InStr(ll, "/") + 1)): yLatEnd = Int(yLatEnd * 1000000) / 1000000
MapFile = MapFile & "Point02,xy, " & IW - 128 & ", " & IH - 128 & ",in, deg, " & G2GMS(yLatEnd) & ",N, " & G2GMS(xLonEnd) & ",E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point03,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point04,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point05,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point06,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point07,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point08,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point09,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point10,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point11,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point12,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point13,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point14,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point15,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point16,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point17,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point18,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point19,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point20,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point21,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point22,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point23,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point24,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point25,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point26,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point27,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point28,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point29,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Point30,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf
MapFile = MapFile & "Projection Setup,,,,,,,,,," & vbCrLf
MapFile = MapFile & "Map Feature = MF ; Map Comment = MC These follow if they exist" & vbCrLf
MapFile = MapFile & "Track File = TF These follow if they exist" & vbCrLf
MapFile = MapFile & "Moving Map Parameters = MM? These follow if they exist" & vbCrLf
MapFile = MapFile & "MM0,Yes" & vbCrLf
MapFile = MapFile & "MMPNUM,4" & vbCrLf
MapFile = MapFile & "MMPXY,1,0,0" & vbCrLf
MapFile = MapFile & "MMPXY,2," & IW & ",0" & vbCrLf
MapFile = MapFile & "MMPXY,3," & IW & "," & IH & vbCrLf
MapFile = MapFile & "MMPXY,4,0," & IH & vbCrLf ' пересчитается автоматом при сохранении карты
MapFile = MapFile & "MMPLL,1," & XY2LL(xBeg, yBeg, 2) & vbCrLf
MapFile = MapFile & "MMPLL,2," & XY2LL(xEnd + Trip, yBeg, 2) & vbCrLf
MapFile = MapFile & "MMPLL,3," & XY2LL(xEnd + Trip, yEnd - Trip, 2) & vbCrLf
MapFile = MapFile & "MMPLL,4," & XY2LL(xBeg, yEnd - Trip, 2) & vbCrLf
' Рассчет MM1B
Dim hd As Double, V As Double, LatMid As Double, xLonEnd2 As String
Dim xZap As Double, yZap As Double, xVos As Double, yVos As Double
LatMid = yLatEnd * pi / 180 ' широта по середине карты
V = a / (1 - (e2 * (Sin(LatMid) ^ 2) ^ 0.5))
ll = XY2LL(xEnd + Trip * 1.5, yEnd, 0) ' координаты правого нижнего угла
xLonEnd2 = CDbl(Mid(ll, 1, InStr(ll, "/") - 1))
xLonEnd2 = Int(xLonEnd * 1000000) / 1000000
xZap = V * Cos(LatMid) * Cos(xLonBeg * pi / 180) ' координаты левого края карты
yZap = V * Cos(LatMid) * Sin(xLonBeg * pi / 180)
xVos = V * Cos(LatMid) * Cos(xLonEnd2 * pi / 180) ' координаты правого края карты
yVos = V * Cos(LatMid) * Sin(xLonEnd2 * pi / 180)
hd = ((xVos - xZap) ^ 2 + (yVos - yZap) ^ 2) ^ 0.5 ' расстояние между краями
MM = CStr(hd / (xTrip * 256)) ' соотношение метры/точки, измеренное по горизонтали
MM = Left(MM, InStr(MM, ",") - 1) & "." & Mid(MM, InStr(MM, ",") + 1, 6)
MapFile = MapFile & "MM1B," & MM & vbCrLf ' пересчитается автоматом при сохранении карты в Ozi
MapFile = MapFile & "LL Grid Setup" & vbCrLf
MapFile = MapFile & "LLGRID,No,No Grid,Yes,255,16711680,0,No Labels,0,16777215,7,1,Yes,x" & vbCrLf
MapFile = MapFile & "Other Grid Setup" & vbCrLf
MapFile = MapFile & "GRGRID,Yes," & Grid & ",No,2933223,2933223,No Labels,0,16777215,8,1,Yes,No,No,x" & vbCrLf
MapFile = MapFile & "MOP,Map Open Position,0,0" & vbCrLf
MapFile = MapFile & "IWH,Map Image Width/Height," & IW & "," & IH

NameF = LCase(PathName)
If What = "map" Then NameF = NameF & "_m"
Call WriteF(PathSatt & NameF & ".map", MapFile)

Skip:
If Err.Number <> 0 Then Stat = "ошибка:" & Err.Number & ". " & Err.Description
End Function

Feel
Участник
# Дата: 31 Окт 2007 10:48
Ответить 


код перевода номеров блоков в координаты:

Option Compare Database
Option Explicit

'Эллипсоид WGS 84, долгота - longtitude, широта - latitude
Public Const a As Long = 6378137 'большая полуось эллипсоида, метр
'Public Const b As Long = 6356752 'малая полуось эллипсоида, метр (6356752.31425 ?)
Public Const f As Double = 298.25722 'обратное сжатие эллипсоида 1/f = a/(a - b)
Public Const e As Double = 0.081819191330509 'eccentricity e^2 = 2*f - f^2
Public Const e2 As Double = 0.006694380069978 'eccentricity square e2^2 = e^2 / (1-e^2)
'g = 1/f
'e = 2*g - g*g
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 b As Double = 2.7182818 'основание натур. логарифма
Public Const pi As Double = 3.14159265358979 'число пи
'rad = grad * pi / 180 'переводим градусы в радианы
'grad = rad * 180 / pi 'переводим радианы в градусы

Public Function XY2LL(xx As Long, yy As Long, ll As Long) As String
' Перевод координат СканЭкса в Широту-Долготу Mercator WGS84 на эллипсоиде
Dim x As Double, kko As Double, t As Double
Dim xLatN As Double, yLonE As Double, xLat As String, yLon As String
Dim yN As Long, xE As Long, LonNOr As Double, LatNOr As Double
On Error GoTo Skip
XY2LL = ""

' Левый верхний угол, в метрах на уровне 14 - 8метр/пикс, 2048 ед - 256 пикс
' поправки для центра снимка; не изменять на полквадрата для левого верхнего угла снимка
xE = xx '+ trip / 2 'easting measured from the grid origin
yN = yy '- trip / 2 'northing measured from the grid origin
xE = xE - 16 ' !!! поправка западного смещения, метры
yN = yN + 16 ' !!! поправка северного смещения, метры

LonNOr = LonNO * pi / 180
LatNOr = LatNO * pi / 180
kko = Cos(LatNOr) / (1 - (e ^ 2) * (Sin(LatNOr)) ^ 2) ^ 0.5

' Latitude
t = b ^ ((FN - yN) / (a * kko))
x = pi / 2 - 2 * Atn(t)
xLatN = 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)
xLat = CStr(xLatN * 180 / pi)
xLat = CStr(Int((xLatN * 180 / pi) * 1000000) / 1000000)

' Longitude
yLonE = ((xE - FE) / (a * kko)) + LatNOr
yLon = CStr(Int((yLonE * 180 / pi) * 10000000) / 10000000)

' Вывод в формате по требованию
If ll = 0 Then
XY2LL = yLon & "/" & xLat
ElseIf ll = 1 Then
xLat = Left(xLat, 2) & "." & Mid(xLat, 4, 6)
yLon = Left(yLon, 2) & "." & Mid(yLon, 4, 6)
XY2LL = "x=" & yLon & "&y=" & xLat
ElseIf ll = 2 Then
xLat = Left(xLat, 2) & "." & Mid(xLat, 4, 6)
yLon = Left(yLon, 2) & "." & Mid(yLon, 4, 6)
XY2LL = " " & yLon & ", " & xLat
End If

Skip:
End Function

Public Function GMS2G(Degree_Deg As String) As Double
' Перевод Град°Мин'Сек в десятичные градусы используя разделители
Dim degrees As Double, minutes As Double, seconds As Double
degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, "°") - 2)) / 60
seconds = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "'") + 2, Len(Degree_Deg) - InStr(1, Degree_Deg, "'") - 2)) / 3600
GMS2G = degrees + minutes + seconds
End Function

Public Function G2GMS(Decimal_Deg As Double) As String
' Перевод десятичных градусов в Град°Мин'Сек
Dim degrees As Long, minutes As Double, seconds As Double
G2GMS = ""
degrees = Int(Decimal_Deg)
minutes = (Decimal_Deg - degrees) * 60
seconds = Format(((minutes - Int(minutes)) * 60), "0")
' для обычного текста
G2GMS = degrees & "°" & Int(minutes) & "'" & seconds
' для мап-файла ози
If Int(minutes) < 10 Then G2GMS = degrees & ", " & Int(minutes) & "." & Right(Format(minutes, "00.0000"), 4) _
Else G2GMS = degrees & ", " & Int(minutes) & "." & Right(Format(minutes, "00.0000"), 4)
End Function

Feel
Участник
# Дата: 31 Окт 2007 10:53
Ответить 


привязка идет не по углам блоков, а по серединам крайних квадратов (128 пикс), но!
имеется устойчивое смещение привязки от снятых на местности точек, для чего опытным путем вставлены поправки в коде Public Function XY2LL:
xE = xE - 16 ' !!! поправка западного смещения, метры
yN = yN + 16 ' !!! поправка северного смещения, метры

ну и все - для сканекса онли...
буду рад за возможный ликбез, заранее мерси :)

lalex
Участник
# Дата: 31 Окт 2007 13:40 - Поправил: lalex
Ответить 


Привет на форуме.

Здорово звучит "извиняюсь за VBA" - Эт по нашему... :D
Ответил по почте, здесь только повторю - 16 метров не должно быть, где-то нестыковочка в алгоритмах...

Сначала нужно отмести пересчет широты-долготы в меркатора, на практике он не обязателен. В ОЗИ, насколько я знаю, можно привязывать сразу в заданной проекции, т.е. прямо в меркаторских координатах. Остается пересчет чисто на плоскости, в прямоугольных и там поймать эту нестыковку будет легче. Ссылка на "правильный" подход к ОЗИ-привязке вот.
http://meteoclub.ru/index.php?action=vthread&forum=8&topic=113&page=3
Как можно видеть там по ссылке, градусы не используются, проекцией "занимается" сам ОЗИ. Растр привязывается в той проекции, в которой был изначально сделан.

Да, и не может быть "широта-долгота меркатор WGS-84".
Меркаторские XY имеют вид миллионов метров, широта-долгота это уже не меркатор, а "географические координаты", или географическая проекция", словом, градусы. Впрочем, может это к делу не относится. Скорее всего, "координаты Сканэкса" это меркаторские и есть (именно они мелькают в строке статуса - вызова блоков). Тогда формула расчета широты выглядит сложновато, вроде попроще она была - я поищу свои тексты и первоисточник, проверю.

Впрочем, если чего, всегда рад. Можно даже созвониться.

. 1 . 2 . 3 . 4 . 5 . 6 . >>
Ваш ответ
Bold Style  Italic Style  Underlined Style  Image Link  URL Link 

» Логин  » Пароль 
Только зарегистрированные пользователи могут здесь постить. Авторизуйтесь для отправки сообщений, или зарегистрируйтесь сейчас.
 

Поддержка: web forum software miniBB™ © 2001-2017