#include "ogrsf_frmts.h"
#include <iostream>
#include <qgstininterpolator.h>
#include <QtCore/QList>
int main() {
const char* pszDriverName = "ESRI Shapefile";
GDALDriver* poDriver;
GDALAllRegister();
poDriver = GetGDALDriverManager()->GetDriverByName(pszDriverName);
if (poDriver == NULL)
{
printf("%s driver not available.\n", pszDriverName);
return 0;
}
GDALDataset* poDS;
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("point_out", NULL, wkbPoint, NULL);
if (poLayer == NULL)
{
printf("Layer creation failed.\n");
return 0;
}
OGRFieldDefn idField("ID", OFTReal);
OGRFieldDefn firstField("VALUE", OFTInteger);
OGRFieldDefn secondField("X", OFTReal);
OGRFieldDefn thirdField("Y", OFTReal);
idField.SetWidth(32);
firstField.SetWidth(32);
secondField.SetWidth(32);
thirdField.SetWidth(32);
poLayer->CreateField(&idField);
poLayer->CreateField(&firstField);
poLayer->CreateField(&secondField);
poLayer->CreateField(&thirdField);
int x, y;
int a = 10, b = 1000;
for (int i = 1; i <= 30; i++)
{
OGRFeature* poFeature;
poFeature = OGRFeature::CreateFeature(poLayer->GetLayerDefn());
poFeature->SetField("ID", i);
std::cout << "input x:";
std::cin >> x;
std::cout << "input y:";
std::cin >> y;
poFeature->SetField("X", x);
poFeature->SetField("Y", y);
int value;
std::cout << "input value:";
std::cin >> value;
poFeature->SetField("VALUE", value);
OGRPoint pt;
pt.setX(x);
pt.setY(y);
poFeature->SetGeometry(&pt);
if (poLayer->CreateFeature(poFeature) != OGRERR_NONE)
{
printf("Failed to create feature in shapefile.\n");
return 0;
}
OGRFeature::DestroyFeature(poFeature);
}
GDALClose(poDS);
return 1;
}
C++和GDAL实现shapefile(shp)文件的创建
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 一 gdal.open解析 阅读api可知,gdal.open方法用于创建和打开数据集dataset,如果以‘w’...
- 在更新Xcode7之后,创建C++类生成的头文件后缀变成了.hpp,并非.h文件。那就说说.hpp和.h文件的区别...
- 最近在研究block的底层实现方式,查看了大量的文章都说需要先把block代码转换成C++。然后在网上搜了一些资料...