坐标加密配置

系统提供坐标加密工具,支持通过设置加密算法来对指定数据的坐标信息进行加密。如果想要坐标加密工具起作用,首先需要基于特定加密算法进行相关配置。

使用说明

  1. 首先,用户需要具备必要的加密算法。

  2. 接着,编译生成用于坐标加密的动态库,该库中必须包含ListTransform函数以及加密函数。

    • 在头文件(*.h)中声明ListTransform函数和加密函数。示例代码见下方:

      #ifdef WIN32
      #define USER_EXPORT __declspec(dllexport)
      #else
      #define USER_EXPORT
      #endif
      //加密函数1。
      extern "C" USER_EXPORT bool Transform1(double srcX, double srcY, double srcZ, double& desX, double& desY, double& desZ);
      //加密函数2。
      extern "C" USER_EXPORT bool Transform2(double srcX, double srcY, double srcZ, double& desX, double& desY, double& desZ);
      //ListTransform用于获取加密函数的列表。
      extern "C" USER_EXPORT bool ListTransform(std::map<std::string,std::string>& mapFuncAnd);
    • 在源文件(*.cpp)中实现ListTransform函数和加密函数。示例代码见下方:

      //加密函数的实现。这里,src代表原始坐标值,des代表加密后的坐标值。如果不对坐标Z值进行加密,则在加密函数实现中写明desZ = srcZ。
      //加密函数1的实现。
      bool Transform1(double srcX, double srcY, double srcZ, double & desX, double & desY, double & desZ)
      {
        ......
      }
      //加密函数2的实现。
      bool Transform2(double srcX, double srcY, double srcZ, double & desX, double & desY, double & desZ)
      {
        ......
      }
      //ListTransform函数的实现。ListTransform中必须添加正确的加密函数名,否则会导致加密失败。
      bool ListTransform(std::map<std::string,std::string>& mapFuncAnd)
      {
      mapFuncAnd.emplace("Transform1", "加密算法1的描述");
      mapFuncAnd.emplace("Transform2", "加密算法2的描述");
      
      return !mapFuncAnd.empty();
      }
  3. 编译完成后,将结果库文件改名为SuStaticPluginUserPointTransform.upt,并将其放入SuperMap iDesktopX产品包/bin文件夹。

  4. 如果坐标加密算法还依赖其他动态库,一并将其拷贝粘贴至SuperMap iDesktopX产品包/bin文件夹。

  5. 完成后,启动SuperMap iDesktopX,使用坐标加密工具,其中加密算法参数填入要使用的加密算法名称,例如Transform1、Transform2等。