gdal读取wfs示例C++代码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

gdal访问标准OGC的WFS服务获取数据的访问方式


提示:以下是本篇文章正文内容,下面案例可供参考

使用步骤

#include "gdal.h"
#include "gdal_priv.h"
#include "ogrsf_frmts.h"
#include "ogr_feature.h"
#include "ogr_core.h"

#pragma comment(lib,"gdal.lib")

CPLSetConfigOption("SHAPE_ENCODING",0);
CPLSetConfigOption("GDAL_DATA","../data");
CPLSetConfigOption("GML_PARSER","XERCES");
CPLSetConfigOption("GML_PARSER","EXPAT");
CPLSetConfigOption("GML_FIELDTYPES","ALWAYS_STRING");

GDALAllRegister();

char* surl = "http://127.0.0.1:8080/geoserver/resafety/wfs";
surl = "http://127.0.0.1:8080/geoserver/resafety/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=resafety:POI";

GDALDataset* poDS = static_cast<GDALDataset*>(GDALOpenEx(surl,GDAL_OF_VECTOR, NULL, NULL, NULL));
if(NULL == poDS)
{
	const char* s_error = CPLGetLastErrorMsg();
	printf(s_error);
}

int n_layer = poDS->GetLayerCount();
OGRLayer* pLayer = NULL;
OGRFeatureDefn* pDef = NULL;
OGRFeature* pFeature = NULL;
for(int i = 0; i < n_layer; i++)
{
	pLayer = poDS->GetLayer(i);
	if(pLayer == NULL)
		continue;

	pDef = pLayer->GetLayerDefn();
	if(pDef == NULL)
		continue;
	pLayer->ResetReading();
	
	while((pFeature = pLayer->GetNextFeature()) != NULL)
	{
		int f_id = pFeature->GetFID();
		printf("%d\n",f_id);
		for(int def = 0; def != pDef->GetFieldCount(); def++)
		{
			OGRFieldDefn* pfielddef = pDef->GetFieldDefn(def);
			const char* s_name = pfielddef->GetNameRef();
			switch(pfielddef->GetType())
			{
			case OFTInteger:
				{	
					int value = pFeature->GetFieldAsInteger(def);
					printf("%d\n",value);
				}
			case OFTInteger64:
				{
					unsigned int value = pFeature->GetFieldAsInteger64(def);
					printf("%ud\n",value);
				}
			case OFTString:
				{
					const char* value = pFeature->GetFieldAsString(def);
					printf("%s\n",value);
				}
			}
		}
		OGRFeature::DestroyFeature(pFeature);
	}
}
GDALClose(poDS);

总结

以上代码仅是对于gdal读取wfs服务数据的示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值