全国高分辨率土地利用数据服务 土地利用数据服务 土地覆盖数据服务 坡度数据服务 土壤侵蚀数据服务 全国各省市DEM数据服务 耕地资源空间分布数据服务 草地资源空间分布数据服务 林地资源空间分布数据服务 水域资源空间分布数据服务 建设用地空间分布数据服务 地形、地貌、土壤数据服务 分坡度耕地数据服务 全国大宗农作物种植范围空间分布数据服务
多种卫星遥感数据反演植被覆盖度数据服务 地表反照率数据服务 比辐射率数据服务 地表温度数据服务 地表蒸腾与蒸散数据服务 归一化植被指数数据服务 叶面积指数数据服务 净初级生产力数据服务 净生态系统生产力数据服务 生态系统总初级生产力数据服务 生态系统类型分布数据服务 土壤类型质地养分数据服务 生态系统空间分布数据服务 增强型植被指数数据服务
多年平均气温空间分布数据服务 多年平均降水量空间分布数据服务 湿润指数数据服务 大于0℃积温空间分布数据服务 光合有效辐射分量数据服务 显热/潜热信息数据服务 波文比信息数据服务 地表净辐射通量数据服务 光合有效辐射数据服务 温度带分区数据服务 山区小气候因子精细数据服务
全国夜间灯光指数数据服务 全国GDP公里格网数据服务 全国建筑物总面积公里格网数据服务 全国人口密度数据服务 全国县级医院分布数据服务 人口调查空间分布数据服务 收入统计空间分布数据服务 矿山面积统计及分布数据服务 载畜量及空间分布数据服务 农作物种植面积统计数据服务 农田分类面积统计数据服务 农作物长势遥感监测数据服务 医疗资源统计数据服务 教育资源统计数据服务 行政辖区信息数据服务
Landsat 8 高分二号 高分一号 SPOT-6卫星影像 法国Pleiades高分卫星 资源三号卫星 风云3号 中巴资源卫星 NOAA/AVHRR MODIS Landsat TM 环境小卫星 Landsat MSS 天绘一号卫星影像
我们在用ArcGIS Engine定制开发的时候,常常需要将当前的地图文档输出,或者以bmp的形式拷贝到剪贴板,那么到底该如何实现这些操作呢?这篇文章将会给我们介绍两种常用的方法。
一、实现像ArcMap的Edit菜单下Copy Map to Clipboard
实际上AE并没有提供实现这一功能的方法,但我们可以采用Windows32 API函数来实现。
思路:获取到MapControl的句柄然后实现一个一般的剪贴板拷贝程序,将MapControl范围内的视图以位图形式复制过去。以下代码片段供参考:
CWnd *pWndCal =GetDlgItem(IDC_MAPCONTROL1) //获取指MapControl的指针
CBitmap bitmap
CClientDC dc(pWndCal) //获得MapControl客户区的设备环境
memdc.CreateCompatibleDC(&dc) //创建和指定dc兼容的内存dc
pWndCal->GetClientRect(rect) //获得MapControl的范围(Client Rectangle)
//创建一个和指定设备环境兼容的位图bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height())
CBitmap* poldbitmap = memdc.SelectObject(&bitmap)
memdc.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY)
pWndCal->OpenClipboard() //打开剪贴板
SetClipboardData(CF_BITMAP,bitmap.GetSafeHandle()) //向剪贴板增加地图
二、采用ExportMap将地图输出为图片
AE给我们提供了很多种将地图输出的方式,包括文件方式和打印等,这些方式又受不同参数的控制有着不同的效果。要想得到符合我们要求的效果,就必须了解这些方法所表达的意思和参数的内容,下面简要说明一下,其它的可以参考开发文档。
思路:采用IActiveView接口下的output方法,可以将地图输出为上十种格式,具体的格式受IExport类型限制,如ExportBMP,ExportPNG、ExportJPEG等,下面以输出为JPEG格式来说明。
首先定义ExportJPEG的实例pExport,然后设置其相关的参数,过程比较简单,这里重点描述一下相关的参数设置。
方法:OutPut(hdc, Dpi, pixelBounds, VisibleBounds, TrackCancel )
1、这里hdc是输出设备,由pExport.StartExporting指定;
2、Dpi是输出图片的精度,但是这里这个resolution并不能改变图片的精度,无论设置多大的dpi,输出同一范围图片的大小、精度都是一样的。要想改变精度,得指定IOutputRasterSettings::ResampleRatio这个参数,可以设置1—5个级别的采样率,在输出图片很大的时候这个参数能提高图片的质量;
3、PixelBounds设置的是输出像素所占的范围;
4、VisibleBounds指定地图可视的范围,这个范围是以地图坐标为单位的,以当前MapExtent为基准来控制放大、缩小视图;
5、还有个参数是pExpotrt.PixelBounds,定义的是输出图片的大小,即图片尺寸,相当于画布大小。当输出像素的范围大于图片大小的时候就会裁切图片,只输出部分地图;当它小于图片尺寸时地图会缩小到画布的一角。
综上所述,VisibleBounds或者像素范围和图片大小都可以设置地图的输出范围,一般按照具体的需要采用其中一种就可以了。
最后一点说明一下,DeviceFrame是当前设备范围,在ArcMap中就是地图所在的客户区,以左上角为起点(0,0);ExportFrame和DeviceFrame差不多,只是可能比前者略小一点;Map Extent一般是指地图范围,采用的是地图单位。整个AO体系里面有很多不同的Extent范围,弄清它们之间的关系对开发人员来说是很必要的。