⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdal_ruby.i

📁 支持各种栅格图像和矢量图像读取的库
💻 I
字号:
/* * $Id: gdal_ruby.i 8449 2005-09-26 08:18:55Z cfis $ * * ruby specific code for gdal bindings. *//* * $Log$ * Revision 1.2  2005/09/26 08:18:55  cfis * Copied over code from the Python version of gdal_ruby.i.  Will have to port the code to Ruby. * * Revision 1.1  2005/09/02 16:19:23  kruland * Major reorganization to accomodate multiple language bindings. * Each language binding can define renames and supplemental code without * having to have a lot of conditionals in the main interface definition files. * */%init %{  /* gdal_ruby.i %init code */  if ( GDALGetDriverCount() == 0 ) {    GDALAllRegister();  }%}%include "cpl_exceptions.i";%header %{static CPLXMLNode *RubyArrayToXMLTree(VALUE rubyArray){    int      nChildCount = 0, iChild, nType;    CPLXMLNode *psThisNode;    CPLXMLNode *psChild;    char       *pszText = NULL;    nChildCount = RARRAY(rubyArray)->len - 2;    if( nChildCount < 0 )    {		 rb_raise(rb_eRuntimeError, "Error in input XMLTree, child count is less than zero.");    }	 VALUE item1 = rb_ary_entry(rubyArray, 0);	 nType = NUM2INT(item1);	 VALUE item2 = rb_ary_entry(rubyArray, 1);	 pszText = StringValuePtr(item2);    psThisNode = CPLCreateXMLNode( NULL, (CPLXMLNodeType) nType, pszText );    for( iChild = 0; iChild < nChildCount; iChild++ )    {        psChild = RubyArrayToXMLTree( rb_ary_entry(rubyArray,iChild+2) );        CPLAddXMLChild( psThisNode, psChild );    }    return psThisNode;}static VALUE XMLTreeToRubyArray( CPLXMLNode *psTree ){    int      nChildCount = 0, iChild;    CPLXMLNode *psChild;    for( psChild = psTree->psChild;          psChild != NULL;          psChild = psChild->psNext )        nChildCount++;    VALUE rubyArray = rb_ary_new2(nChildCount+2);	 rb_ary_store(rubyArray, 0, INT2NUM((int) psTree->eType));	 rb_ary_store(rubyArray, 1, rb_str_new2(psTree->pszValue));    for( psChild = psTree->psChild, iChild = 2;          psChild != NULL;          psChild = psChild->psNext, iChild++ )    {        rb_ary_store(rubyArray, iChild, XMLTreeToRubyArray(psChild));    }    return rubyArray; }%}/*%extend GDAL_GCP {%pythoncode {  def __str__(self):    str = '%s (%.2fP,%.2fL) -> (%.7fE,%.7fN,%.2f) %s '\          % (self.Id, self.GCPPixel, self.GCPLine,             self.GCPX, self.GCPY, self.GCPZ, self.Info )    return str    def serialize(self,with_Z=0):        base = [CXT_Element,'GCP']        base.append([CXT_Attribute,'Id',[CXT_Text,self.Id]])        pixval = '%0.15E' % self.GCPPixel               lineval = '%0.15E' % self.GCPLine        xval = '%0.15E' % self.GCPX        yval = '%0.15E' % self.GCPY        zval = '%0.15E' % self.GCPZ        base.append([CXT_Attribute,'Pixel',[CXT_Text,pixval]])        base.append([CXT_Attribute,'Line',[CXT_Text,lineval]])        base.append([CXT_Attribute,'X',[CXT_Text,xval]])        base.append([CXT_Attribute,'Y',[CXT_Text,yval]])        if with_Z:            base.append([CXT_Attribute,'Z',[CXT_Text,zval]])                return base} }%extend GDALRasterBandShadow {%pythoncode {  def ReadAsArray(self, xoff=0, yoff=0, win_xsize=None, win_ysize=None,                  buf_xsize=None, buf_ysize=None, buf_obj=None):      import gdalnumeric      return gdalnumeric.BandReadAsArray( self, xoff, yoff,                                          win_xsize, win_ysize,                                          buf_xsize, buf_ysize, buf_obj )      def WriteArray(self, array, xoff=0, yoff=0):      import gdalnumeric      return gdalnumeric.BandWriteArray( self, array, xoff, yoff )}}%extend GDALMajorObjectShadow {%pythoncode {  def GetMetadata( self, domain = '' ):    if domain[:4] == 'xml:':      return self.GetMetadata_List( domain )    return self.GetMetadata_Dict( domain )}}*/%import typemaps_ruby.i

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -