Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Преобразование координат и форматирование строк: эквивалент функции Delphi на PL/SQL

Delphi , Базы данных , Oracle

Вопрос пользователя заключается в том, как написать эквивалент функции на PL/SQL, используя исходный код функции на Delphi. Функция MGRS в Delphi используется для преобразования географических координат в систему MGRS (Military Grid Reference System). Она принимает параметры широты, долготы, радиуса Земли, обратного коэффициента уплощения, кодирования и количества значащих цифр.

Описание функции на Delphi

Function TConvert.MGRS(lat : Double; Lon : Double; a : Double;
             InverseFlattening : Double; Coding:Integer; Digits : Integer) : String ;
var
     UTMs1 : String;
     E1 : Double;
     N1 : Double;
     Zn : Integer;
     Lzn : String;
     Sq : String;
begin
     UTMs1 := UTM(lat, Lon, a, InverseFlattening) ;
     E1 := UTMX(UTMs1);
     N1 := UTMY(UTMs1);
     Zn := UTMZone(lat, Lon);
     Lzn := MGRSLatZone(lat);
     Sq := SquareID(Zn, N1, E1, Coding);
     Result := Format('%.2d', [Zn] )  + Lzn + Sq +
         Copy(Format('%.5d',[Round(E1 - 100000 * Trunc(E1 / 100000))]), 1, Digits) +
         Copy(Format('%.5d',[Round(N1 - 100000 * Trunc(N1 / 100000))]), 1, Digits);
end;

Преобразование функции в PL/SQL

Чтобы переписать функцию MGRS на PL/SQL, необходимо перенести логику преобразования, но использовать функции форматирования строк, доступные в PL/SQL. В PL/SQL нет прямого эквивалента функции Format из Delphi, поэтому используется функция TO_CHAR с соответствующими масками форматирования.

Пример функции на PL/SQL

create or replace function MyFunction(
      Zn     in number,
      Lzn    in varchar2,
      Sq     in varchar2,
      E1     in number,
      N1     in number,
      Digits in number
    ) 
    return varchar2
    as
      vRes varchar2(4000);
    begin

      vRes := trim(to_char(Zn,'FM0000000000000000')) || Lzn || Sq || 
              substr(trim(to_char(round(E1 - 100000 * trunc(E1/100000)),'FM000000000000000000000')), 1, Digits) || 
              substr(trim(to_char(round(N1 - 100000 * trunc(N1/100000)),'FM000000000000000000000')), 1, Digits);

      return vRes;

    end;

В примере выше используется функция TO_CHAR для преобразования чисел в строки с форматированием, а функция TRIM для удаления лишних пробелов. Параметры форматирования задаются в маске, где F обозначает фиксированную точку, а количество символов в маске определяет общую длину строки.

Дополнительные материалы

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

Создано по материалам из источника по ссылке.

Преобразование функции на Delphi для работы с географическими координатами в PL/SQL, включая форматирование строк и использование других функций Oracle.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Oracle ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 14:57:01/0.001676082611084/0