GDAL显示线性shp文件

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文件的更多相关文章
- Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...
- 结合C++和GDAL实现shapefile(shp)文件的创建和写入
工具:vs2012+GDAL 2.0 包含头文件: #include "ogrsf_frmts.h" int main() { const char *pszDriverName ...
- 结合C++和GDAL实现shapefile(shp)文件的读取
工具:vs2012+GDAL 2.0 数据:中国省界SHP文件bou2_4p.shp 可点击下载 包含头文件: #include "ogrsf_frmts.h" 代码: int ...
- 在matlab中实现遥感影像和shp文件的结合显示
clc;close all;clear; road=shaperead('boston_roads.shp'); %读取shape文件 figure, mapshow('boston.tif'); % ...
- GDAL 生成shp文件
附件:http://pan.baidu.com/s/1i3GPwrV(C#版GDAL接口.dll) 示例程序: http://pan.baidu.com/s/1jpIKQ (程序是在vs2008 x ...
- C#、C++用GDAL读shp文件(转载)
C#.C++用GDAL读shp文件 C#用GDAL读shp文件 (2012-08-14 17:09:45) 标签: 杂谈 分类: c#方面的总结 1.目前使用开发环境为VS2008+GDAL1.81 ...
- C#、AE开发入门之打开shp文件并显示
首先要建立好对应的对话框程序,并拖入axMapControl控件和axLisence控件,并设置一个按钮打开该文件 当然在使用前一定要绑定对应的ArcGis产品 static void Main() ...
- Portal for ArcGIS上传shp文件中文乱码可能情况
环境: windows Server 2008:Portal for ArcGIS 10.2:ArcGIS for Server 10.2:PostgreSQL 9.2:ArcGIS for Desk ...
- -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作
2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...
随机推荐
- iPad学做菜
项目描述:家常菜.川菜 .鲁菜.东北菜.甜品等各大菜系应有尽有,详细的制作步骤,再也不用为自己不会做饭而烦恼. 主要技术:主界面采用UISplitViewController的结构设计:自定义各大菜系 ...
- Linux中Firefox——Httpfox插件安装及使用
Httpfox插件安装步骤: 1.打开firefox浏览器,点击左上方"工具"中的"附加组件" 2.在弹出页中搜索"Httpfox",点击下 ...
- Nvidia CUDA 6 Installed In Ubuntu 12.04
环境:ubuntu 12.04 (x64) 如果不能够 service lightdm stop,显示:unknown service 或者其他的 sudo /etc/init.d/lightdm r ...
- jetty 8.1.8 PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required
应该是jdk和jre配置问题,建议看看这个博客:http://blog.csdn.net/nba_2011/article/details/7219750里边查看配置方法很清楚
- shell之冒号的作用
冒号: :在shell中是一种命令,意思是总是为真,但是却不做任何操作,即总是为真的空命令 eg: [root@localhost ~]# ${abc:=t1}-bash: t1: comma ...
- SQL Server 查看空间使用情况的 5 种方法
解决方法: 方法 1.sp_spaceused 方法 2.dbcc sqlperf 方法 3.dbcc showfilestats 方法 4.dbcc showcontig 方法 5.sys.dm_d ...
- Monkey学习笔记<四>:Monkey服务器命令
#使用如下命令将本地pc和手机连接起来 adb shell monkey --port 1080 adb forward tcp 1080:tcp 1080 telnet localhost 1080 ...
- 十一、外观(Facade)模式--结构模式(Structural Pattern)
外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式.门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行. 门面模式提供一个高层次 ...
- C# 调用FFmpeg 根据图片合成视频
1.项目结构: 2.代码: using System; using System.Collections.Generic; using System.Diagnostics; using System ...
- 【温故而知新-万花筒】C# 异步编程 逆变 协变 委托 事件 事件参数 迭代 线程、多线程、线程池、后台线程
额基本脱离了2.0 3.5的时代了.在.net 4.0+ 时代.一切都是辣么简单! 参考文档: http://www.cnblogs.com/linzheng/archive/2012/04/11/2 ...