2 qq 35980546 qq_35980546 于 2017.09.19 08:22 提问

如何将web中的SuperMap地图用iObjects生成一张图片导出呢?

就是网页中的地图将可视的范围变成一张图片导出本地,地图是SuperMap的,要怎么做?

1个回答

code68
code68   2017.09.19 08:34

DatasourceConnectionInfo datasourceConnnectionInfo = new DatasourceConnectionInfo();
datasourceConnnectionInfo.EngineType = EngineType.UDB;
datasourceConnnectionInfo.Server = ":memory:"
datasourceConnnectionInfo.Alias = "mdata";

DatasetVector datasetvectorgrid = workspace.Datasources["mdata"].Datasets["mapgrid"] as DatasetVector;
Recordset recordset = datasetvectorgrid.GetRecordset(false, CursorType.Dynamic);
Rectangle2D maprectangle = new Rectangle2D();
maprectangle = mapcontrol.Map.ViewBounds;
double distancex = (maprectangle.Right - maprectangle.Left) / 10;
double distancey = (maprectangle.Top - maprectangle.Bottom) / 9;
Point2D point2d = new Point2D();
rectangles = new Rectangle2D[100];
Array .Clear (rectangles ,0, rectangles .Length );
int count = 0;
For (int j = 0; j <= 8; j++)
{
for (int i = 0; i <= 9; i++)
{
point2d.X = maprectangle.Left + distancex * i;
point2d.Y = maprectangle.Bottom + distancey * j;
Rectangle2D rectangle = new Rectangle2D(point2d, distancex, distancey);
rectangles[count] = rectangle;
count++;
GeoRectangle georectangle = new GeoRectangle(rectangle, 0);
GeoStyle style = Setgeostyle();
georectangle.Style = style;
recordset.AddNew(georectangle);
recordset.Update();
}
}

计算每一个网格里面有多少个点,并且将将聚合点聚合在当前网格内点对象的中心,将聚合点对象添加到内存数据源“point”,将聚合点数以字段的方式存储,对于在网格线上的点则做优先选择处理,
实现代码如下:

