本文整理汇总了C++中OGRLayer::GetGeometryColumn方法的典型用法代码示例。如果您正苦于以下问题:C++ OGRLayer::GetGeometryColumn方法的具体用法?C++ OGRLayer::GetGeometryColumn怎么用?C++ OGRLayer::GetGeometryColumn使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OGRLayer
的用法示例。
在下文中一共展示了OGRLayer::GetGeometryColumn方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
OGRMSSQLSpatialSelectLayer::OGRMSSQLSpatialSelectLayer( OGRMSSQLSpatialDataSource *poDSIn,
CPLODBCStatement * poStmtIn )
{
poDS = poDSIn;
iNextShapeId = 0;
nSRSId = -1;
poFeatureDefn = NULL;
poStmt = poStmtIn;
pszBaseStatement = CPLStrdup( poStmtIn->GetCommand() );
/* identify the geometry column */
pszGeomColumn = NULL;
for ( int iColumn = 0; iColumn < poStmt->GetColCount(); iColumn++ )
{
if ( EQUAL(poStmt->GetColTypeName( iColumn ), "image") )
{
SQLCHAR szTableName[256];
SQLSMALLINT nTableNameLength = 0;
SQLColAttribute(poStmt->GetStatement(), (SQLSMALLINT)(iColumn + 1), SQL_DESC_TABLE_NAME,
szTableName, sizeof(szTableName),
&nTableNameLength, NULL);
if (nTableNameLength > 0)
{
OGRLayer *poBaseLayer = poDS->GetLayerByName((const char*)szTableName);
if (poBaseLayer != NULL && EQUAL(poBaseLayer->GetGeometryColumn(), poStmt->GetColName(iColumn)))
{
nGeomColumnType = MSSQLCOLTYPE_BINARY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
/* copy spatial reference */
if (!poSRS && poBaseLayer->GetSpatialRef())
poSRS = poBaseLayer->GetSpatialRef()->Clone();
break;
}
}
}
else if ( EQUAL(poStmt->GetColTypeName( iColumn ), "geometry") )
{
nGeomColumnType = MSSQLCOLTYPE_GEOMETRY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
break;
}
else if ( EQUAL(poStmt->GetColTypeName( iColumn ), "geography") )
{
nGeomColumnType = MSSQLCOLTYPE_GEOGRAPHY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
break;
}
}
BuildFeatureDefn( "SELECT", poStmt );
if ( GetSpatialRef() && poFeatureDefn->GetGeomFieldCount() == 1)
poFeatureDefn->GetGeomFieldDefn(0)->SetSpatialRef( poSRS );
}
示例2: if
OGRMSSQLSpatialSelectLayer::OGRMSSQLSpatialSelectLayer( OGRMSSQLSpatialDataSource *poDSIn,
CPLODBCStatement * poStmtIn )
{
poDS = poDSIn;
iNextShapeId = 0;
nSRSId = 0;
poFeatureDefn = nullptr;
poStmt = poStmtIn;
pszBaseStatement = CPLStrdup( poStmtIn->GetCommand() );
/* identify the geometry column */
pszGeomColumn = nullptr;
int iImageCol = -1;
for ( int iColumn = 0; iColumn < poStmt->GetColCount(); iColumn++ )
{
if ( EQUAL(poStmt->GetColTypeName( iColumn ), "image") )
{
SQLCHAR szTableName[256];
SQLSMALLINT nTableNameLength = 0;
SQLColAttribute(poStmt->GetStatement(), (SQLSMALLINT)(iColumn + 1), SQL_DESC_TABLE_NAME,
szTableName, sizeof(szTableName),
&nTableNameLength, nullptr);
if (nTableNameLength > 0)
{
OGRLayer *poBaseLayer = poDS->GetLayerByName((const char*)szTableName);
if (poBaseLayer != nullptr && EQUAL(poBaseLayer->GetGeometryColumn(), poStmt->GetColName(iColumn)))
{
nGeomColumnType = MSSQLCOLTYPE_BINARY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
/* copy spatial reference */
if (!poSRS && poBaseLayer->GetSpatialRef())
poSRS = poBaseLayer->GetSpatialRef()->Clone();
break;
}
}
else if (iImageCol == -1)
iImageCol = iColumn;
}
else if ( EQUAL(poStmt->GetColTypeName( iColumn ), "geometry") )
{
nGeomColumnType = MSSQLCOLTYPE_GEOMETRY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
break;
}
else if ( EQUAL(poStmt->GetColTypeName( iColumn ), "geography") )
{
nGeomColumnType = MSSQLCOLTYPE_GEOGRAPHY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
break;
}
else if ( EQUAL(poStmt->GetColTypeName( iColumn ), "udt") )
{
SQLCHAR szUDTTypeName[256];
SQLSMALLINT nUDTTypeNameLength = 0;
SQLColAttribute(poStmt->GetStatement(), (SQLSMALLINT)(iColumn + 1), SQL_CA_SS_UDT_TYPE_NAME,
szUDTTypeName, sizeof(szUDTTypeName),
&nUDTTypeNameLength, nullptr);
// For some reason on unixODBC, a UCS2 string is returned
if ( EQUAL((char*)szUDTTypeName, "geometry") ||
(nUDTTypeNameLength == 16 &&
memcmp(szUDTTypeName, "g\0e\0o\0m\0e\0t\0r\0y", 16) == 0) )
{
nGeomColumnType = MSSQLCOLTYPE_GEOMETRY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
}
else if ( EQUAL((char*)szUDTTypeName, "geography") ||
(nUDTTypeNameLength == 18 &&
memcmp(szUDTTypeName, "g\0e\0o\0g\0r\0a\0p\0h\0y", 18) == 0) )
{
nGeomColumnType = MSSQLCOLTYPE_GEOGRAPHY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iColumn));
}
break;
}
}
if (pszGeomColumn == nullptr && iImageCol >= 0)
{
/* set the image col as geometry column as the last resort */
nGeomColumnType = MSSQLCOLTYPE_BINARY;
pszGeomColumn = CPLStrdup(poStmt->GetColName(iImageCol));
}
BuildFeatureDefn( "SELECT", poStmt );
if ( GetSpatialRef() && poFeatureDefn->GetGeomFieldCount() == 1)
poFeatureDefn->GetGeomFieldDefn(0)->SetSpatialRef( poSRS );
}