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

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


2 сообщения - хорошее и плохое.
начну с последнего!
КАЮСЬ!
я нашел ошибку с привязкой космоснимков и яндекса, связанную с округлениями. Но я ее исправил. обновленный файл на сайте.

Хорошее. Из достоверных (абсолютно) источников узнал, что Яндекс немного сдвигал на последних масштабах снимки, чтобы подогнать их под свой вектор. На остальных все должно быть нормально.

"таки вот у нас пироги ..." (с) Брюс Всемогущий

p.s. манией величия не страдаю, по описанным выше причинам.

ognivo777
Участник
# Дата: 3 Мар 2009 15:24
Ответить 


Вобщем долго разбираясь в исходниках скриптов яндекса, читая этот форум написал таки адекватные функции для работы с привязкой яндекс-карт. Функции на 99% взяты из скрипта яндекса, поэтому гарантированно рабочие. Итак:

public class YandexUtils {

public static DoublePoint geoToMercator(DoublePoint g) {
double d = g.x * Math.PI / 180, m = g.y * Math.PI / 180, l = 6378137, k = 0.0818191908426, f = k * Math.sin(m);
double h = Math.tan(Math.PI / 4 + m / 2), j = Math.pow(Math.tan(Math.PI / 4 + Math.asin(f) / 2), k), i = h / j;
// return new DoublePoint(Math.round(l * d), Math.round(l * Math.log(i)));
return new DoublePoint(l * d, l * Math.log(i));
}


public static DoublePoint mercatorToGeo(DoublePoint e) {
double j = Math.PI, f = j / 2, i = 6378137, n = 0.003356551468879694, k = 0.00000657187271079536, h = 1.764564338702e-8, m = 5.328478445e-11;
double g = f - 2 * Math.atan(1 / Math.exp(e.y / i));
double l = g + n * Math.sin(2 * g) + k * Math.sin(4 * g) + h * Math.sin(6 * g) + m * Math.sin(8 * g);
double d = e.x / i;
return new DoublePoint(d * 180 / Math.PI, l * 180 / Math.PI);
}

public static DoublePoint mercatorToTiles(DoublePoint e) {
double d = Math.round((20037508.342789 + e.x) * 53.5865938), f = Math.round((20037508.342789 - e.y) * 53.5865938);
d = boundaryRestrict(d, 0, 2147483647);
f = boundaryRestrict(f, 0, 2147483647);
return new DoublePoint(d, f);
}


public static DoublePoint tileToMercator(IntPoint d) {
return new DoublePoint(Math.round(d.x / 53.5865938 - 20037508.342789), Math.round(20037508.342789 - d.y / 53.5865938));
}


public static DoublePoint tileCoordinatesToPixels(DoublePoint i, int h) {
double g = Math.pow(2, toScale(h));
return new DoublePoint((int) i.x / g, (int) i.y / g);
}

public static double boundaryRestrict(double f, double e, double d) {
return Math.max(Math.min(f, d), e);
}

public static int toScale(int i) {
return 23 - i;
}

public static IntPoint getTile(DoublePoint h, int i) {
long e = 8;
long j = toScale(i), g = (long) h.x >> j, f = (long) h.y >> j;
return new IntPoint(g >> e, f >> e);
}

public static IntPoint getPxCoordFromTileCoord(DoublePoint h, int i) {
long j = toScale(i), g = (long) h.x >> j, f = (long) h.y >> j;
return new IntPoint(g, f);
}

public static IntPoint getTileCoordFromPixCoord(IntPoint h, int i) {
long j = toScale(i), g = h.x << j, f = h.y << j;
return new IntPoint(g, f);
}


}

Для гугла есть такой же класс, правда рализованный на основе "народной" информации. Но вроде бы тоже работает.

geologic
Участник
# Дата: 3 Мар 2009 16:10
Ответить 


ну прямо сборник открытых гео-кодов получается,
то о чем мечтал Dwarwood

Спасибо от лица ;)

Ivan244
Участник
# Дата: 6 Июн 2009 09:57
Ответить 


Господа!
Спасибо вам за ваши 6 страниц выше! В результате я добавил Яндекс в свою программу "Бродилка". Я не знаю, за что вы боролись и что создаёте, но я приглашаю вас забежать на мой сайт gpstic ru, может пригодится для чего...

Благодарю еще раз!!!

geologic
Участник
# Дата: 8 Июн 2009 12:16 - Поправил: geologic
Ответить 


Забежал - весьма симпатично, и сайт и программы. Первая, "Бродилка", аналог SAS, как я понял, только попроще-понагляднее. Вторая, "Водилка"... Понятно, зачем вторая, при случае надо бы и ее затестить.