//检查是否包含;
private void IsCanContain()
{
//聚合点数据集;
DatasetVector datasetvectorgrid = workspace.Datasources["mdata"].Datasets["point"] as DatasetVector;
Recordset recordsetpoint = datasetvectorgrid.GetRecordset(false, CursorType.Dynamic);
//原始点数据集;
DatasetVector datasetvectorpoint = workspace.Datasources[0].Datasets["POIP"] as DatasetVector;

Recordset recordset = datasetvectorpoint.GetRecordset(false, CursorType.Static);
//临时单个聚合对象点
DatasetVector datasetvetortpoint = workspace .Datasources ["mdata"].Datasets ["tpoint"] as DatasetVector ;
recordsetpoint.DeleteAll();
Point2D[] point2ds = new Point2D[recordset.RecordCount];
int pointitem = 0;
for (int i = 0; i < 100; i++)
{
int count = 0;
Rectangle2D rectangle = rectangles[i];

recordset.MoveFirst();
Recordset rectangleitemrecordset = datasetvetortpoint.GetRecordset(false, CursorType.Dynamic);
for (int j = 0; j < recordset.RecordCount; j++)
{
Geometry geometry = recordset.GetGeometry();

GeoPoint geopoint = geometry as GeoPoint ;
Point2D point2d = new Point2D (geopoint .X ,geopoint .Y );
if (rectangle .Contains (point2d ))
{
if (Array.IndexOf(point2ds, point2d) == -1)
{
count++;
point2ds[pointitem] = point2d;
pointitem++;
GeoPoint itemgeopoint = new GeoPoint(point2d);
rectangleitemrecordset.AddNew(itemgeopoint);
rectangleitemrecordset.Update();
}
}
recordset.MoveNext();
}
可以参考下

qq_35980546
qq_35980546 不行,生成不了图片,
10 个月之前 回复
qq_35980546
qq_35980546 谢谢大哥,我看一下
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
SuperMap IObjects C++组件学习笔记(二) - Qt接管下IObjectsC++组件的自定义地图绘制
Qt接管下iObjects C++组件的地图自定义绘制一、什么为自定义绘制自定义绘制,顾名思义,就是用自己的方法去绘制地图,由于部分地图绘制任务对地图刷新性能的高要求,如果采用GIS组件提供的内置绘制方法,其绘制过程中会有很多的计算和判断,从而消耗大量的不必要时间。 先要缩短地图绘制时间,我们可以使用自己的绘制方法,从两个方面出发去节省GIS组件绘制地图的时间: + 1.节约查询时间:GIS组件
SuperMap iObjects Java tar 包使用指南
SuperMap iObjects Java 7C tar 包使用指南​ 前言 欢迎使用 Supe
SuperMap iObjects .NET 实现聚合显示详解
随着百度、谷歌等在线地图中出现点聚合显示,即用少量的点或图标来表示地图中的所有点,让地图显示更清晰明朗。有人会问了,SuperMap iObjects .NET可以实现这一可视化吗?回答当然是可以的,下面就跟着我一步一步的来看看具体是如何实现的吧。 一:前期准备: 数据准备:首先需要准备需要聚合的点数据,以及地图底图: 确定聚合算法:本聚合显示采用的是基于网格算法。 二:实现步骤 1、为了
SuperMap iObjects Java在Tomact中的应用
作者:xinxin       本博文主要以Web工程为切入点,介绍SuperMap iObjects Java在Web服务中的应用。下面的举例中开发平台使用MyEclipse ,发布服务的中间件使用Tomact,iObjects Java组件使用的是7.12,大家可以根据自己的项目需求来选择版本即可,但确保它们的位数要一致。一、开发前期准备1、JDK环境配置 从官网上下载JDK(iObjects
SuperMap iObjects for Java组件写iServer扩展服务
SuperMap iObjects for Java组件写iServer扩展服务SuperMap iServer产品里提供了基于 REST 的应用编程接口,这些接口封装了大部分的 GIS 功能,包括基本的地图功能,数据编辑功能,分析功能等。这些接口的实现严格讲也是基于SuperMap iObjects for Java组件完成,本文介绍重点介绍如何用java组件编写iServer的扩展服务,本文以计
SuperMap iObjects .NET 8C技术文档 ——三维管线
SuperMap iObjects .NET 8C技术文档 ——三维管线 作者:博哥 北京超图软件股份有限公司 中国•北京 目录 1. 概述1.1 三维管线场景的组成2. 构建三维网络数据集2.1 组件产品构建三维网络数据集2.2 桌面产品构建三维网络数据集
SuperMap iDesktop 如何制作一幅“星光闪闪”的地图
很久之前从网上看到了QQ同时在线人数的flash地图,就想在超图桌面产品中制作一幅类似静态效果的地图,但一直苦于没有合适的数据来展现。皇天不负有心人,前不久从同事那里获得到一份北京各个地点微博登录人数的数据,貌似可以用来制作类似“星光闪闪”的地图,今天花了点时间小试了一把,成图效果如下: 图1 地图效果示意效果貌似还不错,那接下来就把这幅地图的制作过程分享一下,希望能对有此制图需求的读者有所帮
将iObjects java API帮助集成到eclipse开发环境中
在Eclipse环境下,使用SuperMap iObjects Java进行二次开发时,为了方便查看接口的帮助文档,您可以使用下面的方法将帮助信息集成到开发环境中,这样,当鼠标移动到SuperMap iObjects Java 接口时,将自动弹出对应的帮助信息(如下图)。 将帮助信息集成到开发环境中有两种方式,一种是将SuperMap iObjects Java产品包自带的API帮助集成进来
SuperMap Objects .NET 中更新方法的使用
SuperMap Objects .NET 中更新方法的使用一、 使用软件 SuperMap Objects .NET 6R(2012) 二、 使用背景 大家在使用 SuperMap Objects .NET 6R 进行开发的时候,会发现很多时候,在进行了操作后 需要使用 update,或 updatedata 方法来提交之前所做操作,经常会因为忘记使用这些方法,是 的所做操作没有提交
supermap iobjects学习——workspace,WorkspaceControl,控件交互
工作空间(Workspace)是SuperMap中的一个重要的概念,工作空间存储了一个工程项目中所有的数据源,地图的组织关系,工作空间通过其中的数据源集合对象( Datasources),地图集合对象( Maps)来管理其下的数据源和地图。工作空间中的数据源集合( Datasources)只存储数据源的连接信息和位置等,实际的数据源都存储在数据库或者UDB中。工作空间中的地图集合( Maps)中存...