如何进行SuperMap iServer服务端开发

有时候在进行地图应用开发时,可能单纯的客户端无法满足要求(如功能和性能等因素),这时就需要进行iServer的服务端开发。SuperMap iServer 6R/7c的服务端开发步骤如下:

一、在Eclipse中新建一个Dynamic Web Project

此过程截图略去

二、引用iServer所需的各类jar包

经测试后发现,必须引用iServer/WEB-INF/lib下的所有jar包,否则运行时会出现一些奇怪的错误。这些jar包所在的位置为[iServer安装目录]\webapps\iserver\WEB-INF\lib。

三、将objectsjava/bin目录添加到环境变量path中

如:

C:\Program Files (x86)\Common Files\NetSarang;D:\ProgramFiles\SuperMap\7_1_1\supermap_iserver_711_12128_147_win64_zip\support\objectsjava\bin;D:\oracle\product\10.2.0\client_1\bin;D:\app\Administrator\product\11.2.0\client_1;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program
Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;%JAVA_HOME%\bin;%JRE_HOME%\bin;C:\Program Files (x86)\Cesoft\Excel Server
2013;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;%MVN_HOME%\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;%M2_HOME%\bin;%ANT_HOME%\bin;D:\ProgramFiles\SuperMap\SMO_DotNET_711_12129_48123_64_x64_CHS_Zip\Bin;C:\Program
Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;

这时还要注意path中不能有两个不同版本的ObjectsJava/bin目录,否则无法正确识别许可。

四、新建一个Java类CBufferQuery,代码如下:

package com.demo;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.supermap.services.components.MapContext;
import com.supermap.services.components.MapException;
import com.supermap.services.components.commontypes.Geometry;
import com.supermap.services.components.commontypes.GeometryType;
import com.supermap.services.components.commontypes.Point2D;
import com.supermap.services.components.commontypes.QueryOption;
import com.supermap.services.components.commontypes.QueryParameter;
import com.supermap.services.components.commontypes.QueryParameterSet;
import com.supermap.services.components.commontypes.QueryResult;
import com.supermap.services.components.impl.MapImpl;
import com.supermap.services.components.spi.MapProviderSetting;
import com.supermap.services.providers.UGCMapProviderSetting;

public class CBufferQuery {

	UGCMapProviderSetting ugcPSetting = null;
	MapContext mapContext = null;
	MapImpl mapc = null;

	public CBufferQuery(){
		// 初始化 SuperMap 地图服务提供者设置。
		ugcPSetting = new UGCMapProviderSetting();
		// SuperMap 工作空间路径,运行时需按指定路径设置。
		String workspacePath = "../../../data/China400/China400.smwu";
		workspacePath = "D:/ProgramFiles/SuperMap/7_1_1/supermap_iserver_711_12128_147_win64_zip/samples/data/China400/China400.smwu";
		if (!new File(workspacePath).exists()) {
		      System.out.println(workspacePath + "位置的工作空间不存在,请更换工作空间地址");
		      System.exit(0);
		}
		ugcPSetting.setWorkspacePath(workspacePath);
		// 地图服务提供者的地图图片的输出路径。
		ugcPSetting.setOutputPath(".\\output");
		// 地图服务提供者的地图图片发布站点。
		ugcPSetting.setOutputSite("http://localhost");
		ugcPSetting.setName("default");
		// 地图服务提供者集合,用于初始化地图服务组件上下文。
		List<MapProviderSetting> ugcPSettings = new ArrayList<MapProviderSetting>();
		ugcPSettings.add(ugcPSetting);
		// 初始化地图服务组件上下文。
		mapContext = new MapContext();
		mapContext.setMapProviderSettings(ugcPSettings);
		// 创建地图服务组件。
		mapc = new MapImpl(mapContext);
	}

