Что ж, подход "в лоб" привел к тому, что пустой слой в ArcMAP не создать, ибо слой - это графическое представление данных. То есть, пустой слой - это пустой класс объектов (простых или пространственных). Потому, чтобы не лезть в базу геоданных пришлось создавать пустой шейп-файл и уже на его основе делать слой. Создавал шейп-файл так:
HRESULT CoDBSA::CreateShapeFile(String *Name,IGeometry *ipGeom)
{
System::String *pathFolder = S"C:\\Temp\\";
ESRI::ArcGIS::Geodatabase::IWorkspaceFactory *ipWSF;
ESRI::ArcGIS::Geodatabase::IFeatureWorkspace *ipFWS;
ESRI::ArcGIS::Geodatabase::IFields *ipFs;
ESRI::ArcGIS::Geodatabase::IField *ipF;
ESRI::ArcGIS::Geodatabase::IFieldsEdit *ipFsE;
ESRI::ArcGIS::Geodatabase::IFieldEdit *ipFE;
ESRI::ArcGIS::Geodatabase::IGeometryDef *ipGeomDef;
ESRI::ArcGIS::Geodatabase::IGeometryDefEdit *ipGeomDefEdit;
ESRI::ArcGIS::Geodatabase::IFeatureClass *ipFC;
ESRI::ArcGIS::Geometry::ISpatialReference *ipSR;
ESRI::ArcGIS::Geodatabase::esriFieldType FType;
ESRI::ArcGIS::Geometry::esriGeometryType GeomType;
ESRI::ArcGIS::Geodatabase::esriFeatureType FeatType;
// проверка на наличие геометрии
if(ipGeom == NULL || ipGeom->IsEmpty == true) // геометрия пустая
{
FType = ESRI::ArcGIS::Geodatabase::esriFieldTypeGeometry;
GeomType = ESRI::ArcGIS::Geometry::esriGeometryPolygon;
ipSR = new ESRI::ArcGIS::Geometry::UnknownCoordinateSystemClass();
}
else // геометрия не пустая - заполнение параметров shape-файла из геометрии
{
FType = ESRI::ArcGIS::Geodatabase::esriFieldTypeGeometry;
GeomType = ipGeom->get_GeometryType();
ipSR = ipGeom->get_SpatialReference();
}
// открытие директории, в которой будет создан Shapefile
ipWSF = new ESRI::ArcGIS::DataSourcesFile::ShapefileWorkspaceFactoryClass();
ipFWS = (IFeatureWorkspace*)ipWSF->OpenFromFile(pathFolder,0);
mIpWS = (IWorkspace*)ipFWS;
// создание и инициализация коллекции полей
ipFs = new ESRI::ArcGIS::Geodatabase::FieldsClass();
ipF = new ESRI::ArcGIS::Geodatabase::FieldClass();
ipFsE = (IFieldsEdit*)ipFs;
// создание поля геометрии
ipFE = (IFieldEdit*) ipF;
ipFE->set_Name(S"Shape");
ipFE->set_Type(FType);
ipGeomDef = new ESRI::ArcGIS::Geodatabase::GeometryDefClass();
ipGeomDefEdit = (IGeometryDefEdit*)ipGeomDef;
ipGeomDefEdit->set_GeometryType(GeomType);
ipGeomDefEdit->set_SpatialReference(ipSR);
ipFE->set_GeometryDef(ipGeomDef);
ipFsE->AddField(ipF);
// создание Shape-файла
FeatType = ESRI::ArcGIS::Geodatabase::esriFTSimple;
try{ipFC = ipFWS->CreateFeatureClass(Name,ipFs,0,0,FeatType,S"Shape",S"");}
catch(Exception *Ex){return -1;}
return S_OK;
}