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

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

Войти
Майки от BearDyugin shop ;)
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Доброго времени суток всем. Отключена личная переписка для только что зарегистрированных, в связи с массовой регистрацией СПАМ-ботов и рассылками. Форумчане, настоятельно просим, не переходите по ссылкам в личных переписках от женщин с «низкой социальной ответственностью», в т.ч. «перечисляющих» Вам деньги.
    Скрыть объявление

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

Тема в разделе "Общие вопросы", создана пользователем 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.194
    Симпатии:
    310
    P2XItog плохо читается, лучше: P2Xitog.
    (Добавление)
    И комментариев надо значительно больше. Желательно в начале описывать общую идею алгоритма.
     
    #9
  10. Alexyz

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

    Форумчанин

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

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

    Форумчанин

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

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

    Форумчанин

    Регистрация:
    19 июл 2007
    Сообщения:
    1.194
    Симпатии:
    310
    С интерполированием задача не такая тривиальная. Между двумя точками съемки может проходить от нуля до нескольких горизонталей.
     
    #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.137
    Симпатии:
    1.337
    Адрес:
    Сибирь
    Посмотри тут, правда там 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.194
    Симпатии:
    310
    Стоит поискать описание алгоритма, задача ведь уже кем-то решена.
     
    #20

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

Rambler's Top100 Рейтинг@Mail.ru Надёжный хостинг от HTS.ru

Реклама на ГЕОДЕЗИСТ.РУ