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

📄 ogr_api.cpp

📁 在linux环境下
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 * * 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. * @param dfZ z coordinate of point to add. */void OGR_G_AddPoint( OGRGeometryH hGeom,                      double dfX, double dfY, double dfZ ){    switch( wkbFlatten(((OGRGeometry *) hGeom)->getGeometryType()) )    {      case wkbPoint:      {          ((OGRPoint *) hGeom)->setX( dfX );          ((OGRPoint *) hGeom)->setY( dfY );          ((OGRPoint *) hGeom)->setZ( dfZ );      }      break;      case wkbLineString:        ((OGRLineString *) hGeom)->addPoint( dfX, dfY, dfZ );        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               || 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               || 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;    }}

⌨️ 快捷键说明

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