亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ogr_api.cpp

?? mitab,讀取MapInfo的地圖文件
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

/************************************************************************/
/*                           OGR_G_AddPoint()                           */
/************************************************************************/
/**
 * Add a point to a geometry (line string or point).
 *
 * The vertex count of the line string is increased by one, and assigned from
 * the passed location value.
 *
 * @param hGeom handle to the geometry to add a point to.
 * @param dfX x coordinate of point to add.
 * @param dfY y coordinate of point to add.
 */

void OGR_G_AddPoint_2D( OGRGeometryH hGeom, 
                        double dfX, double dfY )

{
    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPoint:
      {
          ((OGRPoint *) hGeom)->setX( dfX );
          ((OGRPoint *) hGeom)->setY( dfY );
      }
      break;

      case wkbLineString:
        ((OGRLineString *) hGeom)->addPoint( dfX, dfY );
        break;

      default:
        CPLAssert( FALSE );
        break;
    }
}

/************************************************************************/
/*                       OGR_G_GetGeometryCount()                       */
/************************************************************************/
/**
 * Fetch the number of elements in a geometry.
 *
 * @param hGeom geometry from which to get the number of elements.
 * @return the number of elements.
 */

int OGR_G_GetGeometryCount( OGRGeometryH hGeom )

{
    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPolygon:
        if( ((OGRPolygon *)hGeom)->getExteriorRing() == NULL )
            return 0;
        else
            return ((OGRPolygon *)hGeom)->getNumInteriorRings() + 1;

      case wkbMultiPoint:
      case wkbMultiLineString:
      case wkbMultiPolygon:
      case wkbGeometryCollection:
        return ((OGRGeometryCollection *)hGeom)->getNumGeometries();

      default:
        return 0;
    }
}

/************************************************************************/
/*                        OGR_G_GetGeometryRef()                        */
/************************************************************************/

/**
 * Fetch geometry from a geometry container.
 *
 * This function returns an handle to a geometry within the container.
 * The returned geometry remains owned by the container, and should not be
 * modified.  The handle is only valid untill the next change to the
 * geometry container.  Use OGR_G_Clone() to make a copy.
 *
 * This function relates to the SFCOM 
 * IGeometryCollection::get_Geometry() method.
 *
 * This function is the same as the CPP method 
 * OGRGeometryCollection::getGeometryRef().
 *
 * @param hGeom handle to the geometry container from which to get a 
 * geometry from.
 * @param iSubGeom the index of the geometry to fetch, between 0 and
 *          getNumGeometries() - 1.
 * @return handle to the requested geometry.
 */

OGRGeometryH OGR_G_GetGeometryRef( OGRGeometryH hGeom, int iSubGeom )

{
    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPolygon:
        if( iSubGeom == 0 )
            return (OGRGeometryH) 
                ((OGRPolygon *)hGeom)->getExteriorRing();
        else
            return (OGRGeometryH) 
                ((OGRPolygon *)hGeom)->getInteriorRing(iSubGeom-1);

      case wkbMultiPoint:
      case wkbMultiLineString:
      case wkbMultiPolygon:
      case wkbGeometryCollection:
        return (OGRGeometryH) 
            ((OGRGeometryCollection *)hGeom)->getGeometryRef( iSubGeom );

      default:
        return 0;
    }
}

/************************************************************************/
/*                         OGR_G_AddGeometry()                          */
/************************************************************************/

/**
 * Add a geometry to a geometry container.
 *
 * Some subclasses of OGRGeometryCollection restrict the types of geometry
 * that can be added, and may return an error.  The passed geometry is cloned
 * to make an internal copy.
 *
 * There is no SFCOM analog to this method.
 *
 * This function is the same as the CPP method 
 * OGRGeometryCollection::addGeometry.
 *
 * @param hGeom existing geometry container.
 * @param hNewSubGeom geometry to add to the container.
 *
 * @return OGRERR_NONE if successful, or OGRERR_UNSUPPORTED_GEOMETRY_TYPE if
 * the geometry type is illegal for the type of existing geometry.
 */

OGRErr OGR_G_AddGeometry( OGRGeometryH hGeom, OGRGeometryH hNewSubGeom )