На самом деле и Яндекс, и Сканекс, да и гугл теперь работают практически по одному алгоритму, различается только проекция (немного), ну и формат строки вызова. По примеру SAS можно ставить карты на поток (отдать пользователю все настройки). Таким образом устроена и наша новая "гляделка" для ГИС - TilesOnline.

Бороться ни за что не боремся: так, существуем по мере сил в гео-пространстве ;)

azya
Участник
# Дата: 8 Июн 2009 15:33
Ответить 


Ivan244
Я вот что то не понял как загружать дальше 6 зума.
>Первая, "Бродилка", аналог SAS, как я понял, только попроще-понагляднее
Помоему не совсем, программа нацелена на работу с достаточно большими (кстати уже при разрешении растра 8000*8000 работать трудно - больно притормаживает) растрами а не с тайлами. Скорее аналог Ozi.

Ivan244
Участник
# Дата: 8 Июн 2009 22:46
Ответить 


1. Спасибо, что не послали, а завязали разгоаор!
2. Откройте карту Мира и выберите (правой кнопкой мыши)загрузку половины "Глобуса". Там будут предложены уровни меньше 6-го. Если выбрать область 2х2 пиксела, то будут уровни гораздо больше. Или, скачав пол глобуса, следующую выборку сделать уже на результате предыдущего (более общего) скачивания. Т.е. приближаемся к детализации раиона предстоящего маршрута.
3. С большими файлами работать действительно трудно, но можно. В общих настройках, в разделе Карта-пустая карта и память, укажите "Не использовать память". Тогда карта будет "летать" (после долгой загрузки), но точки, треки и маршруты будут "моргать" при скроллинге. Для навигации с GPS это плохо.
4. Программа затачивалась именно под навигацию по растровым картам, отсюда и некие недостатки с точки зрения гисовских приложений. Плюс - одному на всё времени не хватает, еще и на работу надо ходить.
Всё пока.

geologic
Участник
# Дата: 9 Июн 2009 11:11
Ответить 


А почему собственно посылать, тема как раз для таких вот программ - и необязательно бесплатных, кстати. Всем интересно знать, что есть на полках, какие инструменты.

Иван, а не могли бы вы обозначить самостоятельно, для чего, для каких именно задач ваша программма? Я понимаю, что "Бродилка" для ноутбука, Водилка для PDA... Но как-то затрудняюсь в остальном. Как лучше использовать, сначала скачать, потом Бродить, или можно онлайн? И нельзя ли скачать через SAS, а к вам сымпортить с map- файлом?

Насчет того, что SAS - это ГИС, вы не правы - даже и не пахнет. Это "Гляделка-качалка", примерно как GEarth, но попроще в изобразиловке, посильнее в остальном. надеюсь, я правильно обозначил ;) Да и если нетрудно, Azya, то можно услышать как у вас с GPS, личное мнение автора, тскать? Может вы одну нишу занимаете... Интересно разобраться, а то столько всего разного, тестить не успеваешь ;0

azya
Участник
# Дата: 9 Июн 2009 14:41
Ответить 


>И нельзя ли скачать через SAS, а к вам сымпортить с map- файлом?
Можно, я пробовал.
>SAS - это ГИС
Боже упоси) А где это было сказано?
>Это "Гляделка-качалка", примерно как GEarth, но попроще в изобразиловке, посильнее в остальном
Лучше и не скажеш)
>как у вас с GPS
Сильно этот момент не прорабатываю, потому как рано еще позиционироать SAS.Планета как программу для навигации, хотя люди пользуются и GPS, поэтому по возможности стараюсь улучшать функционал.
>Может вы одну нишу занимаете
Врядли, я же говорю, что Бродилка работает с большими растрами, и загруженные тайлы тоже объединяет как я понял в большой растр, и позиционируется именно как программа для навигации. Планета же сейчас в первую очередь, как я представляю - средство скачать карты/снимки.

geologic
Участник
# Дата: 9 Июн 2009 17:48 - Поправил: geologic
Ответить 


>SAS - это ГИС
так Ivan решил. У GPS-овцев есть такой пунктик - весь софт кроме "своего" они считают довольно сложными "ГИСами" ;)

Для меня Планета прежде всего гляделка, давно уже никаких картин не скачиваю - не из-за предубеждения, а так, суета надоела. А вот поглядеть разнообразные места на планете с разных точек зрения очень уважаю. Из-за вас перестал даже на викимапию лазить ;)

