切片地图服务使用Flex API编辑和更新切图
来源:互联网 发布:网络拓扑的分层结构 编辑:程序博客网 时间:2024/05/22 03:13
ArcGIS Flex API 2.0开始支持访问ArcGIS Server 10 的Feature Service进行编辑。
Flex:
minWidth="955" minHeight="600"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags">
url="http://localhost:8399/arcgis/rest/services/sde/world/MapServer"/>
map="{map}"
graphicsLayer="{drawLayer}"
drawEnd="drawTool_drawEnd(event)"/>
url="http://localhost:8399/arcgis/rest/services/sde/world/FeatureServer/0"
editsComplete="{featureLayer0_editsComplete(event)}"
fault="trace(event)"/>
url="http://localhost:8080/ArcObjectsServer/rest/update_cache"
result="httpUpdateCache_resultHandler(event)"
fault="trace(event)"/>
更新数据完成后,再通过基于ArcObjects开发的Web服务更新切图
Java:
private String result(String objectids) {
String result = "false";
IServerContext serverContext = null;
try {
ResourceBundle rb = ResourceBundle.getBundle("wuyf.Config");
String host = rb.getString("HOST");
String username = rb.getString("USERNAME");
String password = rb.getString("PASSWORD");
String service = rb.getString("MAP_SERVER");
int layerId = Integer.valueOf(rb.getString("LAYER_ID"));
ServerInitializer serverInitializer = new ServerInitializer();
serverInitializer.initializeServer(host, username, password);
ServerConnection conn = new ServerConnection();
conn.connect(host);
IServerObjectManager som = conn.getServerObjectManager();
serverContext = som.createServerContext(service, "MapServer");
MapServer mapServer = (MapServer) serverContext.getServerObject();
IFeatureLayer feaLayer = (IFeatureLayer) mapServer.getLayer(
mapServer.getDefaultMapName(), layerId);
IFeatureClass feaClass = feaLayer.getFeatureClass();
String mapName = mapServer.getDefaultMapName();
Map map = (Map) mapServer.getMap(mapName);
ILODInfos lodInfos = mapServer.getCacheDescriptionInfo(
map.getName()).getTileCacheInfo().getLODInfos();
String layers = "";
for (int i = 0, count = map.getLayerCount(); i < count; i++) {
String layerName = map.getLayer(i).getName();
if (layers != "") {
layers += ";";
}
layers += layerName;
}
String levels = "";
for (int i = 0, count = lodInfos.getCount(); i < count; i++) {
ILODInfo lodInfo = lodInfos.getElement(i);
if (levels != "") {
levels += ";";
}
levels += String.format("%f", lodInfo.getScale());
}
String[] ids = objectids.split(",");
String where = "";
for (int i = 0, count = ids.length; i < count; i++) {
if (where != "") {
where += " AND ";
}
where += "OBJECTID=" + ids[i];
}
QueryFilter filter = (QueryFilter) serverContext
.createObject(QueryFilter.getClsid());
filter.setWhereClause(where);
IFeatureCursor feaCursor = feaClass.search(filter, false);
IFeature fea = feaCursor.nextFeature();
while (fea != null) {
IGeometry geo = fea.getShape();
IEnvelope env = geo.getEnvelope();
GeoProcessor gp = (GeoProcessor) serverContext
.createObject(GeoProcessor.getClsid());
gp.setOverwriteOutput(true);
ManageMapServerCacheTiles mc = new ManageMapServerCacheTiles();
VarArray var = (VarArray) serverContext.createObject(VarArray
.getClsid());
var.add(host);
var.add(service);
var.add(mapName);
var.add(layers);
var.add(levels);
var.add("Recreate All Tiles");
String extent =
String.format("%f", env.getXMin()) + " " +
String.format("%f", env.getYMin()) + " " +
String.format("%f", env.getXMax()) + " " +
String.format("%f", env.getYMax());
var.add(extent);
//注意,执行这个GP需要将soc帐号加入到agsadmin组
IGeoProcessorResult gpResult = gp.execute(mc.getToolName() + "_" + mc.getToolboxAlias(),var, null);
if (gp.getMessageCount() > 0) {
for (int i = 0, count = gp.getMessageCount(); i < count; i++) {
System.err.print(gp.getMessage(i));
}
}
fea = feaCursor.nextFeature();
}
result = "true";
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
serverContext.releaseContext();
} catch (Exception ex) {
ex.printStackTrace();
}
}
return result;
}
- 切片地图服务使用Flex API编辑和更新切图
- ArcGIS Flex API 调用天地图和Google地图服务
- ArcGIS Flex API 调用天地图和Google地图服务
- 使用AcrMap发布切片地图服务
- 使用REST API 地图服务无法访问非本地的缓存切片
- ArcGIS API for Flex 调用天地图和Google地图服务
- arcgis切片地图服务
- arcgis for flex api version3.7 教程:5.使用Editor对地图进行编辑
- ArcGIS API for Flex(一) 新增地图和图层
- ArcGIS API for Flex (二)新增地图和图层
- arcgis for flex api version3.7 教程:3.如何使用QueryTask查询地图服务
- 瓦片服务: 地图切片链接
- WMTS-切片地图Web服务
- Flex API 在线编辑
- libGdx地图编辑api
- 使用ArcGIS API for Flex构建Android和iOS移动地图应用程序
- arcgis for flex api version3.7 教程:9.地图范围extent的设置和使用
- 多线程下载地图切片程序(更新)
- 正则表达式
- ArcSDE vs. Oracle Spatial 17
- 《ArcSDE SDK Java 快速实践》 PDF
- ArcSDE vs. Oracle Spatial 18
- 《ArcSDE vs. Oracle Spatial》 PDF
- 切片地图服务使用Flex API编辑和更新切图
- poj 1363
- SQL优化
- 实现十六进制与ASCII码互相转换的问题【WTL实现】
- 应聘穿衣服
- Balsamiq Mockups – 产品原型设计工具
- some problems
- 使用Google API进行翻译 支持大数据量的文字翻译
- ArcGIS Server Java ADF 案例教程 v9.3.1 PDF 版本