好久没写这个系列的博客了,原先打算研究sharpmap从而从存储和显示部分来探究gis是怎么建成的。最近由于项目的需要,得从.net平台转到C/C++领域,因此改变计划,探究C/C++领域的开源GIS软件。C/C++领域的开源GIS内容是非常丰富,典型的代表有GRASS、QGIS等,而其基本读写部分则是gdal\ogr的天下。gdal\ogr非常强大,可以读写180多种栅格和矢量的格式,存在C++,java,C#,python等多个版本。gdal是读写栅格格式的GIS库,而ogr则是矢量部分。与NTS和JTS对应,C++下的对应基本的空间分析库为geos,其与NTS和JTS接口基本可以一一对应。proj4则是最好开源投影库,gdal在使用了这两个库之后,我们惊奇地发现基本的gis功能已经满足了,有关gdal和ogr的更多内容可以参考李民录老师的博客http://blog.youkuaiyun.com/liminlu0314/article/category/777646。
好了,有了此利器之后,我们可以开始着手建立一个简单gis系统。参照官方的例子和sharpmap架构,封装一个ogr的读写的类,首先创建一个Provider接口,provider接口表示数据源,数据源有打开、关闭两个功能。
#pragma once
#include <string>
using namespace std;
namespace VMap
{
/************************************************************************/
/*
数据源类
class Provider
*/
/************************************************************************/
class Provider
{