На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Николай Беспалов (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Николай Беспалов
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 След.
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
[QUOTE]gislinux пишет:
Значит у Вас в ОС установлен разделитель целой и дробной части - ".", у меня - ","
Узнать, какой разделитель стоит можно командой:
locale -k LC_NUMERIC
Далее в консоли будет информация:
decimal_point=","[/QUOTE]
Не хочется лезть не в свой огород, но мне кажется что ваша библиотека должна определять такие настройки и подстраиваться под них. Мы же поставляем софт в расчете на то что он "заведется" автоматически и пользователю не придется дополнительно настраивать свое окружение. Не примите за "наезд", это просто мнение одного человека.
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
1. установка /usr/lib/ помогла
2. присланные файлы не заработали - просто зависает намертво на вызове mapGetParametersForEPSG. Я взял файлы "от windows" и заменил CRLF на LF. Такие файлы заработали.

Спасибо за помощь
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
gislinux, огромное спасибо. Ваше решение похоже на правду, я начал подумывать о кодировках файлов... Вы пришлете готовые к использованию файлы?
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
Вот тестовый код который демонстрирует проблему

[CODE]#include <iostream>
#include <iomanip>

#ifdef WIN32
#   include <windows.h>
#endif

#include "mapapi.h"
#include "sitapi.h"
#include "vecexapi.h"

#ifdef WIN32
#    include "gislink.h"
#else
#    include "gsslink.h"
#endif

#ifdef WIN32
#    define DYNLIB_HANDLE HMODULE
#    define DYNLIB_LOAD( a ) LoadLibraryEx( a, 0, LOAD_WITH_ALTERED_SEARCH_PATH )
#    define DYNLIB_GETSYM( a, b ) GetProcAddress( a, b )
#    define DYNLIB_UNLOAD( a ) !FreeLibrary( a )
#else
#    define DYNLIB_HANDLE void*
#    define DYNLIB_LOAD( a ) dlopen( a, RTLD_LAZY | RTLD_GLOBAL)
#    define DYNLIB_GETSYM( a, b ) dlsym( a, b )
#    define DYNLIB_UNLOAD( a ) dlclose( a )
#endif

#ifdef WIN32
#    define GISACCESS_DYNLIB_NAME "gisacces.dll"
#    define GISVECEX_DYNLIB_NAME "gisvecex.dll"
#else
#    define GISACCESS_DYNLIB_NAME "./libqdmapacces.so"
#    define GISVECEX_DYNLIB_NAME "./libqdmapvecex.so"
#endif

#ifndef _MSC_VER
   #define DYNLIB_MAP_DECL(retType, name, decl) \
      typedef retType (_MAPAPI *name ## Func) decl;
#else
   #define DYNLIB_MAP_DECL(retType, name, decl, ... ) \
      typedef retType (_MAPAPI *name ## Func) decl __VA_ARGS__;
#endif

#define DYNLIB_MAP_DEF(lib, name) \
  name ## Func name ## Inst = (name ## Func) DYNLIB_GETSYM(lib, #name);

#define DYNLIB_MAP_CALL(name, decl) \
   name ## Inst decl

namespace
{
  DYNLIB_MAP_DECL(HMAP, mapOpenDataEx, (const char*, long int, long int*));
  DYNLIB_MAP_DECL(void, mapCloseData, (HMAP hMap));
  DYNLIB_MAP_DECL(long int, mapGetParametersForEPSG, (long int epsgCode, MAPREGISTEREX* map, DATUMPARAM* datum, ELLIPSOIDPARAM* ellparm));
  DYNLIB_MAP_DECL(long int, mapSetDocProjection, (HMAP hMap, MAPREGISTEREX* map, DATUMPARAM* datum, ELLIPSOIDPARAM* ellparm));
  DYNLIB_MAP_DECL(const char*, mapGetPathShell, ());
  DYNLIB_MAP_DECL(void, mapSetPathShell, (const char*));

  DYNLIB_HANDLE gisaccessInstance = DYNLIB_LOAD(GISACCESS_DYNLIB_NAME);

  DYNLIB_MAP_DEF(gisaccessInstance, mapOpenDataEx);
  DYNLIB_MAP_DEF(gisaccessInstance, mapCloseData);
  DYNLIB_MAP_DEF(gisaccessInstance, mapGetParametersForEPSG);
  DYNLIB_MAP_DEF(gisaccessInstance, mapSetDocProjection);
  DYNLIB_MAP_DEF(gisaccessInstance, mapGetPathShell);
  DYNLIB_MAP_DEF(gisaccessInstance, mapSetPathShell);
}

int main(int argc, char* argv[])
{
#ifdef _WIN32
  gisLink();
#else
  gssLink();
#endif
  std::cout << "panorama path shell: " << DYNLIB_MAP_CALL(mapGetPathShell, ()) << std::endl;
  DYNLIB_MAP_CALL(mapSetPathShell, ("/usr/lib"));
  std::cout << "panorama path shell: " << DYNLIB_MAP_CALL(mapGetPathShell, ()) << std::endl;

  MAPREGISTEREX mapCard;
  DATUMPARAM datum;
  ELLIPSOIDPARAM ellipsoid;
  ::memset(&mapCard, 0, sizeof(mapCard));
  mapCard.Length  = sizeof(mapCard);
 
  if (DYNLIB_MAP_CALL(mapGetParametersForEPSG, (28418, &mapCard, &datum, &ellipsoid)) == 0)
  {
     std::cerr << "mapGetParametersForEPSG error" << std::endl;
 
     return 1;
  }
 
  std::cout << "ok" << std::endl;
 
  return 0;
} [/CODE]

Вывод
[CODE]panorama path shell:
panorama path shell: /usr/
mapGetParametersForEPSG error[/CODE]
Изменено: Николай Беспалов - 12.11.2013 15:38:52
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
[CODE]3. Проблема: вызов функции mapGetParametersForEPSG завершается нулем. [/CODE]

До карты еще дело не дошло.
Прочтите пожалуйста еще раз весь трэд. Конкретно http://www.gisweb.ru/forum/messages/forum7/topic5653/message38503/#message38503, http://www.gisweb.ru/forum/messages/forum7/topic5653/message38549/#message38549, http://www.gisweb.ru/forum/messages/forum7/topic5653/message38552/#message38552
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
Вот тестовый код. Карта Грузии, может это как-то поможет. Еще повторюсь, я делал эксперимент в котором пробовал установить путь, а затем прочитать его и это были два разных пути. У

[CODE]#include <iostream>
#include <iomanip>

#ifdef WIN32
# include <windows.h>
#endif

#include "mapapi.h"
#include "sitapi.h"
#include "vecexapi.h"

#ifdef WIN32
#    include "gislink.h"
#else
#    include "gsslink.h"
#endif

#ifdef WIN32
#    define DYNLIB_HANDLE HMODULE
#    define DYNLIB_LOAD( a ) LoadLibraryEx( a, 0, LOAD_WITH_ALTERED_SEARCH_PATH )
#    define DYNLIB_GETSYM( a, b ) GetProcAddress( a, b )
#    define DYNLIB_UNLOAD( a ) !FreeLibrary( a )
#else
#    define DYNLIB_HANDLE void*
#    define DYNLIB_LOAD( a ) dlopen( a, RTLD_LAZY | RTLD_GLOBAL)
#    define DYNLIB_GETSYM( a, b ) dlsym( a, b )
#    define DYNLIB_UNLOAD( a ) dlclose( a )
#endif

#ifdef WIN32
#    define GISACCESS_DYNLIB_NAME "gisacces.dll"
#    define GISVECEX_DYNLIB_NAME "gisvecex.dll"
#else
#    define GISACCESS_DYNLIB_NAME "./libqdmapacces.so"
#    define GISVECEX_DYNLIB_NAME "./libqdmapvecex.so"
#endif

#ifndef _MSC_VER
   #define DYNLIB_MAP_DECL(retType, name, decl) \
   typedef retType (_MAPAPI *name ## Func) decl;
#else
   #define DYNLIB_MAP_DECL(retType, name, decl, ... ) \
   typedef retType (_MAPAPI *name ## Func) decl __VA_ARGS__;
#endif

#define DYNLIB_MAP_DEF(lib, name) \
name ## Func name ## Inst = (name ## Func) DYNLIB_GETSYM(lib, #name);

#define DYNLIB_MAP_CALL(name, decl) \
   name ## Inst decl

namespace
{
DYNLIB_MAP_DECL(HMAP, mapOpenDataEx, (const char*, long int, long int*));
DYNLIB_MAP_DECL(void, mapCloseData, (HMAP hMap));
DYNLIB_MAP_DECL(long int, mapGetParametersForEPSG, (long int epsgCode, MAPREGISTEREX* map, DATUMPARAM* datum, ELLIPSOIDPARAM* ellparm));
DYNLIB_MAP_DECL(long int, mapSetDocProjection, (HMAP hMap, MAPREGISTEREX* map, DATUMPARAM* datum, ELLIPSOIDPARAM* ellparm));
DYNLIB_MAP_DECL(const char*, mapGetPathShell, ());
DYNLIB_MAP_DECL(void, mapSetPathShell, (const char*));

DYNLIB_HANDLE gisaccessInstance = DYNLIB_LOAD(GISACCESS_DYNLIB_NAME);

DYNLIB_MAP_DEF(gisaccessInstance, mapOpenDataEx);
DYNLIB_MAP_DEF(gisaccessInstance, mapCloseData);
DYNLIB_MAP_DEF(gisaccessInstance, mapGetParametersForEPSG);
DYNLIB_MAP_DEF(gisaccessInstance, mapSetDocProjection);
DYNLIB_MAP_DEF(gisaccessInstance, mapGetPathShell);
DYNLIB_MAP_DEF(gisaccessInstance, mapSetPathShell);

int setProjection(HMAP mapHandle, long int epsgCode);
}

int main(int argc, char* argv[])
{
#ifdef _WIN32
gisLink();
#else
gssLink();
#endif

mapMessageEnable(false);

std::cout << "panorama path shell: " << DYNLIB_MAP_CALL(mapGetPathShell, ()) << std::endl;

DYNLIB_MAP_CALL(mapSetPathShell, ("..."));

static const char* mapPath = "...";

long int error;

HMAP mapHandle = DYNLIB_MAP_CALL(mapOpenDataEx, (mapPath, 0, &error));

if (mapHandle == 0)
{
std::cerr << "mapOpenDataEx error: " << error << std::endl;

return 1;
}

if (setProjection(mapHandle, 28418) != 0)
{
return 2;
}

DYNLIB_MAP_CALL(mapCloseData, (mapHandle));

std::cout << "ok" << std::endl;

return 0;
}

namespace
{
int setProjection(HMAP mapHandle, long int epsgCode)
{
MAPREGISTEREX mapCard;
DATUMPARAM datum;
ELLIPSOIDPARAM ellipsoid;

::memset(&mapCard, 0, sizeof(mapCard));

mapCard.Length  = sizeof(mapCard);

if (DYNLIB_MAP_CALL(mapGetParametersForEPSG, (epsgCode, &mapCard, &datum, &ellipsoid)) == 0)
{
std::cerr << "mapGetParametersForEPSG error" << std::endl;

return 1;
}

if (DYNLIB_MAP_CALL(mapSetDocProjection, (mapHandle, &mapCard, &datum, &ellipsoid)) == 0)
{
std::cerr << "mapSetDocProjection error" << std::endl;

return 1;
}

return 0;
}
}[/CODE]
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
Добрый день, есть успехи по третьему пункту?

[QUOTE]Александр пишет:
3. Проблема: вызов функции mapGetParametersForEPSG завершается нулем. [/QUOTE]
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
[QUOTE]gislinux пишет:
2.Только в последнем сообщении удалось получить ответ на вопрос: "Какую ОС используете"[/QUOTE]
Целевая ОС: Astra Linux Special Edition 1.3 http://www.gisweb.ru/forum/messages/forum7/topic5653/message38558/#message38558
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
[QUOTE]gislinux пишет:
На вопрос: "Какой продукт Вы используете?" - ответа нет.[/QUOTE]
Простите, GIS Constructor Free 11.1.1 for AstraLinux Orel 1.7. Я вопрос о версии ОС понял не так.
Нужны ли файлы epsg.csg, epsg.csp, epsg.csu для работы функции mapGetParametersForEPSG на Astra Linux?
 
[QUOTE]Для начала переименуйте файлы в нижний регистр, собственно как сделано в ГИС Операторе для Astra Linux SE[/QUOTE]
Файлы в нижнем регистре изначально были на своих местах, собственно я не знаю что такое ГИС Оператор, я просто вижу в документации файлы в верхнем регистре.
Изменено: Николай Беспалов - 06.11.2013 18:02:30
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 След.



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

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности