![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Sub addPoint()
Dim pMxDoc As IMxDocument
Dim pMap As IMap
Dim pFeatureLayer As IFeatureLayer
Dim pFeatureClass As IFeatureClass
Dim p As IPoint
Dim pFeature As IFeature
Set pMxDoc = ThisDocument
Set pMap = pMxDoc.FocusMap
Set pFeatureLayer = pMap.Layer(0)
Set pFeatureClass = pFeatureLayer.FeatureClass
Set pFeature = pFeatureClass.CreateFeature
'添加点的坐标
Set p = New point
p.X = 76374.006
p.Y = -3660.849
Set pFeature.Shape = p
pFeature.Value(2) = "111"
pFeature.Value(3) = "测试添加"
pFeature.Store
End Sub
今天开发arcgis server的时候使用代码动态添加要素,发现出错,结果想用vba试试。结果VBA一试就成功了。
java 添加代码。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
int minx = Integer.parseInt(paramMap.get("Map0_minx").toString());
int miny = Integer.parseInt(paramMap.get("Map0_miny").toString());
WebPoint tmpExtent = new WebPoint();
tmpExtent.setX(minx);
tmpExtent.setY(miny);
tmpExtent = (WebPoint) tmpExtent.toMapGeometry(wm);
AGSLocalMapResource mapResource = (AGSLocalMapResource) context
.getResources().get("ags0");
IFeatureLayer featurelayer = getFeatureLayer(mapResource);
IServerContext serverContext = mapResource.getServerContext();
IPoint webPoint = (IPoint) serverContext.createObject(Point.getClsid());
webPoint.setX(tmpExtent.getX());
webPoint.setY(tmpExtent.getY());
if (featurelayer != null) {
IFeatureClass featureCls=featurelayer.getFeatureClass();
System.out.println("aliasName:" +featureCls.getAliasName());
IDataset ds=new IDatasetProxy(featureCls);
IWorkspace ws=new IWorkspaceProxy(ds.getWorkspace());
IWorkspaceEdit wse=new IWorkspaceEditProxy(ws);
//IWorkspaceEdit wse=(IWorkspaceEdit)ws;
//wse.startEditing(false);
wse.startEditOperation();
IFeature feature =featureCls.createFeature();
feature.setShapeByRef((IGeometry) webPoint);
feature.setValue(2, "123456");
feature.setValue(3, "测试添加");
feature.store();
wse.stopEditOperation();
//wse.stopEditing(true);
}
context.refresh();
java 下出错于下:
AutomationException: 0x80004005 - Unspecified error
at com.esri.arcgis.interop.Dispatch.vtblInvoke(Unknown Source)
at com.esri.arcgis.geodatabase.IFeatureClassProxy.createFeature(Unknown Source)
最后发现没有问题,后面我打了arcgis server sp 6. 问题解决了。原来是补丁的问题。