Ежели у вас GPS будет работать хотяб слегка, дальше дело техники - скачал в кэш нужный уровень/слой, отключил интернет, поехал в лес с прибором. А, да, но карты ведь еще, как Ivan у себя верно заметил - так шо пусть процветает и его "Бродилка" :(

azya
Участник
# Дата: 9 Июн 2009 21:30
Ответить 


>Ежели у вас GPS будет работать хотяб слегка, дальше дело техники - скачал в кэш нужный уровень/слой, отключил интернет, поехал в лес с прибором
Ну так примерно и сейчас есть.

Ivan244
Участник
# Дата: 9 Июн 2009 22:42
Ответить 


Я встряну и немножко поотвечаю :)
>или можно онлайн? В Бродилке можно. В общих настройках->Internet-"Если координаты есть, а карты нет". Если там галочка, то будет скачена область, размером 1х1 градус с центром в текущей позиции. С дефолтного источника и дефолтного типа (всё в настройках). когда карта "закончится", будет подкачен очередной кусок 1х1....и т.д.

>>SAS - это ГИС
>так Ivan решил. Я не говорил, что SAS это ГИС. я сказал дословно "...отсюда и некие недостатки с точки зрения гисовских приложений". Там даже в контексте SAS не упоминался/лось/лась :)

>У GPS-овцев есть такой пунктик - весь софт кроме "своего" они считают довольно сложными "ГИСами" ;) Вообще-то я геодезист, но всёравно не обиделся :)

Теперь самый длинный ответ про > для каких именно задач ваша программма? История была такая. Контора, с которой я в тесных отношениях (не основная работа) разрабатывает и производит оборудование и ПО для обследования подводных трубопроводов (нефть, газ...). Навигация по съмочным галсам велась нашим ПО по растровым/векторным картам заказчиков. На мелких речках работы ведутся с лодок. С бурным процветанием бардака в стране, пьяные полевики стали ронять ноутбуки за борт, а заказчики зачастую перестали предоставлять карты ниток. "Да мы тут зимой кроки набросали... ну, там она где то пролегла..." В результате, пьяную проблему решил программой для КПК (его топить дешевле), а карты стал качать с Гугла. Было это 5 лет назад. Через пару лет мы заметили, что работники геодезических партий стали использовать съемочные КПК как навигаторы для передвижения по своим сибирям (Ozi им сложной показался). Тогда я и сделал "простенький" комплекс из мобильного навигатора и оффисной программы подготовки карт и данных. Просто выкинул всю съемочную требуху. Так что это просто комплект программ для дармовой навигации. Побочный продукт, который стал занимать меня больше, чем основной. Сам я пользуюсь Водилкой и Бродилкой в Греции, когда на майские рассекаю на яхте между островами. Вот так, примерно.

geologic
Участник
# Дата: 10 Июн 2009 10:43 - Поправил: geologic
Ответить 


Да, интересный комплект, чувствуется профессиональная подоплека - галсы там какие-то... в любом случае, думаю, будем тестить-широко освещать. Я сам с GPS особо не развлекаюсь, привык по обычной карте работать. Координаты получаем в больших количествах, на работе надоедает с ними... Но надо, надо вникать.

Значит, импорт привязки растров есть у вас... Я, например, привык вязать в ГИСах.

Ivan244
Участник
# Дата: 10 Июн 2009 22:40
Ответить 


Боюсь, мой импорт привязки растров слишком убог для вас. Я не уделял достаточно внимания совместимости с другими форматами привязки.

geologic
Участник
# Дата: 11 Июн 2009 10:47
Ответить 


Погляжу при случае. Для начала достаточно через .map, как во всяком таком софте практикуется. Для бытовых задач и приборов точность вполне достаточная, а вот когда вяжешь целые страны, тогда не всегда - IMHO ;)

Спасиб за разъяснения.

SilverIce
Участник
# Дата: 28 Фев 2011 17:05
Ответить 


Ещё две функции, для обратного преобразования (тайлы в координаты)
public static DoublePoint ReGetTile(DoublePoint h, int i)
{
long e = 8;
long j = toScale(i);
long g = (long)h.x << (int)j;
long f = (long)h.y << (int)j;
double ge = g << (int)e;
double fe = f << (int)e;
long g2 = (long)(h.x+1) << (int)j;
long f2 = (long)(h.y+1) << (int)j;
double ge2 = g2 << (int)e;
double fe2 = f2 << (int)e;

double ad_g = (ge2 - ge) * (h.x - System.Math.Floor(h.x));
double ad_f = (fe2 - fe) * (h.y - System.Math.Floor(h.y));

return new DoublePoint(ge + ad_g, fe+ad_f);
}

public static DoublePoint ReGetTile(IntPoint h, int i)
{
long e = 8;
long j = toScale(i);
long g = (long)h.x << (int)j;
long f = (long)h.y << (int)j;
return new DoublePoint(g << (int)e, f << (int)e);
}

geologic
Участник
# Дата: 1 Мар 2011 00:07
Ответить 


а можно с комментами - для совсем геологов ;)

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

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

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