// gdal_sample.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "gdal_version.h"
#include "gdal_priv.h"
#include "gdal.h"
#include <iostream>
#include "ogrsf_frmts.h"
#include "ogrsf_frmts/shape/ogrshape.h"
#define DYZ_DEBUG_SWITCH "ON"
#if 1
#define DYZ_TEST_FILE_PATH "D:\\code\\gdal-2.3.0\\x64\\Debug\\"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "jiaju.shp"
#define DYZ_TEST_SAVE_FILE DYZ_TEST_FILE_PATH "save.shp"
#else
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "jiaju.shp"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "shoudongjiaju.dxf"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "renwutu.dxf"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "wolunxiang.dwg"
#endif
int main()
{
GDALAllRegister();
CPLSetConfigOption("CPL_DEBUG", DYZ_DEBUG_SWITCH);
CPLSetConfigOption("GDAL_DATA", DYZ_TEST_FILE_PATH);
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
CPLSetConfigOption("SHAPE_ENCODING", "CP936");
const char* FilePath = DYZ_TEST_SAVE_FILE;
//定义驱动
const char *pszDriverName = "ESRI Shapefile";
GDALDriver * poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName);
if (poDriver == NULL)
{
printf("%s driver not available.\n", pszDriverName);
return 0;
}
GDALDataset *poDS;
//创建filepath路径的文件
poDS = poDriver->Create("d:/newShp.shp", 0, 0, 0, GDT_Unknown, NULL); //创建shp文件
if (poDS == NULL)
{
printf("Creation of output file failed.\n");
return 0;
}
//定义图层,点图层
OGRLayer *poLayer;
poLayer = poDS->CreateLayer("", NULL, wkbUnknown, NULL);
if (poLayer == NULL)
{
printf("创建图层失败.\n");
return -3;
}
//创建属性字段
//定义属性字段code、type和name
OGRFieldDefn codeField("code", OFTInteger);
OGRFieldDefn typeField("type", OFTString);
OGRFieldDefn nameField("name", OFTString);
//设置code和type字段的宽度
codeField.SetWidth(32);
typeField.SetWidth(32);
nameField.SetWidth(100);
//创建字段
if (poLayer->CreateField(&codeField) != OGRERR_NONE)
{
printf("创建字段codeField失败.\n");
return -4;
}
if (poLayer->CreateField(&typeField) != OGRERR_NONE)
{
printf("创建字段codeField失败.\n");
return -5;
}
if (poLayer->CreateField(&nameField) != OGRERR_NONE)
{
printf("创建字段name失败.\n");
return -6;
}
int idx = 0;
for (; idx < 10 ;++idx)
{
//创建第i个点
OGRFeature *poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
//设置第i条线的属性
poFeature->SetField("code", idx);
poFeature->SetField("type", "type");
poFeature->SetField("name", "name");
//定义Point,并设置其XY坐标
OGRPoint *poPoint = new OGRPoint();
poPoint->setX(idx);
poPoint->setY(idx);
poFeature->SetGeometry(poPoint);
if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
{
printf("创建point失败.\n");
return -7;
}
OGRFeature::DestroyFeature(poFeature);
}
GDALClose(poDS);
return 0;
}
//
#include "stdafx.h"
#include "gdal_version.h"
#include "gdal_priv.h"
#include "gdal.h"
#include <iostream>
#include "ogrsf_frmts.h"
#include "ogrsf_frmts/shape/ogrshape.h"
#define DYZ_DEBUG_SWITCH "ON"
#if 1
#define DYZ_TEST_FILE_PATH "D:\\code\\gdal-2.3.0\\x64\\Debug\\"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "jiaju.shp"
#define DYZ_TEST_SAVE_FILE DYZ_TEST_FILE_PATH "save.shp"
#else
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "jiaju.shp"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "shoudongjiaju.dxf"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "renwutu.dxf"
#define DYZ_TEST_DWG_FILE DYZ_TEST_FILE_PATH "wolunxiang.dwg"
#endif
int main()
{
GDALAllRegister();
CPLSetConfigOption("CPL_DEBUG", DYZ_DEBUG_SWITCH);
CPLSetConfigOption("GDAL_DATA", DYZ_TEST_FILE_PATH);
CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
CPLSetConfigOption("SHAPE_ENCODING", "CP936");
const char* FilePath = DYZ_TEST_SAVE_FILE;
//定义驱动
const char *pszDriverName = "ESRI Shapefile";
GDALDriver * poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName);
if (poDriver == NULL)
{
printf("%s driver not available.\n", pszDriverName);
return 0;
}
GDALDataset *poDS;
//创建filepath路径的文件
poDS = poDriver->Create("d:/newShp.shp", 0, 0, 0, GDT_Unknown, NULL); //创建shp文件
if (poDS == NULL)
{
printf("Creation of output file failed.\n");
return 0;
}
//定义图层,点图层
OGRLayer *poLayer;
poLayer = poDS->CreateLayer("", NULL, wkbUnknown, NULL);
if (poLayer == NULL)
{
printf("创建图层失败.\n");
return -3;
}
//创建属性字段
//定义属性字段code、type和name
OGRFieldDefn codeField("code", OFTInteger);
OGRFieldDefn typeField("type", OFTString);
OGRFieldDefn nameField("name", OFTString);
//设置code和type字段的宽度
codeField.SetWidth(32);
typeField.SetWidth(32);
nameField.SetWidth(100);
//创建字段
if (poLayer->CreateField(&codeField) != OGRERR_NONE)
{
printf("创建字段codeField失败.\n");
return -4;
}
if (poLayer->CreateField(&typeField) != OGRERR_NONE)
{
printf("创建字段codeField失败.\n");
return -5;
}
if (poLayer->CreateField(&nameField) != OGRERR_NONE)
{
printf("创建字段name失败.\n");
return -6;
}
int idx = 0;
for (; idx < 10 ;++idx)
{
//创建第i个点
OGRFeature *poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
//设置第i条线的属性
poFeature->SetField("code", idx);
poFeature->SetField("type", "type");
poFeature->SetField("name", "name");
//定义Point,并设置其XY坐标
OGRPoint *poPoint = new OGRPoint();
poPoint->setX(idx);
poPoint->setY(idx);
poFeature->SetGeometry(poPoint);
if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
{
printf("创建point失败.\n");
return -7;
}
OGRFeature::DestroyFeature(poFeature);
}
GDALClose(poDS);
return 0;
}