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. C++服务器设计(零):总体设计

    这个系列把毕业论文的部分贴了出来,以作保存留念.整个系列分为三大部分,其中第一章到第三章是介绍服务器的系统层设计,设计思路参考了libevent和muduo等开源代码的实现:第四章到第六章是介绍服务器 ...

  2. hdu 1085 Holding Bin-Laden Captive!

    Problem Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for ...

  3. 将String转化为Long,并将Long转化为Date

    package org.ljh.test.javaee; import java.text.SimpleDateFormat; import java.util.Date; public class ...

  4. sqlCacheDependency 更新缓存Cache

    第一步 修改web,config <!--定义数据库连接--> <connectionStrings>  <add name="NorthwindConnect ...

  5. jquery之stop()的用法

    // 为了看效果,随意写的动画 $('#animater').animate({ 'right':-800 }, 3000).animate({'font-size':'16px'},'normal' ...

  6. ORACLE的客户端如何连接到数据库

    如何连接oracle数据库及故障解决办法   如何配置才能使客户端连到数据库:     要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是jav ...

  7. html file选中图片后 不经过服务器 立刻显示在页面

    html结构中 file类型加上 onchange事件 ,用FileReader读取图片的data:/images,然后显示在img标签中, 代码如下: <img class="pre ...

  8. 问题汇总-20130927-关于rc.local命令无法执行

    场景:/etc/rc.local有语句 /usr/local/apache/bin/apachectl start mysql cactidb -u root -p123456 -e ' set gl ...

  9. where和having的区别

    1.用的地方不一样 where可以用在select  update delete insert......into语句中 having只能用在select语句中 2.执行顺序不一样 where的搜索条 ...

  10. 基于方法的LINQ语句

    LINQ中的查询方法有两站,一种是使用类似于SQL语句的方式,另一种则是基于方法的语句.基于方法的查询方法使用的是C#中面向对象概念的,主要的方法有: 投影:  Select | SelectMany ...