Перейти к содержимому


Фотография

Утилиты помогающие в картописательстве


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 532

#41 Vovanchik

Vovanchik

    Комсорг

  • Резидент клуба
  • PipPipPipPipPip
  • 7 614 сообщений
  • Пол:Мужчина
  • Город:Алматы
  • Интересы:Треки и письма слать сюда: map_kazсобакаmail.ru

Отправлено 06 Ноябрь 2009 - 10:49

Перезалил утилиту "Полилинии"- исправлено по заказу Вагнера

Сообщение отредактировал Vovanchik: 06 Ноябрь 2009 - 10:50

"Это невозможно" - сказала Причина.
"Это безрассудно" - заметил Опыт.
"Это бесполезно" - отрезала Гордость.
"Попробуй..." - шепнула Мечта.
"Это что б@#ть, такое!!!????" - прокричал Анус, 5 минут позже.

#42 lomnik

lomnik

    Профессионал

  • Активисты
  • PipPipPipPip
  • 252 сообщений
  • Пол:Мужчина
  • Город:Павлодар
  • Интересы:Технарь

Отправлено 06 Ноябрь 2009 - 12:56

Нашел, скачал, не знаю зачем: Mapinfo 10 http://xrust.ru/soft...o-vertical.html там вроде 3D рисовать можно

Сообщение отредактировал lomnik: 06 Ноябрь 2009 - 12:57


#43 Cnfhbr

Cnfhbr

    Гуру картографии

  • Консультанты
  • PipPipPipPipPip
  • 1 449 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 06 Ноябрь 2009 - 14:09

Vovka & Vovanchik,
если я правильно понял из переписки в ветке, сейчас для скачивания доступна уже 3-я бетка утилиты Polylines (1 - стартовая, 2 - с учетом проблемы VLADIMIR'а, 3 - с учетом пожелания wagner'а). Не исключено, что будут ещё доработки. Если не затруднит, кладите в архивчик CHANGELOG, а также желательно обозначать как-то каждую измененную версию, например: v1.03 или v1.03beta.
А утилитки обе - нужны и актуальны, благодарность авторам! ;)

#44 Vovka

Vovka

    Гуру картографии

  • Картописатели
  • PipPipPipPipPip
  • 518 сообщений
  • Пол:Мужчина
  • Город:Усть-Каменогорск

Отправлено 06 Ноябрь 2009 - 15:34

Да уже задумались над версионностью. Если что еще изменится - добавлю информацию о версии.

#45 Cnfhbr

Cnfhbr

    Гуру картографии

  • Консультанты
  • PipPipPipPipPip
  • 1 449 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 06 Ноябрь 2009 - 15:41

И кратенький CHANGELOG желательно: что там конкретно исправлено, изменено или добавлено.

#46 Vovanchik

Vovanchik

    Комсорг

  • Резидент клуба
  • PipPipPipPipPip
  • 7 614 сообщений
  • Пол:Мужчина
  • Город:Алматы
  • Интересы:Треки и письма слать сюда: map_kazсобакаmail.ru

Отправлено 09 Ноябрь 2009 - 19:52

Анонсирую: Вовка заканчивает утилиту по выявлению дубликатов объектов на карте, что не выявляются средствами Мапэдита... Я уже удалил все лишние POI - отработаем выложу сюда... ;)
"Это невозможно" - сказала Причина.
"Это безрассудно" - заметил Опыт.
"Это бесполезно" - отрезала Гордость.
"Попробуй..." - шепнула Мечта.
"Это что б@#ть, такое!!!????" - прокричал Анус, 5 минут позже.

#47 Vovanchik

Vovanchik

    Комсорг

  • Резидент клуба
  • PipPipPipPipPip
  • 7 614 сообщений
  • Пол:Мужчина
  • Город:Алматы
  • Интересы:Треки и письма слать сюда: map_kazсобакаmail.ru

Отправлено 10 Ноябрь 2009 - 08:53

Кто у нас умный? Как расчитать... Есть 2 точки на растоянии 50 метров друг от друга, какая это величина в тысячных грудуса, т.е в координатах, есть какая-нибудь формула пересчета? Или это величина не постоянная, и зависит от широты местности? Просветите, кто знает...

Сообщение отредактировал Vovanchik: 10 Ноябрь 2009 - 08:54

"Это невозможно" - сказала Причина.
"Это безрассудно" - заметил Опыт.
"Это бесполезно" - отрезала Гордость.
"Попробуй..." - шепнула Мечта.
"Это что б@#ть, такое!!!????" - прокричал Анус, 5 минут позже.

#48 lomnik

lomnik

    Профессионал

  • Активисты
  • PipPipPipPip
  • 252 сообщений
  • Пол:Мужчина
  • Город:Павлодар
  • Интересы:Технарь

Отправлено 10 Ноябрь 2009 - 10:52

Интересная статья по этому поводу http://tvsh2004.narod.ru/geo_koor.htm Цитата: Длина дуги меридиана (дуги экватора, дуги окружности большого круга) в 1°, 1′ и 1″ равна соответственно: 111 197 м (111,2 км), 1852 м (1,852 км) и 30,9 м. Обсуждение схожей проблемы нашел тут http://forum.sources...mp;view=showall Надеюсь есть координаты этих двух точек? тогда тут http://gis-lab.info/...at-circles.html можно почитать и подсчитать, а тут http://gis-lab.info/...le-distance.zip пример расчёта в екселе.

Сообщение отредактировал lomnik: 10 Ноябрь 2009 - 17:21


#49 Vovanchik

Vovanchik

    Комсорг

  • Резидент клуба
  • PipPipPipPipPip
  • 7 614 сообщений
  • Пол:Мужчина
  • Город:Алматы
  • Интересы:Треки и письма слать сюда: map_kazсобакаmail.ru

Отправлено 10 Ноябрь 2009 - 12:27

Вышла новая версия Утилиты для индексации... Внимательно читаем хелп вложенный в архив... а потом уже запускаем утилиту...
В кратце утилита
1. Индексирует населенные пункты
2. Находит дубликаты ПОИ
3. Индексирует все ПОИ и полилинии полностью "вложенные" в полигон населенного пункта.

Удалил старую версию...

Сообщение отредактировал Vovanchik: 11 Ноябрь 2009 - 15:34

"Это невозможно" - сказала Причина.
"Это безрассудно" - заметил Опыт.
"Это бесполезно" - отрезала Гордость.
"Попробуй..." - шепнула Мечта.
"Это что б@#ть, такое!!!????" - прокричал Анус, 5 минут позже.

#50 St.Ranger

St.Ranger

    Гуру картографии

  • Консультанты
  • PipPipPipPipPip
  • 1 285 сообщений
  • Пол:Мужчина
  • Город:Караганда

Отправлено 10 Ноябрь 2009 - 15:34

Кто у нас умный? Как расчитать... Есть 2 точки на растоянии 50 метров друг от друга, какая это величина в тысячных грудуса, т.е в координатах, есть какая-нибудь формула пересчета? Или это величина не постоянная, и зависит от широты местности? Просветите, кто знает...

Для WM калькулятор CooCalcCE http://stacked-softw...d.ru/index.html

Я автору задавал вопрос насчет формул пересчёта, вот ответ:

Здравствуйте, St.Ranger!
Спасибо ) Писал программу для себя, рад, что кому-то пригодилась.
В преобразовании географических координат я не силён, все формулы брал
из Интернета.

Как переводить радианы-градусы-минуты-секунды между собой, думаю,
рассказывать не нужно )
А остальными формулами поделюсь (писал на C#):

// Константы, используемые в нижеследующих расчётах
private static double EarthRadiusEq = 6378245; // радиус Земли
на экваторе (м)
private static double EarthRadiusPol = 6356863; // радиус Земли
на полюсе (м)
private static double EarthEccentricity2 = 1 -
Math.Pow(EarthRadiusPol, 2) / Math.Pow(EarthRadiusEq, 2); // квадрат
эксцентриситета Земли

1. Расчёт расстояния между двумя точками:
// The Haversine formula according to Dr. Math.
(http://mathforum.org...view/51879.html)
// (см. также
http://www.movable-t...s/latlong.html)
// (см. также http://gis-lab.info/...t-circles.html)
double Lat1InRad = широта 1-ой точки в радианах
double Long1InRad = долгота 1-ой точки в радианах
double Lat2InRad = широта 2-ой точки в радианах
double Long2InRad = долгота 2-ой точки в радианах

double dLongitude = Long2InRad - Long1InRad;
double dLatitude = Lat2InRad - Lat1InRad;

// Intermediate result a
double a = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) +
Math.Cos(Lat1InRad) * Math.Cos(Lat2InRad) *
Math.Pow(Math.Sin(dLongitude / 2.0), 2.0);

// Intermediate result c (great circle distance in Radians)
double c = 2.0 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1.0 - a));

// Вычисляем радиус Земли по средней широте точек
// (http://www.movable-t...is-faq-5.1.html)
double R = EarthRadiusEq - (EarthRadiusEq - EarthRadiusPol)
* Math.Sin((Lat1InRad + Lat2InRad) / 2);

double Result = R * c; // расстояние между точками

2. Расчёт азимута на точку 2
// Формулы расчёта взяты отсюда:
// http://www.movable-t...ts/latlong.html
double Lat1InRad = широта 1-ой точки в радианах
double Long1InRad = долгота 1-ой точки в радианах
double Lat2InRad = широта 2-ой точки в радианах
double Long2InRad = долгота 2-ой точки в радианах

double dLongitude = Long2InRad - Long1InRad;

double y = Math.Sin(dLongitude) * Math.Cos(Lat2InRad);
double x = Math.Cos(Lat1InRad) * Math.Sin(Lat2InRad) -
Math.Sin(Lat1InRad) * Math.Cos(Lat2InRad) * Math.Cos(dLongitude);
double Result = Math.Atan2(y, x) / (Math.PI / 180.0);
Result = (Result + 360) % 360; // азимут на 2-ю точку в
градусах

3. Расчёт координат точки 2 по заданному расстоянию и азимуту
относительно точки 1
// Формулы расчёта взяты отсюда:
// http://www.movable-t...ts/latlong.html
// http://www.movable-t...is-faq-5.1.html
double Lat1InRad = широта 1-ой точки в радианах
double Long1InRad = долгота 1-ой точки в радианах
double Distance = расстояние до точки 2 в метрах
double Bearing = азимут на точку 2 в градусах

double R = EarthRadiusEq - (EarthRadiusEq - EarthRadiusPol)
* Math.Sin(Lat1InRad);
Bearing = Bearing * (Math.PI / 180.0); // азимут в
радианах
double Lat2InRad = //
широта 2-ой точки в радианах
Math.Asin(Math.Sin(Lat1InRad) * Math.Cos(Distance / R) +
Math.Cos(Lat1InRad) * Math.Sin(Distance / R) *
Math.Cos(Bearing));
double Long2InRad = Long1InRad + // долгота 2-ой
точки в радианах
Math.Atan2(Math.Sin(Bearing) * Math.Sin(Distance / R) *
Math.Cos(Lat1InRad),
Math.Cos(Distance / R) - Math.Sin(Lat1InRad) *
Math.Sin(Lat2InRad));

С уважением, Сергей



#51 chnav

chnav

    Гуру картографии

  • Пользователь
  • PipPipPipPipPip
  • 1 294 сообщений
  • Пол:Мужчина
  • Город:Рудный (малая родина)

Отправлено 10 Ноябрь 2009 - 16:52

Есть 2 точки на растоянии 50 метров друг от друга, какая это величина в тысячных грудуса, т.е в координатах, есть какая-нибудь формула пересчета?

Трехэтажные формулы для таких расстояний не нужны, можно смело делать допущение что земля это сфера и расчеты вести на плоскости.
Надо запомнить пару констант, и все расчеты вести от них
Одна минута широты = 1 морская миля = 1852м
а если и эта константа слишком сложная то
Один градус ШИРОТЫ = один градус долготы на экваторе = 111км
Один градус ДОЛГОТЫ = один градус долготы на экваторе * COS(широты) = 111км * COS(широты)

Пример, г.Караганда
один градус широты = 111000м
один градус долготы = 111000 * COS(49.85) = 71570м

Для наших авто-применений этой точности вполне достаточно.

Сообщение отредактировал chnav: 10 Ноябрь 2009 - 17:02


#52 lomnik

lomnik

    Профессионал

  • Активисты
  • PipPipPipPip
  • 252 сообщений
  • Пол:Мужчина
  • Город:Павлодар
  • Интересы:Технарь

Отправлено 10 Ноябрь 2009 - 17:17

чуток подправил свой предыдущий ответ, прошу прощения за шум в эфире... в целом, chnav прав!

Сообщение отредактировал lomnik: 10 Ноябрь 2009 - 17:20


#53 Cnfhbr

Cnfhbr

    Гуру картографии

  • Консультанты
  • PipPipPipPipPip
  • 1 449 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 10 Ноябрь 2009 - 17:59

При обработке 70-метрового полиша утилитой CityIdx_v1.03b с включенной галкой "Найти дубликаты ПОИ", похоже, не хватает памяти в массивах, при выключенной галке - нормально.
WinXP Pro SP3
AMD Athlon[tm] 64x2 Dual
Core Processor 3800+
2.01 ГГц, 2.00 ГБ ОЗУ
Попытка обмануть фреймворк на ХР, в данном случае, не спасает, хотя для предыдущей версии утилиты помогало.
Коэффициент дубликации уменьшал и увеличивал на порядок - не помогает.
Исходник и результаты тестирования здесь.

#54 Vovka

Vovka

    Гуру картографии

  • Картописатели
  • PipPipPipPipPip
  • 518 сообщений
  • Пол:Мужчина
  • Город:Усть-Каменогорск

Отправлено 10 Ноябрь 2009 - 20:52

Один градус ШИРОТЫ = один градус долготы на экваторе = 111км
Один градус ДОЛГОТЫ = один градус долготы на экваторе * COS(широты) = 111км * COS(широты)


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

Сообщение отредактировал Vovka: 10 Ноябрь 2009 - 20:53


#55 Vovka

Vovka

    Гуру картографии

  • Картописатели
  • PipPipPipPipPip
  • 518 сообщений
  • Пол:Мужчина
  • Город:Усть-Каменогорск

Отправлено 10 Ноябрь 2009 - 20:58

При обработке 70-метрового полиша утилитой CityIdx_v1.03b с включенной галкой "Найти дубликаты ПОИ", похоже, не хватает памяти в массивах, при выключенной галке - нормально.

Исправил кое что, будет работать медленнее, но надежнее. Вованчик потестит, выложит.
Памяти не хватает из-за "прямолинейной" организации памяти в массивах фреймвока. Огромный массив в утилите получался когда все текстовые данные конвертировались в кодовую страницу 1251. Внутри фреймвоковских программы основной формат данных уникод, поэтому и приходится читать 1251, работать с ним как с уникодом, потом опять в 1251.

#56 Vovanchik

Vovanchik

    Комсорг

  • Резидент клуба
  • PipPipPipPipPip
  • 7 614 сообщений
  • Пол:Мужчина
  • Город:Алматы
  • Интересы:Треки и письма слать сюда: map_kazсобакаmail.ru

Отправлено 10 Ноябрь 2009 - 23:56

Ну как хоть работает утилита на полише меньше чем 200 метров? Оте жаксы или пипец? У кого-нибудь прошла утилита, у меня на карте в 42 метра на ура... большего не было скормить...
"Это невозможно" - сказала Причина.
"Это безрассудно" - заметил Опыт.
"Это бесполезно" - отрезала Гордость.
"Попробуй..." - шепнула Мечта.
"Это что б@#ть, такое!!!????" - прокричал Анус, 5 минут позже.

#57 Miner

Miner

    Гуру картографии

  • Резидент клуба
  • PipPipPipPipPip
  • 4 566 сообщений
  • Пол:Мужчина
  • Город:Омск
  • Интересы:Путешествия, туризм, GPS-навигация

Отправлено 11 Ноябрь 2009 - 02:54

Новую тему не стал открывать, наткнулся в и-нете на вот это, вдруг кому пригодится..
Сайт "Космоснимки"

Ну не могу я засунуть свой язык в задницу! Ведь там уже и шило, и диплом, и мечты о светлом будущем


#58 lomnik

lomnik

    Профессионал

  • Активисты
  • PipPipPipPip
  • 252 сообщений
  • Пол:Мужчина
  • Город:Павлодар
  • Интересы:Технарь

Отправлено 11 Ноябрь 2009 - 10:02

http://gehtsoft.ru/e.../misc_MMA.shtml
Map-maker assistant.
Программа предназначена для облегчения некоторых рутинных операций при работе с картами в формате OziExplorer.
Основные задачи приложения:
- Создание заготовок для привязки карт ГШ СССР (проекция Гаусса-Крюгера, датум - Пулково 1942). Для окончательной привязки достаточно перетащить точки привязки в нужные мечта карты (углы, центр карты, центры сторон - в зависимости от числа точек привязки). В отличии от первой версии поддерживаются и северное и южное полушария.
- Обработка списка привязанных карт
Инструкция по привязке карт для Озика http://www.realbiker...rer/cmaps.shtml

На сколько я понял суда даём ссылки вне зависимости от программы?

Сообщение отредактировал lomnik: 11 Ноябрь 2009 - 10:22


#59 Cnfhbr

Cnfhbr

    Гуру картографии

  • Консультанты
  • PipPipPipPipPip
  • 1 449 сообщений
  • Пол:Мужчина
  • Город:Алматы

Отправлено 11 Ноябрь 2009 - 10:41

Ну как хоть работает утилита на полише меньше чем 200 метров? Оте жаксы или пипец? У кого-нибудь прошла утилита, у меня на карте в 42 метра на ура... большего не было скормить...

Попробуйте скормить биговскую 70 МБ (я вчера выкладывал архивчик в ветке). У меня первый этап (индексация) проходит успешно, но в процессе этого сжирает всю память, и уже на следующий шаг (работа с дубликатами ПОИ) памяти в массивах фреймворка не хватает, т.е. утилита останавливается с ругательством на исключение "System.OutOfMemoryException". :rolleyes:

#60 Vovka

Vovka

    Гуру картографии

  • Картописатели
  • PipPipPipPipPip
  • 518 сообщений
  • Пол:Мужчина
  • Город:Усть-Каменогорск

Отправлено 11 Ноябрь 2009 - 15:27

Map-maker assistant.

Все ссылки хороши! По этим узнал о существовании Ozi API for .NET.
По ссылке Miner блог интересный, очень даже в тему раздела мелькает инфа там.


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных