如何将制作好的地图导出为图片?
一、介绍
MapGIS Objects SDK : 是一款组件式地理信息开发平台,提供全空间数据存储、管理、显示、编辑、查询、分析、制图输出等二三维一体化核心 GIS 功能,提供 C++、.NET、Java、Python 等开发资源,接口简单易用,性能优越,具备跨平台开发能力。
本篇内容将指导您如何使用 MapGIS Objects SDK 实现将制作好的地图导出为图片。
二、开发环境
软件
| 版本
| 下载地址
| 说明
|
MapGIS 10 x64 All In One SDK for Windows
| 10.7.4.10
|
| MapGIS提供的一款地理信息开发平台,包含MapGIS Objects Java面向 Java 开发环境的跨平台组件式 GIS 开发资源。
|
MapGIS开发授权
| \
|
| MapGIS针对开发者提供开发授权,下载开发包并安装后,还需要获取开发授权才能正常使用。
|
IntelliJ IDEA
| 2020.3以上版本
|
| 一款适用于Java专业开发的集成开发环境(IDE)。
|
JDK
| 1.8
|
| JDK是 Java语言的软件开发工具包,JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
|
三、基础概念
在GIS系统中,将地图导出为图片的核心意义在于实现空间分析成果的高效传播与应用落地。通过将动态地理数据固化为静态图像(如PNG、JPEG格式),不仅突破了专业软件的使用限制,还支持跨平台共享(嵌入报告、网页或移动端),使复杂空间信息(如规划方案、灾害风险图、资源分布热力图)能够直观触达决策者、公众或协作部门。例如:导出疫情防控封控区地图可快速指导基层行动;生成用地规划图能作为法律文件附件公示;输出环境监测专题图可嵌入实时预警系统。这一过程不仅保留了空间分析的精确性与可视化表达(符号、注记、图例),更成为连接GIS技术深度与业务场景需求的桥梁,推动空间决策从专业工具向实际管理、公众参与及应急响应的无缝转化,大幅提升地理信息的时效价值与社会应用效能。
四、业务实现
在进行代码开发前,建议使用MapGIS Desktop(九州)软件来对MapGIS中地图导出的功能进行直观的了解,参考链接 MapGIS Desktop(九州)操作文档。
对于MapGIS Objects Java的开发入门在此不做赘述,详情可参考MapGIS Objects Java的开发入门文档,api文档参考 MapGIS Objects Java API。
1.地图显示
//实例化地图文档对象
document = new Document();
//打开地图文档:根据您自己实际的地图文档本地完整路径打开
boolean isOpen = document.open("C:\\Users\\1\\Desktop\\备份文件夹\\地图文档.mapx") > 0;
System.out.println("地图文档打开成功!");
//获取地图文档中的Maps对象:一个地图文档中可包括多个地图
Maps maps = document.getMaps();
//获取地图:根据地图索引获取,索引值从0开始
Map map = maps.getMap(0);
//将地图map赋予给地图控件mapcontrol
mapControl.setMap(map);
//复位地图
mapControl.restoreWnd();
2.地图导出
//获取地图
Map curMap = this.mapControl.getMap();
//获取视图范围
Rect outputRange = curMap.getViewRange();
//图片DPI
double dpi = 300;
/* 计算图片高、宽
* 注:接口中需要传入的height、width参数单位为像素值,故需要根据dpi和所需图片大小计算
* 此处使用的高宽值为标准A4大小(297x210)
*/
int width = (int) Math.ceil((210 / 25.4) * dpi);
int height = (int) Math.ceil((297 / 25.4) * dpi);
//选择保存路径
FileChooser saveFile = new FileChooser();
saveFile.setTitle("图片保存至");
saveFile.getExtensionFilters().addAll(
new FileChooser.ExtensionFilter("图片", "*.jpg")
);
String filePath = "C:\\Users\\1\\Desktop\\备份文件夹\\地图文档.jpg";
//地图视图输出为图片(JPG格式)
boolean outRtn = curMap.outputToImageFile(filePath, outputRange, width, height,
ImageType.JPG, false, 9, true, dpi);