gdal2.0.3读取wfs服务

刘颖-GIS 2017-05-16 05:16:22
1、ArcGIS发布wfs服务,通过QGIS测试服务正常;


2、gdal编译需要对wfs支持,在本人另外一篇帖子上已经做了介绍(以下为测试代码);
const char* pszDriverName="WFS";
GDALDriver *poDriver;
GDALDriver *poDriverShp;
OGRRegisterAll();
poDriver=GetGDALDriverManager()->GetDriverByName(pszDriverName);
poDriverShp=GetGDALDriverManager()->GetDriverByName("ESRI Shapefile");

if (poDriver==NULL)
{
AfxMessageBox(_T("驱动加载失败!"));
return;
}
//加载wfs服务
OGRDataSource *poDS = NULL;
poDS = (OGRDataSource *)GDALOpenEx("WFS:http://192.168.1.101:6080/arcgis/services/2014shp/MapServer/WFSServer",GDAL_OF_VECTOR,NULL,NULL,NULL);

OGRLayer *pLayer = NULL;
OGRLayer *pLayer2 = NULL;
OGRLayer *pLayerUnion = NULL;

OGRSpatialReference *pSpatialRef;

char **wkt;
OGRFeature *pFeature;
//获取wfs服务图层对象
pLayer = poDS->GetLayer(0);
pLayer2 = poDS->GetLayer(1);

//创建输出shp图层,用于测试
GDALDataset *poDSOUT;
poDSOUT = poDriverShp->Create( "d:\\test\\out.shp", 0, 0, 0, GDT_Unknown, NULL );
if( poDSOUT != NULL )
{
pLayerUnion = poDSOUT->CreateLayer("out",pLayer->GetSpatialRef(),pLayer->GetGeomType(),NULL);
}
//wfs图层合并到本地shp图层
pLayer->Union(pLayer2,pLayerUnion,NULL,NULL,NULL);
pLayerUnion->SyncToDisk();
GDALClose(poDSOUT);
GDALClose(poDS);
3、QGIS加载本地输出图层正常。

...全文
318 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