{
    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPolygon:
      {
          OGRLinearRing *poRing = (OGRLinearRing *) hNewSubGeom;

          if( poRing->WkbSize() != 0 
              || wkbFlatten(poRing->getGeometryType()) != wkbLineString )
              return OGRERR_UNSUPPORTED_GEOMETRY_TYPE;
          else
          {
              ((OGRPolygon *)hGeom)->addRing( poRing );
              return OGRERR_NONE;
          }
      }

      case wkbMultiPoint:
      case wkbMultiLineString:
      case wkbMultiPolygon:
      case wkbGeometryCollection:
        return ((OGRGeometryCollection *)hGeom)->addGeometry( 
            (OGRGeometry *) hNewSubGeom );

      default:
        return OGRERR_UNSUPPORTED_OPERATION;
    }
}

/************************************************************************/
/*                     OGR_G_AddGeometryDirectly()                      */
/************************************************************************/
/**
 * Add a geometry directly to an existing geometry container.
 *
 * Some subclasses of OGRGeometryCollection restrict the types of geometry
 * that can be added, and may return an error.  Ownership of the passed
 * geometry is taken by the container rather than cloning as addGeometry()
 * does.
 *
 * This function is the same as the CPP method 
 * OGRGeometryCollection::addGeometryDirectly.
 *
 * There is no SFCOM analog to this method.
 *
 * @param hGeom existing geometry.
 * @param hNewSubGeom geometry to add to the existing geometry.
 *
 * @return OGRERR_NONE if successful, or OGRERR_UNSUPPORTED_GEOMETRY_TYPE if
 * the geometry type is illegal for the type of geometry container.
 */

OGRErr OGR_G_AddGeometryDirectly( OGRGeometryH hGeom, 
                                  OGRGeometryH hNewSubGeom )

{
    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPolygon:
      {
          OGRLinearRing *poRing = (OGRLinearRing *) hNewSubGeom;

          if( poRing->WkbSize() != 0 
              || wkbFlatten(poRing->getGeometryType()) != wkbLineString )
              return OGRERR_UNSUPPORTED_GEOMETRY_TYPE;
          else
          {
              ((OGRPolygon *)hGeom)->addRingDirectly( poRing );
              return OGRERR_NONE;
          }
      }

      case wkbMultiPoint:
      case wkbMultiLineString:
      case wkbMultiPolygon:
      case wkbGeometryCollection:
        return ((OGRGeometryCollection *)hGeom)->addGeometryDirectly( 
            (OGRGeometry *) hNewSubGeom );

      default:
        return OGRERR_UNSUPPORTED_OPERATION;
    }
}

/************************************************************************/
/*                        OGR_G_RemoveGeometry()                        */
/************************************************************************/

/**
 * Remove a geometry from an exiting geometry container.
 *
 * Removing a geometry will cause the geometry count to drop by one, and all
 * "higher" geometries will shuffle down one in index.
 *
 * There is no SFCOM analog to this method.
 *
 * This function is the same as the CPP method 
 * OGRGeometryCollection::removeGeometry().
 *
 * @param hGeom the existing geometry to delete from.
 * @param iGeom the index of the geometry to delete.  A value of -1 is a
 * special flag meaning that all geometries should be removed.
 *
 * @param bDelete if TRUE the geometry will be destroyed, otherwise it will
 * not.  The default is TRUE as the existing geometry is considered to own the
 * geometries in it. 
 *
 * @return OGRERR_NONE if successful, or OGRERR_FAILURE if the index is
 * out of range.
 */



OGRErr OGR_G_RemoveGeometry( OGRGeometryH hGeom, int iGeom, int bDelete )

{
    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPolygon:
      {
          CPLError( CE_Failure, CPLE_AppDefined, 
                    "OGR_G_RemoveGeometry() not supported on polygons yet." );
          return OGRERR_UNSUPPORTED_OPERATION;
      }

      case wkbMultiPoint:
      case wkbMultiLineString:
      case wkbMultiPolygon:
      case wkbGeometryCollection:
        return ((OGRGeometryCollection *)hGeom)->removeGeometry( iGeom,bDelete);

      default:
        return OGRERR_UNSUPPORTED_OPERATION;
    }
}

/************************************************************************/
/*                           OGR_G_GetArea()                            */
/************************************************************************/

/**
 * Compute geometry area.
 *
 * Computes the area for an OGRLinearRing, OGRPolygon or OGRMultiPolygon.
 * Undefined for all other geometry types (returns zero). 
 *
 * This function utilizes the C++ get_Area() methods such as
 * OGRPolygon::get_Area(). 
 *
 * @param hGeom the geometry to operate on. 
 * @return the area or 0.0 for unsupported geometry types.
 */

double OGR_G_GetArea( OGRGeometryH hGeom )

{
    double fArea = 0.0;

    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )
    {
      case wkbPolygon:
        fArea = ((OGRPolygon *) hGeom)->get_Area();
        break;

      case wkbMultiPolygon:
        fArea = ((OGRMultiPolygon *) hGeom)->get_Area();
        break;

      case wkbLinearRing:
      case wkbLineString:
        /* This test below is required to filter out wkbLineString geometries
         * not being of type of wkbLinearRing.
         */
        if( EQUAL( ((OGRGeometry*) hGeom)->getGeometryName(), "LINEARRING" ) )
        {
            fArea = ((OGRLinearRing *) hGeom)->get_Area();
        }
        break;

      default:
        CPLError( CE_Warning, CPLE_AppDefined,
                  "OGR_G_GetArea() called against non-surface geometry type." );

        fArea = 0.0;
    }

    return fArea;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区免费视频| 91激情五月电影| 色综合久久综合中文综合网| 日韩一区国产二区欧美三区| 中文字幕一区二区三区乱码在线| 亚洲国产va精品久久久不卡综合| 国产福利电影一区二区三区| 欧美一区三区四区| 一区二区三区在线视频观看| 国产不卡在线一区| 欧美一区二区三区四区五区| 一区二区三区毛片| 94色蜜桃网一区二区三区| 欧美精品一区二区三| 亚洲第一久久影院| 日本久久一区二区| 亚洲欧美日韩综合aⅴ视频| 国产一区二区毛片| 精品裸体舞一区二区三区| 亚洲h在线观看| 一本久久精品一区二区| 国产日韩亚洲欧美综合| 国产高清在线观看免费不卡| 精品日韩av一区二区| 日本亚洲免费观看| 在线不卡的av| 亚洲午夜激情网站| 在线观看视频一区二区 | 久久午夜电影网| 日本欧美一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 国产精品美女久久久久久久久| 国产精品18久久久久久久久 | 色999日韩国产欧美一区二区| 国产精品毛片久久久久久| 懂色一区二区三区免费观看| 国产欧美一区二区精品性| 国产凹凸在线观看一区二区| 国产精品视频一二| 9人人澡人人爽人人精品| 国产精品每日更新| 色综合天天在线| 亚洲成人在线观看视频| 欧美日韩国产免费一区二区| 婷婷中文字幕一区三区| 欧美一区午夜精品| 国产在线视视频有精品| 国产欧美一区二区在线| 91美女片黄在线观看| 亚洲福中文字幕伊人影院| 337p亚洲精品色噜噜狠狠| 久久精品国产一区二区三区免费看 | 国产九色精品成人porny| 国产视频在线观看一区二区三区| 丁香天五香天堂综合| 亚洲欧美日韩久久| 欧美日韩一区二区三区不卡| 日韩成人伦理电影在线观看| 久久一区二区三区四区| 9人人澡人人爽人人精品| 亚洲一区二区三区国产| 日韩精品一区二区三区视频| 成人免费看片app下载| 一区二区三区小说| 精品日韩欧美在线| 一本到三区不卡视频| 日本成人在线一区| 国产精品久久久久久久蜜臀 | 欧美tickling挠脚心丨vk| 成人小视频免费在线观看| 亚洲电影你懂得| 国产日韩欧美不卡在线| 在线观看区一区二| 国产在线播放一区三区四| 亚洲精品中文在线| 久久久亚洲国产美女国产盗摄 | 日韩视频免费直播| 99亚偷拍自图区亚洲| 男人的天堂亚洲一区| 国产亚洲成aⅴ人片在线观看| 91论坛在线播放| 国产在线国偷精品免费看| 亚洲一区二区视频在线观看| 久久亚区不卡日本| 欧美精品久久99| 色域天天综合网| 国产传媒一区在线| 蜜臀久久99精品久久久画质超高清| 国产精品第五页| 精品日韩成人av| 欧美精品久久久久久久多人混战| av电影在线观看一区| 国产精品中文欧美| 免费人成在线不卡| 一区二区三区四区在线| 中文字幕精品在线不卡| 日韩一区国产二区欧美三区| 在线观看亚洲一区| 91丝袜呻吟高潮美腿白嫩在线观看| 国内外成人在线| 久久机这里只有精品| 婷婷国产在线综合| 一区二区三区四区视频精品免费| 亚洲国产成人自拍| 欧美激情一区二区三区四区| 精品成人佐山爱一区二区| 欧美一级一级性生活免费录像| 欧美在线不卡视频| 色哟哟一区二区在线观看| 91美女视频网站| 一本一道波多野结衣一区二区| eeuss鲁一区二区三区| 大白屁股一区二区视频| 狠狠色综合色综合网络| 精久久久久久久久久久| 毛片av中文字幕一区二区| 美女被吸乳得到大胸91| 奇米亚洲午夜久久精品| 免费观看久久久4p| 美女mm1313爽爽久久久蜜臀| 老鸭窝一区二区久久精品| 麻豆91在线看| 国产制服丝袜一区| 国产成人av网站| 99视频在线观看一区三区| 91麻豆精东视频| 欧美日本一区二区在线观看| 欧美丰满高潮xxxx喷水动漫| 制服丝袜一区二区三区| 精品久久久久久无| 欧美国产亚洲另类动漫| 国产精品久久久久aaaa| 亚洲欧美另类综合偷拍| 亚洲资源中文字幕| 亚洲地区一二三色| 久久国产人妖系列| 国产·精品毛片| 一本色道综合亚洲| 欧美一区二区三区四区久久| 久久综合资源网| 亚洲精品日韩专区silk| 石原莉奈在线亚洲三区| 国产精品一区久久久久| 91免费版pro下载短视频| 欧美日韩国产一区二区三区地区| 3d动漫精品啪啪1区2区免费| 久久久久久久久久电影| 亚洲视频一区二区在线| 日韩精品成人一区二区三区| 国产精品18久久久久久久久 | 一色屋精品亚洲香蕉网站| 亚洲成人免费视| 激情综合色播激情啊| 91香蕉视频mp4| 日韩精品一区二区三区视频播放 | 国产一区二区三区四区五区美女| 成人激情午夜影院| 777xxx欧美| 中文字幕在线一区| 奇米色777欧美一区二区| 成a人片国产精品| 欧美一区二区三区四区在线观看| 国产精品狼人久久影院观看方式| 日韩av一区二区在线影视| 成人激情黄色小说| 欧美成人福利视频| 一级日本不卡的影视| 国产一区999| 欧美美女直播网站| 国产精品久久久久7777按摩| 奇米四色…亚洲| 欧美色网一区二区| 国产精品三级视频| 黄色日韩三级电影| 制服视频三区第一页精品| 亚洲人妖av一区二区| 国产一区二区三区免费看| 欧美日韩一二三| 中文字幕一区在线观看视频| 国产综合一区二区| 日韩欧美综合在线| 午夜欧美在线一二页| 色悠悠久久综合| 中文字幕亚洲一区二区av在线| 久久91精品国产91久久小草| 欧美日韩在线综合| 亚洲卡通欧美制服中文| www.欧美色图| 欧美国产一区视频在线观看| 国产自产高清不卡| 精品国产乱码久久久久久1区2区 | 亚洲欧美怡红院| 岛国av在线一区| 国产日韩精品一区二区三区| 精品无人区卡一卡二卡三乱码免费卡| 欧美人妖巨大在线| 亚洲地区一二三色| 51精品久久久久久久蜜臀| 午夜成人免费电影| 欧美精品在线一区二区三区|