📄 agslocalbuffercalculator.java
字号:
package com.esri.solutions.jitk.common.analysis.buffer;
import com.esri.adf.web.ags.data.AGSLocalMapResource;
import com.esri.adf.web.ags.util.AGSUtil;
import com.esri.adf.web.data.geometry.WebGeometry;
import com.esri.adf.web.data.geometry.WebPolygon;
import com.esri.arcgis.geometry.IGeometry;
import com.esri.arcgis.geometry.IPolygon2;
import com.esri.arcgis.geometry.ISpatialReference;
import com.esri.arcgis.geometry.ITopologicalOperator;
import com.esri.arcgis.geometry.Point;
import com.esri.arcgis.server.IServerContext;
import com.esri.arcgisws.Geometry;
import com.esri.arcgisws.PolygonN;
import com.esri.solutions.jitk.common.geometry.DistanceConverter;
public class AgsLocalBufferCalculator implements IBufferCalculator {
protected AGSLocalMapResource agsLocalMapResource;
public AgsLocalBufferCalculator(AGSLocalMapResource agsResource) {
this.agsLocalMapResource = agsResource;
}
public WebGeometry calculateBuffer(WebGeometry geoOrigin, double dDistance, int iUnits)
throws Exception {
WebGeometry geoBuffer = null;
if (dDistance > 0) {
IServerContext serverContext = agsLocalMapResource.getServerContext();
//Convert the origin to an ArcObjects feature
Geometry agsPt = (Geometry)AGSUtil.toAGSGeometry(geoOrigin);
Point pointOrigin = (Point)AGSUtil.createArcObjectFromStub(agsPt, serverContext);
//Convert the distance from an ADF distance to ArcObject distance
ISpatialReference ipSpatRef = pointOrigin.getSpatialReference();
double projDist = DistanceConverter.convertDistance(
ipSpatRef, iUnits, dDistance, serverContext);
//Buffer origin feature and densify
ITopologicalOperator ipTopoOp = (ITopologicalOperator) pointOrigin;
IGeometry ipGeoBuffer = (IGeometry) ipTopoOp.buffer(projDist);
IPolygon2 ipPolyBuffer = (IPolygon2) ipGeoBuffer;
ipPolyBuffer.densify(0, 0);
PolygonN poly = (PolygonN) AGSUtil.createStubFromArcObject(ipPolyBuffer, PolygonN.class, serverContext);
WebPolygon webPoly = (WebPolygon) AGSUtil.fromAGSGeometry(poly);
geoBuffer = (WebGeometry) webPoly;
}
else {
//If the distance is 0, then the buffer origin is the geometry
geoBuffer = geoOrigin;
}
return geoBuffer;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -