Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

Программирование в геодезии

Тема в разделе "Общие вопросы", создана пользователем Alexyz, 11 май 2009.

  1. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    Создал тему для всех кто увлекается программированием, ну и не только.
    И хотел бы сразу спросить может есть у кого готовые библеотеки для экспорта-импорта dxf,
    аналог примера - "2D / 3D DXF Import .NET 1". Говорю сразу - не собираюсь использовать в коммерч. целях или в распространении.
     
    #1
    igor kruchkovskiy нравится это.
  2. Sanechko

    Регистрация:
    27 дек 2008
    Сообщения:
    86
    Симпатии:
    3
    Сайт www.opendesign.com скачал с нее программку everydwg.exe полностью бесплатная и слышал вроде они, каждый год уточняют спецификацию dwg, чтоб все корректно конвертировалось.
    Как минус, нельзя предпросмотр осуществлять ::-ph34r.gif::
    Как плюс, под wine в linux'e работает ::tell::
     
    #2
  3. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    спасибо, но немного не то.
    Объясню чуть подробнее:
    Работаю в Visual Studio 2008, программа (мой проект) ведет гео расчет и строит (рисует) результат в элементе управления PictureBox. Так вот дабы не писать класс (в связи с трудоемкостью и большими времязатратами) по экспорту из PictureBox в файл формата dxf, хотелось бы позаимствовать у кого-нибудь Библиотеку экспорта.
     
    #3
  4. Sanechko

    Регистрация:
    27 дек 2008
    Сообщения:
    86
    Симпатии:
    3
    Создание своего приложение конечно беспокоит душу каждого геодезиста, которое может делать все ::laugh24.gif:: Что если сделать маленькое приложение на базе открытой программки QGIS, интерфейс у нее русский есть, приложения можно писать на питоне, и поддержка будет, если все толково сделать. Меня этот вопрос давно волновал.

    Quantum GIS - это гис приложение, под win и linux.
     
    #4
  5. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    Поздно уже переучиваться с детства на Basic сижу. он на платформе .net работает?
     
    #5
  6. Sanechko

    Регистрация:
    27 дек 2008
    Сообщения:
    86
    Симпатии:
    3
    http://www.qgis.org/en/download/sources.html, сам только выкачал смотрел. Интерфейс QT, плагины питон, ядро на cpp. Наверное нет там поддержки .net . Open source его не особо жалует, это же привязка к платформе.
     
    #6
  7. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    спс за ссылку.
    (Добавление)
    но вопрос еще актуальный.
     
    #7
  8. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    Реализовал процедуру расчета площади и периметра полигона:
    Код:
     ' Расчет площади
            Public Sub Ploshcad(ByVal X As Array, ByVal Y As Array, ByRef S As Double)
            Dim Xi As Double = 0
            Dim XItog As Double = 0
            Dim Yi As Double = 0
            Dim YItog As Double = 0
            Dim XCount As Int32 = X.Length
            Dim YCount As Int32 = Y.Length
            Dim Index As Int32 = 0
            Dim Index2 As Int32 = 0
            Dim P2X As Double = 0
            Dim P2XItog As Double = 0
            Dim P2Y As Double = 0
            Dim P2YItog As Double = 0
            ' Расчитываем разность координат X
            For i As Int32 = 0 To YCount - 1
                ' Расчитываем Контроль
                Index = i
                Index2 = i
                If Index = 0 Then Index = YCount
                If Index2 = YCount - 1 Then Index2 = -1
                Xi = Y(Index - 1) - Y(Index2 + 1)
                P2X = X(i) * Xi
                XItog += Xi
                P2XItog += P2X
            Next i
            ' Расчитываем разность координат Y
            For i As Int32 = 0 To XCount - 1
                ' Расчитываем Контроль
                Index = i
                Index2 = i
                If Index = 0 Then Index = XCount
                If Index2 = XCount - 1 Then Index2 = -1
                Yi = X(Index - 1) - X(Index2 + 1)
                P2Y = Y(i) * Yi
                YItog += Yi
                P2YItog += P2Y
            Next i
            If P2XItog < 0 Then P2XItog = P2XItog * (-1)
            If P2YItog < 0 Then P2YItog = P2YItog * (-1)
            ' Мой метод расчета площади
            S = (P2XItog + P2YItog) / 4
        End Sub
        Public Sub Perimetr(ByVal X As Array, ByVal Y As Array, ByRef P As Double)
            Dim XCount As Int32 = X.Length
            Dim Distanc As Double = 0
            Dim dX As Double = 0
            Dim dY As Double = 0
            Dim Index As Int32 = 0
            Dim Index2 As Int32 = 0
            For i As Int32 = 0 To XCount - 1
                Index = i
                Index2 = i
                If Index2 = XCount - 1 Then Index2 = -1
                dX = X(Index) - X(Index2 + 1)
                dY = Y(Index) - Y(Index2 + 1)
                Distanc = Math.Sqrt(dX ^ 2 + dY ^ 2)
                P += Distanc
            Next
        End Sub
    труда особого не составило.
    Сейчас мучаюсь с интерполированием горизонталей.
    Подскажите люди добрые, формулу для массива отметок: X(i), Y(i), Z(i).
     
    #8
  9. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.189
    Симпатии:
    299
    P2XItog плохо читается, лучше: P2Xitog.
    (Добавление)
    И комментариев надо значительно больше. Желательно в начале описывать общую идею алгоритма.
     
    #9
  10. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    это "сырой" код. Потом сборку dll сделаю все за комментирую.
     
    #10
  11. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.189
    Симпатии:
    299
    Желательно отказываться от ByRef'ов в пользу использования Function'ов, которые явно возвращают вычисленное значение.
     
    #11
  12. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    учту...
     
    #12
  13. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.189
    Симпатии:
    299
    Я бы Yi назвал dXi, ибо по смыслу вы вычисляете разницу (дельту) Х. Не понятно, зачем введены переменные YItog и XItog, они не используются. Наверное, они служат для отладки? В чем преимущество вашего метода вычисления площади? Я бы вычислял её 1 раз, этого вполне достаточно. Вместо проверки отрицательности площади я бы просто вычислил её абсолютную величину.
     
    #13
  14. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    да, надо убрать, ничем не отличается, хочу посмотреть как S будет себя "вести". а XItog, для контроля общей суммы нужна была..
     
    #14
  15. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.189
    Симпатии:
    299
    С интерполированием задача не такая тривиальная. Между двумя точками съемки может проходить от нуля до нескольких горизонталей.
     
    #15
  16. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    меня более интерполирование интересует уже есть в голове картина приблизительная:
    1. Получаем массив X,Y.Z
    2. Организовываем линейную триангуляцию
    3. Линейные базисы используем для нахождения координаты X,Y горизонтали (метод логарифмической линейки)
    4. по заданному шагу горизонтали строим "поллинии"
    5. Сглаживаем полилинии.
    Ну и возможность изменение расположение треугольников триангуляции забыл.
    со 2-м пунктом пока проблемы..
    Может этот метод вообще не целесообразно использовать?
    (Добавление)
    от нуля до бесконечности точнее сказать.
     
    #16
  17. BearDyugin

    BearDyugin Модератор
    Форумчанин Форумчанин

    Регистрация:
    30 ноя 2007
    Сообщения:
    2.172
    Симпатии:
    1.290
    Адрес:
    Сибирь
    Посмотри тут, правда там Lisp, если совсем не поймёшь алгоритм попробую разобраться и подсказать.
     
    #17
  18. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    с Lips дело никогда не имел, посмотрел но код смотрел. Язык из семейства языков С, я изучаю сейчас C#, но в C# обязательное объявление переменных, а в Lips мозг сломать можно пока прочтешь и раздерешь код. Совсем не ясны функции (или команды): caddr, cdr, car, caar, и многое др. :(
     
    #18
  19. Alexyz

    Регистрация:
    24 янв 2009
    Сообщения:
    250
    Симпатии:
    11
    Адрес:
    Россия
    Ознакомился с визуальным процессом интерполирования в стороннем программном продукте. Картинка для наглядности:
    [​IMG]
    как видно горизонталь проходит как Сплайн, разве она не должна проходить через эти точки:
    [​IMG]
    и просто сглаживаться?
     
    #19
  20. Максим

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.189
    Симпатии:
    299
    Стоит поискать описание алгоритма, задача ведь уже кем-то решена.
     
    #20

Поделиться этой страницей