	public QueryResult queryByDistance() throws MapException{
		// 属性查询参数集合。
		QueryParameterSet queryParameters = new QueryParameterSet();
		QueryParameter[] queryLayerParams = new QueryParameter[1];
		queryLayerParams[0] = new QueryParameter();
		queryLayerParams[0].name = "[email protected]";
		// 属性过滤条件,这里设为空。
		queryLayerParams[0].attributeFilter = "adminname like '%州%'";
		// 返回的属性字段名称(不区分大小写)。
		queryLayerParams[0].fields = new String[] { "AdminName", "AdminCode" };
		queryParameters.queryParams = queryLayerParams;
		// 设置查询结果只包含属性信息。
		queryParameters.queryOption = QueryOption.ATTRIBUTE;
		// 创建缓冲区查询的参照几何对象,这里为一个三角形的面状对象。
		Point2D p1 = new Point2D(12128888.89, 4628888.89);
		Point2D p2 = new Point2D(11000000.0, 3500000.0);
		Point2D p3 = new Point2D(12128888.89, 3500000.0);
		Point2D[] point2ds = { p1, p2, p3 };
		Geometry geometry = Geometry.fromPoint2Ds(point2ds, GeometryType.REGION);
		// 查询在“China”地图的“[email protected]”图层中,距离指定几何对象为100范围内所有的要素。
		//QueryResult queryResult = mapc.queryByDistance("China", geometry, 100, queryParameters);
		QueryResult queryResult = mapc.queryBySQL("China", queryParameters);
		mapc.dispose();
		return queryResult;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws MapException {
		// TODO Auto-generated method stub
		CBufferQuery cbq = new CBufferQuery();
		QueryResult result = cbq.queryByDistance();
		System.out.println(result.recordsets[0].features[0].fieldValues[0]);
	}

}

五、在代码中单击邮件,选择“通过“Run As/Java Application”运行代码,运行结果如下:

杭州

六、说明

参考iServer帮助文档中的步骤编写完代码后,运行时可能会遇到无法找到UGCMapProviderSetting类等问题,也就是无法识别任何SuperMap的类,这是因为引用的jar包不够的问题,为了避免此类问题发生,没有特殊要求的话最好把iServer/WEB-INF/lib下所有的jar包全部引用到工程里,这样就不会有很多奇怪的问题了。

时间: 2024-12-23 07:10:59

如何进行SuperMap iServer服务端开发的相关文章

在线教学、视频会议软件 Webus Fox(2) 服务端开发手册

上次在<在线教学.视频会议软件 Webus Fox(1)文本.语音.视频聊天及电子白板基本用法>里介绍了软件的基本用法.本文主要介绍服务器端如何配置.开发. 1配置 1.1 IIS配置 Fox支持最基本的.net Framework4.0和IIS6/IIS7. 在IIS7中,对应应用程序池,需要配置为经典模式,支持.net4.0 1.2 web.config配置 Fox服务器端是暂时是host在IIS上,将来将Host在Windows Service上.对于IIS的配置,web.config是

不要害怕服务端开发(一)

经历了前端技术的变更,发现我再也不想去追前端技术了,同学们做java的现在还是做java,我之前做flash的现在没饭吃了,去年改做h5,行业不好混啊,java稳如狗. 之前一直想学服务端开发,现在改变了工作环境,稍微有点时间了,加上最近上班的工作实在是闲,上头布置的游戏前端demo,用3d写了一个,然后用2d写了一个,后面又用h5写了一个. 也找不到好的形容词去形容现在的状态,因为还在试用期,所以不敢太冒进,一直停留在写demo的进度上. 昨天开始,学着用nodejs写来静态服务器. 然后今天

专业移动APP 手机APP后台服务端开发

专业移动APP 手机APP后台服务端开发优势:8年PHP 9年JAVA开发经验采用THINKPHP 和JFINAL ,SBadmin 2框架进行开发完善的开发文档免费一年BUG维护 可签协议,可先预付20%,也可分段付款, 亲 请带好需求文档! QQ 184377367 报价原则1:功能列表2:兼容性3:安全要求等级4:是否需要完善的开发文档5:后台UI是否有要求

.NET服务端开发—多线程使用小结(多线程使用常识)

有一段时间没有更新博客了,最近半年都在着写书<.NET框架设计-大型企业级框架设计艺术>,很高兴这本书将于今年的10月份由图灵出版社出版,有关本书的具体介绍等书要出版的时候我在另写一篇文行做介绍.可以先透露一下,本书是博主多年来对应用框架学习的总结,里面包含了十几个重量级框架模式,这些模式都是我们目前所经常使用到的,对于学习框架和框架开发来说是很好的参考资料,大家敬请期待. 好了,进入文章主题. 最近几个月本人一直从事着SOA服务开发工作,简单点讲就是提供服务接口的:从提供前端接口WEBAPI

WCF服务端开发和客户端引用小结

1.服务端开发(包含寄宿) 1.1 WCF服务创建方式 创建一个WCF服务,总是会创建一个服务接口和一个服务接口实现.通常根据服务宿主的不同,有两种创建方式. (1)创建WCF应用程序 通过创建WCF服务应用程序,可生成一个带.svc后缀名的文件.该文件与webform中的aspx文件类似,有后置代码,这些后置代码是服务接口的实现.这种方式创建的WCF服务都承载在IIS或WAS上. (2)创建WCF服务库 WCF服务库是一个类库,如前所述包含一个服务接口和服务实现,此种方式创建的WCF服务可根据

服务端开发之下载图片等文件

服务端开发中,当客户端需要加载服务端发送的图片文件时,需要服务端提供一个下载图片的程序. 下载图片工具类的代码如下: import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; public class DownloadImageUtil { public stat

Teamcenter9 ITK服务端开发配置

说明:由于Tc9创造性的出现了64bit的版本,还有个更创造性的要求,就是64位的只能在VS2008sp1中编译,故以VS2008重新写了开发配置 首选项名称 TC_customization_libraries 环境 首先,来个环境的截图,E盘下目录. 创建项目 Eg:libMax_register_callbacks.c #include <tc.h> #include <user_server_exits.h> #include <user_exits/user_exi

现代Java服务端开发核心技术栈

现代Java服务端开发核心技术栈 现代Java服务端开发核心技术 Java语言基础篇 互联网生态下的Java Java开发工具箱 Java基础项目搭建 Java数据存储 Java数据运算 Java程序流程控制 Java数组 Java面向对象程序设计 Java异常处理 Java枚举 Java注解 Java 泛型 Java集合 Java IO Java NIO Java操作数据库 Java日志 Java操作XML Java正则表达式 Java8新特性实战 Java9新特性实战 Java10新特性实战

现代Java服务端开发核心技术之开发工具箱

现代Java服务端开发核心技术之开发工具箱 现代Java服务端开发核心技术 2.1 开发工具概述 俗话说,工欲善其事必先利其器,掌握一些日常开中常用的工具软件能够大大提开发效率,工具本身的目的也是解放生产力.在安装各种软件时注意如果没有特殊需要不必使用最新版本,尤其是操作系统,例如当前(2018/10/12)最新版的macOS是10.14,但是运行在macOS之上的其他应用软件可能还没有及时做兼容新系统的版本,可能在系统升级之后无法正常使用,因此推荐在新系统正式推出半年后再升级最为稳妥. 而且软