在本地SAS会话中的远程服务器上显示外部映像文件

时间:2013-10-05 21:23:30

标签: image sas

我已经使用SAS通过远程提交本地SAS会话中的代码在远程服务器上生成gif图像。用于创建gif映像的宏设计为仅在远程服务器上运行,即在rsubmit块中调用:

rsubmit;
%mymacro(params);
endrsubmit;

有没有办法在我的本地sas会话的结果区域中显示图像而不运行任何本地代码?如果我这样做,我可以使用proc下载,然后告诉SAS使用外部应用程序打开图像,但如果可能的话,我宁愿保留远程宏中包含的所有内容。

澄清:远程会话在运行Solaris的服务器上,本地会话在运行Windows的PC上。远程宏通过以下方法在Solaris服务器上创建外部gif映像文件:

filename graph '/path/to/my/image.gif';
goptions xpixels = 1280 ypixels = 1024 gsfname = graph device = gif;
proc gplot *etc etc*

有问题的图表是大量定制的,包含了很多细节,所以我实际上是在SAS中进行超级采样,以便在按比例缩小时使其看起来更好。使用grlink图形设备似乎没有产生足够高分辨率的图像,所以我尝试了gif。

如果有人能够提出一种方法,可以使用SAS尚未生成的外部图像文件或以前的代码,那么

可以获得奖励积分!

2 个答案:

答案 0 :(得分:2)

您可以告诉远程进程将图形输出写入目录。您可以使用INHERITLIB =选项为远程进程提供对本地库的访问。因此,请将远程图形输出写入本地目录。

%let host = remote-host 7551;
signon host user="me" password="mypassword";

libname output "e:\temp";

rsubmit host cwait=no inheritlib=(output);
   %macro runme();
      ods html gpath=output.remotepngs;

      data test;
      do x=1 to 100;
         y = 5*x + rannor(0);
         output;
      end;
      run;

      proc sgplot data=test;
      series x=x y=y;
      run;
      ods html close;
   %mend;

   %runme();
endrsubmit;

waitfor host;
signoff host;

这将在E:\ temp中创建一个目录,其中包含来自SGPLOT的.png文件。

答案 1 :(得分:0)

您还可以使用提交给远程服务器的PROC DOWNLOAD ...

proc download infile="/path/to/file.gif" outfile="c:\local\file.gif" binary status=no ; 
run ;

我还建议使用更好的图片格式,例如PNG。不确定SAS是否支持TIFF!