Рассчитать длину линии в mapbasic

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

Первый вопрос, который я хочу задать, состоит в том, как я могу показать количество десятичных цифр начальной и конечной координат линии, показанной программой, как 3 цифры? возвращаемые значения либо показывают две цифры, либо не отображаются в десятичной форме.

Второй вопрос, который я хочу задать: длина строки, рассчитанная с помощью написанной мной программы, отличается от длины строки, рассчитанной с помощью калькулятора. в чем причина этого?

Я преобразовал слой объекта линии, который рисую в программном обеспечении Mapinfo, в формат, используя инструмент Universal Translator.

Я открыл таблицу в ArcMap. длина той же строки в таблице очень близка к длине, которую я вычисляю с помощью калькулятора. Значение результата, которое я нашел в Mapinfo, отличается от результата, который я нашел в ArcMap.

Я написал другую программу, используя MapBasic. Я создал диалог в программе. В моей программе пользователь создает точки в слое со значениями координат X - Y, записанными в тексте редактирования. Я создал две точки с помощью программы mapbasic, которую я написал. программа также записывает координаты X - Y точек на экране после создания точки. при использовании программы я вводил три цифры десятичных цифр координат точки. но координаты X - Y на экране отображаются в виде двух цифр. Я измеряю расстояние между двумя точками, используя линейку в программе Mapinfo. Я также рассчитал длину, используя координаты X-Y, которые отображаются на экране калькулятора. Значение длины, которое находит линейка в Mapinfo, отличается от значения длины, которое я вычислил.

Когда я попробовал программу, которую написал в программном обеспечении Mapinfo, я установил проекцию созданных мною слоев в виде Тюркских систем координат (3 градуса k = 1 ITRF) Центрального меридиана 33.

Где я делаю не так? Не могли бы вы помочь мне с этим? Спасибо всем

Изображение программы mapbasic, которую я написал, добавило этот запрос.

1 ответ

Чтобы вычислить длину строки, вам не нужна формула Пифагора, просто используйте ObjectLen(obje, "m")

Чтобы получить желаемое количество цифр, взгляните на функцию Format$, Примеры из документации:

Format$( 12345, ",#") ' returns "12,345"
Format$(-12345, ",#") ' returns "-12,345"
Format$( 12345, "$#") ' returns "$12345"
Format$(-12345, "$#") ' returns "-$12345"

Format$( 12345.678, "$,#.##") ' returns "$12,345.68"
Format$(-12345.678, "$,#.##") ' returns "-$12,345.68"

Format$( 12345.678, "$,#.##;($,#.##)") 'returns "$12,345.68"
Format$(-12345.678, "$,#.##;($,#.##)") 'returns "($12,345.68)"
Format$(12345.6789, ",#.###") ' returns "12,345.679"
Format$(12345.6789, ",#.#") ' returns "12,345.7"
Format$(-12345.6789, "#.###E+00") ' returns "-1.235e+04"
Format$( 0.054321, "#.###E+00") ' returns "5.432e-02"

Format$(-12345.6789, "#.###E-00") ' returns "-1.235e04"
Format$( 0.054321, "#.###E-00") ' returns "5.432e-02"

Format$(0.054321, "#.##%") ' returns "5.43%"
Format$(0.054321, "#.##\%") ' returns ".05%"
Format$(0.054321, "0.##\%") ' returns "0.05%"

Прежде чем создавать какие-либо объекты или выполнять расчеты, вы должны установить систему координат, например

Set CoordSys Earth Projection 25, 1003, "m", 7.4395833333, 46.9524055555, 600000, 200000 Bounds (-99400000, -99800000) (100600000, 100200000)

Обратите внимание, у вас есть CoordSys в нескольких местах не смешивайте их

  • Set Map ... CoordSys ... который применяется только для карты, но не для объектов в вашем коде.
  • Commit Table ... CoordSys... который применяется только к сохраненной таблице.
  • SessionInfo( SESSION_INFO_COORDSYS_CLAUSE ) Строковый результат, который указывает предложение CoordSys сеанса.
Другие вопросы по тегам