最近在做GIS相关的项目,遇到读写shapefile文件的需求,根据ShapeLib开源库定义的接口,编写了读shapefile和写shapefile的两个样例程序,仅供参考学习。
1.定义坐标点数据类型
struct Point
{
Point()
{
x = 0.0;
y = 0.0;
z = 0.0;
}
Point(double _x, double _y, double _z)
{
x = _x;
y = _y;
z = _z;
}
double x;
double y;
double z;
};
2.读取一个shapefile文件
void readShapeFile()
{
// 获取shp文件名
std::string shp_fn = "line.shp";
SHPHandle hSHP;
DBFHandle hDBF;
int nShapeType, nEntities;
double adfMinBound[4], adfMaxBound[4];
hSHP = SHPOpen(shp_fn.c_str(), "r");
if (hSHP == NULL)
{
return;
}
char szDBF[MAX_PATH + 1];
strcpy_s(szDBF, shp_fn.c_str());
szDBF[strlen(szDBF) - 3] = '\0';
strcat_s(szDBF, "dbf");
hDBF = DBFOpen(szDBF, "rb");
if (!hDBF)


2042

被折叠的 条评论
为什么被折叠?



