http://pan.baidu.com/s/1qWIDphU  (工程文件在vs2008中编写)

1、使用到的技术

GDAL:读取矢量数据

GDI:    绘制矢量数据

2、详细解释

GDI绘图:

void CDisplayShpDialogDlg::initialCDC(void)
{
m_slider_r.SetRange(,,FALSE); //对slider范围的设定
m_slider_g.SetRange(,,FALSE);
m_slider_b.SetRange(,,FALSE);
m_pDC = m_picDraw.GetDC();      //获取图形控件的DC
m_picDraw.GetClientRect(m_rectPicture); //获取图形控件的大小
}

GDAL数据读取:

void CDisplayShpDialogDlg::DrawShp()
{
//定义画笔的颜色
newPen.CreatePen(PS_SOLID,,RGB(m_slider_r.GetPos(),m_slider_g.GetPos(),m_slider_b.GetPos())); //给CDC设置会画时的画笔
pOldPen = m_pDC->SelectObject(&newPen);                                    //将CDC与画笔关联起来 CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO" );                         //使GDAL支持中文
OGRRegisterAll();
//打开数据
GDALDataset *poDS ; //定义一个图形数据集
poDS = (GDALDataset *)GDALOpenEx(m_filePathName.GetBuffer(),GDAL_OF_VECTOR,NULL,NULL,NULL); //打开矢量数据并返回指针给数据集
if (poDS==NULL)
{
MessageBox("Open Failed");
exit();
}
OGRLayer *poLayer = poDS->GetLayer(); //从数据集中获取图层
poLayer->GetExtent(envelope);        //获取图层的坐标范围到envelop指向的内存中 poLayer->ResetReading();
OGRFeature *poFeature;            //定义要素指针
while((poFeature = poLayer->GetNextFeature())!=NULL) //从图层中获取要素
{
OGRGeometry *poGeometry=poFeature->GetGeometryRef(); //从要素中获取几何图形
if (poGeometry!=NULL)
{
switch (wkbFlatten(poGeometry->getGeometryType())) //判别几何图形的类型
{case wkbLineString:                   //如果几何图形的类型为线状执行下面程序
OGRLineString *poLine = (OGRLineString*)poGeometry;
for(int i = ;i<poLine->getNumPoints();i++)
{
double staX = poLine->getX(i);
double staY = poLine->getY(i);
TransformCoordinate(&staX,&staY);    //坐标转换
if(i==)
{
m_pDC->MoveTo(staX,staY); //使用CDC类进行绘图
}
else
{
m_pDC->LineTo(staX,staY);
}
}
OGRFeature::DestroyFeature( poFeature );
break;
}
} }
m_pDC->SelectObject(pOldPen);
newPen.DeleteObject();
}

GDAL显示线性shp文件的更多相关文章

  1. Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件

    Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...

  2. 结合C++和GDAL实现shapefile(shp)文件的创建和写入

    工具:vs2012+GDAL 2.0 包含头文件: #include "ogrsf_frmts.h" int main() { const char *pszDriverName ...

  3. 结合C++和GDAL实现shapefile(shp)文件的读取

    工具:vs2012+GDAL 2.0 数据:中国省界SHP文件bou2_4p.shp   可点击下载 包含头文件: #include "ogrsf_frmts.h" 代码: int ...

  4. 在matlab中实现遥感影像和shp文件的结合显示

    clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); % ...

  5. GDAL 生成shp文件

    附件:http://pan.baidu.com/s/1i3GPwrV(C#版GDAL接口.dll) 示例程序: http://pan.baidu.com/s/1jpIKQ  (程序是在vs2008 x ...

  6. C#、C++用GDAL读shp文件(转载)

    C#.C++用GDAL读shp文件 C#用GDAL读shp文件 (2012-08-14 17:09:45) 标签: 杂谈 分类: c#方面的总结 1.目前使用开发环境为VS2008+GDAL1.81 ...

  7. C#、AE开发入门之打开shp文件并显示

    首先要建立好对应的对话框程序,并拖入axMapControl控件和axLisence控件,并设置一个按钮打开该文件 当然在使用前一定要绑定对应的ArcGis产品 static void Main() ...

  8. Portal for ArcGIS上传shp文件中文乱码可能情况

    环境: windows Server 2008:Portal for ArcGIS 10.2:ArcGIS for Server 10.2:PostgreSQL 9.2:ArcGIS for Desk ...

  9. -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

    2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...

随机推荐

  1. XML 解析中,如何排除控制字符

    XML 解析中,如何排除控制字符 今天在解析一个中文的 XML时,始终报错 PCDATA invalid Char value 21 in Entity ,查询了一下这个 21 的ascii 值,发现 ...

  2. Python学习笔记3(数据结构)

    1.元组结构(Tuple) 元组由不同的元素组成,每个元素可以存储不同类型的数据,如字符串.数字甚至元组.元组创建后不能修改. 元组通常代表一行数据,而元组中的元素代表不同的数据项. 1.1元组的创建 ...

  3. css:hover选择器

    :hover 选择器用于选择鼠标指针浮动上面的元素. :hover选择器可以用于所有的元素,不单是链接. 提示::link选择器设置指向未被访问页面的链接的样式,:visited选择器用于设置指向已被 ...

  4. event和window.event

    type:事件的类型,如onlick中的click:srcElement/target:事件源,就是发生事件的元素:button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下 ...

  5. 关于《Cocos2d-x建工程时避免copy文件夹和库》的更新

    在前几篇博文中大概了解了Cocos2d-x引擎的基本结构后打算开始实际操作,便在网上转载了一篇关于VS新建Cocos2d-x项目的文章.今天实际操作的时候发现博主使用的引擎版本和我的不一致(<C ...

  6. Linux GCC

    //test.c #include <stdio.h> int main() { printf("Hello World!\n"); ; } One Shot gcc ...

  7. python笔记之subprocess模块

    python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spaw ...

  8. 阿里巴巴JAVA常考面试题及汇总答案

    一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的? 答:   1.String是字符串常量,StringBuffer和StringB ...

  9. Backward Digit Sums(POJ 3187)

    Backward Digit Sums Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5495   Accepted: 31 ...

  10. Bucket Sort

    (referrence: GeekforGeeks) Bucket sort is mainly useful when input is uniformly distributed over a r ...