📄 testnetworkquery.java.svn-base
字号:
package test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.esri.arcgis.carto.IIdentify;
import com.esri.arcgis.carto.IIdentify2;
import com.esri.arcgis.carto.IIdentify2Proxy;
import com.esri.arcgis.carto.IIdentifyObject;
import com.esri.arcgis.carto.IIdentifyProxy;
import com.esri.arcgis.carto.ILayer;
import com.esri.arcgis.datasourcesGDB.SdeWorkspaceFactory;
import com.esri.arcgis.geodatabase.*;
import com.esri.arcgis.geometry.IGeometry;
import com.esri.arcgis.networkanalyst.INAClass;
import com.esri.arcgis.networkanalyst.INAClassFieldMap;
import com.esri.arcgis.networkanalyst.INAClassLoader;
import com.esri.arcgis.networkanalyst.INAContext;
import com.esri.arcgis.networkanalyst.INAContextEdit;
import com.esri.arcgis.networkanalyst.INALayer;
import com.esri.arcgis.networkanalyst.INARouteSolver;
import com.esri.arcgis.networkanalyst.INASolver;
import com.esri.arcgis.networkanalyst.INASolverSettings;
import com.esri.arcgis.networkanalyst.NAClassFieldMap;
import com.esri.arcgis.networkanalyst.NAClassLoader;
import com.esri.arcgis.networkanalyst.NALayer;
import com.esri.arcgis.networkanalyst.NARouteSolver;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.IArray;
import com.esri.arcgis.system.IStringArray;
import com.esri.arcgis.system.PropertySet;
import com.esri.arcgis.system.UID;
import com.esri.arcgis.system.esriLicenseProductCode;
import com.esri.arcgis.geodatabase.esriNetworkElementType;
import junit.framework.TestCase;
public class TestNetworkQuery extends TestCase {
private final Log log=LogFactory.getLog(this.getClass());
private AoInitialize aoInit;
private PropertySet propSet;
private IFeatureWorkspace ifw;
/*private IWorkspaceExtensionManager manager;
private IWorkspaceExtension extension;
private IDatasetContainer2 datasetContainer2;*/
private INetworkDataset pNetDataset;
/*private INAContext pNAContext;
private INALayer pNALayer;
private INAClass pStopsNAClass;
private IFeatureClass pRoutesFC;*/
private INetworkQuery pNetworkQuery;//用来生成NetworkElement
private INetworkForwardStar pNetworkForwardStar;//用来生成Adjacency对象
/*private INetworkForwardStarSetup pNetworkForwardStarSetup;
private String sFromEdgeEIDText;
private int lFromEdgeEID;
private int lEdgeCount;
int i;
private INetworkEdge pFromEdge;
private String sLastExteriorEdgeEIDText;
private INetworkEdge pLastExteriorEdge;
private esriNetworkEdgeDirection eDirection;*/
private INetworkForwardStarAdjacencies pAdjacencies;
private INetworkEdge pNetworkEdge;
private INetworkJunction pNetworkJunction;
private INetworkJunction m_pNetworkJunction;
/*private INetworkTurn pNetworkTurn;
* */
private double[] fromPosition=new double[]{0};
private double[] toPosition=new double[]{1};
private boolean[] isFiltered=new boolean[]{false};
protected void setUp() throws Exception {
super.setUp();
EngineInitializer.initializeEngine();
aoInit= new AoInitialize();
aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngineGeoDB);
propSet = new PropertySet();
propSet.setProperty("SERVER", "192.168.1.220");
propSet.setProperty("INSTANCE", "5151");
propSet.setProperty("USER", "sde");
propSet.setProperty("PASSWORD", "sde");
propSet.setProperty("VERSION", "SDE.DEFAULT");
SdeWorkspaceFactory swf=new SdeWorkspaceFactory();
ifw=(IFeatureWorkspace)swf.open(propSet, 0);
//manager=(IWorkspaceExtensionManager)ifw;
}
protected void tearDown() throws Exception {
super.tearDown();
aoInit.shutdown();
}
/*public void testIdentiry() throws Exception{
FeatureClass ifc=new FeatureClass(ifw.openFeatureClass("Disconnector_Layer0919"));
IQueryFilter q= new QueryFilter();
//查询条件
q.setWhereClause("SVGID=101001322");
IFeatureCursor cursor=new FeatureCursor(ifc.search(q,false));
IFeature f=cursor.nextFeature();
if(f!=null){
//IIdentify idf=new IIdentifyProxy();
//IIdentify idf=(IIdentify)f.getExtent();
//log.info(f.getOID());
IGeometry geo=f.getExtent();
NALayer idf=new NALayer();
IArray array=idf.identify(geo);
//log.info("length=="+array.getCount());
for(int i=0;i<array.getCount();i++){
log.info(array.getElement(i));
}
}
}*/
public void testGetNetworkDataset() throws Exception{
IEnumDataset edst=ifw.openFeatureDataset("ZJ_WZ_OHB1011").getSubsets();
/*UID uid = new UID();
uid.setValue("esriGeoDatabase.NetworkDatasetWorkspaceExtension");
extension=manager.findExtension(uid);
datasetContainer2=new IDatasetContainer2Proxy(extension);*/
//datasetContainer2.getDatasetByName(com.esri.arcgis.geodatabase.esriDatasetType.esriDTNetworkDataset, "ZJ_WZ_OHB_NET0921");
//pNetDataset =new INetworkDatasetProxy(ifw.openFeatureDataset("").getSubsets());
int i=0;
//找出NetworkDataset对象
for(IDataset ds=edst.next();ds!=null;ds=edst.next(),i++){
if(ds.getType()==com.esri.arcgis.geodatabase.esriDatasetType.esriDTNetworkDataset){
pNetDataset=new NetworkDataset(ds);
}
}
/*createRouteAnalysisLayer("name of NAContext",pNetDataset);
//log.info(pNetDataset);
pNAContext=pNALayer.getContext();
pStopsNAClass = (INAClass)pNAContext.getNAClasses().getItemByName("Stops");
pRoutesFC = (IFeatureClass)pNAContext.getNAClasses().getItemByName("Routes");
INAClassFieldMap pNAClassFieldMap = new NAClassFieldMap();
pNAClassFieldMap.setMappedField("objectid", "objectid");
INAClassLoader pNALoader = new NAClassLoader();
pNALoader.setLocatorByRef(pNAContext.getLocator());
pNALoader.setNAClassByRef(pStopsNAClass);
pNALoader.setFieldMapByRef(pNAClassFieldMap);*/
//创建INetworkQuery对象用来生成NetworkElement
pNetworkQuery=(INetworkQuery)pNetDataset;
//创建空的INetworkJunction
m_pNetworkJunction=(INetworkJunction)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETJunction);
//pFromEdge=(INetworkEdge)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETEdge);
//pLastExteriorEdge=(INetworkEdge)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETEdge);
//根据图层名称和ObjectID查出NetworkElement
IEnumNetworkElement e=pNetworkQuery.getElementsByOID(pNetDataset.getSourceByName("Breaker_Layer1011").getID(), 1);
//把INetworkJunction传入,根据输入的ElementID 得到查询的Junction
pNetworkQuery.queryJunction(e.next().getEID(), m_pNetworkJunction);
//pNetworkQuery.queryEdge(150, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAlongDigitized, pFromEdge);
//创建INetworkForwardStar用来作网络分析
pNetworkForwardStar=pNetworkQuery.createForwardStar();
//pNetworkForwardStarSetup=new INetworkForwardStarSetupProxy(pNetworkForwardStar);
//创建空的INetworkForwardStarAdjacencies对象
pAdjacencies=pNetworkQuery.createForwardStarAdjacencies();
//创建空的INetworkEdge和空的INetworkJunction
pNetworkEdge=(INetworkEdge)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETEdge);
pNetworkJunction=(INetworkJunction)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETJunction);
//pNetworkTurn=(INetworkTurn)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETTurn);
//pNetworkForwardStar.queryAdjacencies(m_pNetworkJunction, pFromEdge, pLastExteriorEdge, pAdjacencies);
//把指定的Junction和Adjacency作为参数传入queryAdjacencies方法中,得到Junction的邻近边
pNetworkForwardStar.queryAdjacencies(m_pNetworkJunction, null, null, pAdjacencies);
for(i=0;i<pAdjacencies.getCount();i++){
//把空的边对象传入,查询取得邻近边
pAdjacencies.queryEdge(i, pNetworkEdge, fromPosition,toPosition );
//把空的Junction对象传入,查询取得指定Junction对面的Junciton
pAdjacencies.queryToJunction(i, pNetworkJunction, isFiltered);
log.info("NetWorkEdge eid :"+pNetworkEdge.getEID()+" Junction eid :"+pNetworkJunction.getEID());
//传入Junction对象,查询取得边上的两个Junction
pNetworkEdge.queryJunctions(pNetworkJunction, m_pNetworkJunction);
log.info("edge is "+pNetworkEdge.getEID()+" from : "+pNetworkJunction.getEID()+" to : "+m_pNetworkJunction.getEID());
log.info("fromPosition : "+fromPosition[0]+" toPosition : "+toPosition[0]);
log.info("====================================");
}
/*pNetworkQuery.queryEdge(151, com.esri.arcgis.geodatabase.esriNetworkEdgeDirection.esriNEDAlongDigitized, pNetworkEdge);
pNetworkEdge.queryJunctions(pNetworkJunction, m_pNetworkJunction);
log.info("edge is "+pNetworkEdge.getEID()+" from : "+pNetworkJunction.getEID()+" to : "+m_pNetworkJunction.getEID());*/
}
/*private void createRouteAnalysisLayer(String name,INetworkDataset pNetDataset) throws Exception{
INARouteSolver pNARouteSolver = new NARouteSolver();
INASolverSettings pNASolverSettings = (INASolverSettings)pNARouteSolver ;
INASolver pNASolver = (INASolver)pNARouteSolver ;
//Set some properties on the the route solver interface
pNARouteSolver.setFindBestSequence(true);
pNARouteSolver.setPreserveFirstStop(true);
pNARouteSolver.setPreserveLastStop(false);
pNARouteSolver.setUseTimeWindows(false);
// pNARouteSolver.OutputLines = esriNAOutputLineType.esriNAOutputLineTrueShapeWithMeasure;
pNARouteSolver.setOutputLines(com.esri.arcgis.networkanalyst.esriNAOutputLineType.esriNAOutputLineTrueShapeWithMeasure);
//Set some properties on the general INASolverSettings interface
IStringArray pRestrictions = pNASolverSettings.getRestrictionAttributeNames();
pRestrictions.add("Oneway");
pNASolverSettings.setRestrictionAttributeNamesByRef(pRestrictions);
//Get the NetworkDataset's Data Element
IDatasetComponent pDatasetComponent = (IDatasetComponent)pNetDataset ;
IDENetworkDataset pDENetworkDataset = (IDENetworkDataset)pDatasetComponent.getDataElement();
//Create the NAContext and bind to it
pNAContext = pNASolver.createContext(pDENetworkDataset, name);
INAContextEdit pNAContextEdit = (INAContextEdit)pNAContext;
pNAContextEdit.bind(pNetDataset, new GPMessages());
//Create the NALayer
pNALayer = pNASolver.createLayer(pNAContext);
((ILayer)pNALayer).setName(name);
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -