На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты
АРХИВ ФОРУМА...
здесь вы можете ознакомиться с материалами форума до 08.06.2008

Winmobile

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS Panorama Mobile
Страницы: Пред. 1 2 3 4 5
RSS
Winmobile, Программа для КПК
 
Подскажите, кто знает? Необходима программа на кпк для определения координат своего местоположения с отображением их на карте в СИСТЕМЕ ГАУСА-КРЮГЕРА.
 
Гаусса-Крюгера - это проекция. Математически она соответствует проекции UTM, но имеет отличие в масштабе на осевом меридиане: 1,0 вместо 0,9996.

Геодезические координаты своего местоположения можно определить и без дополнительных программ. На КПК они присутствуют, как правило, изначально при продаже. Координаты отображаются обычно на эллипсоиде WGS-84, они примерно соответствуют координатам на эллипсоиде ПЗ-90.02 (разница в метрах).

Программу для КПК можно скачать здесь:
http://gistoolkit.ru/download/panoramamobile.zip

В исходных текстах программы можно установить вывод координат в любой системе средствами MAPAPI:
http://gistoolkit.ru/download/gtkmobile.zip
 
Цитата
Oleg Belenkov пишет:
Гаусса-Крюгера - это проекция. Математически она соответствует проекции UTM, но имеет отличие в масштабе на осевом меридиане: 1,0 вместо 0,9996.

Геодезические координаты своего местоположения можно определить и без дополнительных программ. На КПК они присутствуют, как правило, изначально при продаже. Координаты отображаются обычно на эллипсоиде WGS-84, они примерно соответствуют координатам на эллипсоиде ПЗ-90.02 (разница в метрах).

Программу для КПК можно скачать здесь:
http://gistoolkit.ru/download/panoramamobile.zip

В исходных текстах программы можно установить вывод координат в любой системе средствами MAPAPI:
http://gistoolkit.ru/download/gtkmobile.zip
 
Олег, огромное спасибо за внимание. Скачал оба предложанных тобой файла. Оба запустил и установил. "Панораму" запускаю, захожу в меню, но разобраться не могу. Черный экран. Может карт не хватает?  Со вторым файлом чтото тоже никак. Подскажи, очень нужно в работе.
 
Для начала хорошо бы документацию почитать.
Например, здесь:

http://www.gisinfo.ru/products/panoramamobile.htm

Она же входит в инсталляцию в виде DOC-файла.
 
Олег, инструкцию прочитал. Установил все по инструкции,  программа запустилась, работает, координаты выдает. Единственное, после установки отсутствовала папка с картой Moscaw. Подскажи, где можно ее загрузить. И карты других регионов.
 
Демонстрационный пример карты Московской области и графа дорог для КПК -
http://gistoolkit.ru/download/mobilemap.zip

Имя папки - Moscow.
 
Олег, карту добавил. Все хорошо, на местности определяет координаты, показывает на картн
е, сходится. Для меня сейчас очень важно определение прямоугольных координат в системе Гаусса-Крюгера. Файл ранее предложанный тобой я скачал. Подскажи какой файл и каданадо вставить.
 
Нужно внести изменения в программу.

MainForm.cs:


Код
        
    private void CommentPoint(bool update)
        {
            if (hMap == 0)
                return;

            if (IsUserActive == 0)
                return;

            double x = CurrentPoint.X;
            double y = CurrentPoint.Y;

            string geox = "";
            string geoy = "";

            if (MapAccess.mapIsGeoSupported(hMap) != 0)
            {
                MapAccess.mapPlaneToGeoWGS84(hMap, ref x, ref y);

                MapAccess.mapGeoWGS84ToPlane42(hMap, ref x, ref y);  
  
                SIGNDEGREE degree = new SIGNDEGREE();
                degree.Second = 0;

                MapAccess.mapRadianToSignDegree(ref x, ref degree);

                if (degree.Sign < 0)
                    geox = "-";

                geox += degree.Degree + "° " + degree.Minute + "' " + (int)(degree.Second) +
                        "," + (int)(degree.Second/10.0 + 0.5) + "\"";
                MapAccess.mapRadianToSignDegree(ref y, ref degree);

                if (degree.Sign < 0)
                    geoy = "-";

                geoy += degree.Degree + "° " + degree.Minute + "' " + (int)(degree.Second) +
                        "," + (int)(degree.Second / 10.0 + 0.5) + "\"";
            }
            else
            {
                geox = (int)x + " m";
                geoy = (int)y + " m";
            }

            Comment = geox + "  " + geoy;
            if (GpsPort.IsActive())
            {
                if (GpsPort.IsPlace())
                    // On air
                    Comment += " [GPS ON]";
                else
                    // Look for satellite
                    Comment += " [GPS ...]";
            }
            else
            {
                // Down
                Comment += " [GPS OFF]";
            }

            if (update)
            {
                Graphics g = CreateGraphics();

                for (int i = 0; i < ActionList.Count; i++)
                {
                    MapAction action = (MapAction)ActionList[i];
                    if (action != null)
                        if (action.Type() == CONTROLTYPE.COMMENT)
                        {
                            action.View(g, hImage, hMap);
                        }
                }

                g.Dispose();
            }
        }


Если карта уже в СК42 (95),
то функция могла бы иметь такой вид:

Код
        
    private void CommentPoint(bool update)
        {
            if (hMap == 0)
                return;

            if (IsUserActive == 0)
                return;

            double x = CurrentPoint.X;
            double y = CurrentPoint.Y;

            string geox = "";
            string geoy = "";

            geox = (int)x + " m";
            geoy = (int)y + " m";

            Comment = geox + "  " + geoy;
            if (GpsPort.IsActive())
            {
                if (GpsPort.IsPlace())
                    // On air
                    Comment += " [GPS ON]";
                else
                    // Look for satellite
                    Comment += " [GPS ...]";
            }
            else
            {
                // Down
                Comment += " [GPS OFF]";
            }

            if (update)
            {
                Graphics g = CreateGraphics();

                for (int i = 0; i < ActionList.Count; i++)
                {
                    MapAction action = (MapAction)ActionList[i];
                    if (action != null)
                        if (action.Type() == CONTROLTYPE.COMMENT)
                        {
                            action.View(g, hImage, hMap);
                        }
                }

                g.Dispose();
            }
        }


Если нужен универсальный вариант, то нужно сделать замену:

Код
            string geox = "";
            string geoy = "";

            if (MapAccess.mapIsGeoSupported(hMap) != 0)             // Измененный фрагмент
            {
                MapAccess.mapPlaneToGeoWGS84(hMap, ref x, ref y);

                // Новая функция, нужно определить в MapAccess 
                MapAccess.mapGeoWGS84ToPlane42(hMap, ref x, ref y);    
            }

           geox = (int)x + " m";
           geoy = (int)y + " m";

Страницы: Пред. 1 2 3 4 5
Читают тему (гостей: 4)



© КБ Панорама, 1991-2018