#include//Geometry对象 #include //Spatial Reference #include //Feature Class Definition #include //LayerDataSourceDrivers #include int main() { CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO"); CPLSetConfigOption("SHAPE_ENCODING", "UTF-8"); //OGRRegisterAll(); GDALAllRegister(); //OGRSFDriverRegistrar* pRegistrar = OGRSFDriverRegistrar::GetRegistrar(); //GDALDriver* ogrDriver = pRegistrar->GetDriverByName("ESRI Shapefile"); GDALDriver* shpDriver = GetGDALDriverManager()->GetDriverByName("ESRI Shapefile"); if (shpDriver == NULL) { printf("%sn", "ESRI Shapefile驱动创建失败!"); return 0; } GDALDataset* gdalDataSet = shpDriver->Create("..\shp\TestPoint.shp", 0, 0, 0, GDT_Unknown, NULL); cout << gdalDataSet << endl; OGRSpatialReference oSR; //osr.SetWellKnownGeogCS("WGS84"); if (oSR.importFromEPSGA(4326) != OGRERR_NONE) { printf("%sn", "坐标系创建失败!"); return -1; } char** papszOptions = NULL; papszOptions = CSLSetNameValue(papszOptions, "ENCODING", "UTF-8"); OGRLayer* shipLayer = gdalDataSet->CreateLayer("ship", &oSR, wkbPoint, papszOptions); //创建字段 OGRFieldDefn idField("ID", OFTInteger); idField.SetWidth(8); shipLayer->CreateField(&idField); OGRFieldDefn nameField("NAME", OFTString); nameField.SetWidth(16); shipLayer->CreateField(&nameField); OGRFieldDefn mmsiField("MMSI", OFTString); mmsiField.SetWidth(16); shipLayer->CreateField(&mmsiField); OGRFeature* ogrFeature = OGRFeature::CreateFeature(shipLayer->GetLayerDefn()); ogrFeature->SetField("ID", 1001); ogrFeature->SetField("NAME", "航空母舰"); ogrFeature->SetField("MMSI", "401956542"); OGRPoint ogrPointI; ogrPointI.setX(1.3); ogrPointI.setY(1.6); ogrFeature->SetGeometry(&ogrPointI); shipLayer->CreateFeature(ogrFeature); OGRFeature::DestroyFeature(ogrFeature); return 0; }
打开QGIS查看一下shp文件有什么信息
如果出现乱码,则设置一下QGIS的编码
确实插入了一个点



