⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testload.java.svn-base

📁 aresde 空间数据开发 例子
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:

		/*final JButton openShpButton = new JButton();
		openShpButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if(!isopen){
					FileDialog fileDialog = new FileDialog(frame, "Open ShapeFile", FileDialog.LOAD);
					fileDialog.setVisible(true);
					String path = fileDialog.getDirectory();
					String name = fileDialog.getFile();
					try {
						map.clearLayers();
						map.addShapeFile(path, name);
						map.refresh(esriViewDrawPhase.esriViewGeography, null, null);
					} catch (AutomationException e1) {
						e1.printStackTrace();
					} catch (IOException e1) {
						e1.printStackTrace();
					}
				}
			}
		});
		openShpButton.setText("Open shp");
		buttonPanel.add(openShpButton);*/

		final JPanel tocPanel = new JPanel();
		tocPanel.setAutoscrolls(true);
		tocPanel.setLayout(new BorderLayout());
		frame.add(tocPanel, BorderLayout.WEST);

		final TOCBean bean = new TOCBean();
		bean.setLabelEdit(1);
		bean.setBuddyControl(map);
		tocPanel.add(bean);
		
		addEventListeners();
		//
	}
	
	private JButton getJButton1() {
		if (jButton1 == null) {
			try {
				jButton1 = new JButton();
				jButton1.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
				jButton1.setBounds(new java.awt.Rectangle(757,2,128,20));
				jButton1.setText("Load");
				jButton1.addActionListener(new java.awt.event.ActionListener() {
					public void actionPerformed(java.awt.event.ActionEvent e) {
					try{
					load();
					}catch(Exception ex){ex.printStackTrace();}
					}
				});
			} catch (java.lang.Throwable e) {
				
			}
		}
		return jButton1;
	}
	
	void load() throws Exception{
		//getEditor().startEditing(true);
		//getEditor().startEditOperation();
		IEnumDataset edst=Workspace.openFeatureDataset("DatasetTest").getSubsets();
		int i=0;
		for(IDataset ds=edst.next();ds!=null;ds=edst.next()){
			/*System.out.println(ds.getName()+"  "+ds.getType());
			if(ds.getType()==com.esri.arcgis.geodatabase.esriDatasetType.esriDTNetworkDataset){
				pNetDataset=new NetworkDataset(ds);
				pNetworkQuery=(INetworkQuery)pNetDataset;
			}
			if(ds.getType()==com.esri.arcgis.geodatabase.esriDatasetType.esriDTFeatureClass){
				fcls=Workspace.openFeatureClass(ds.getName());
			if(ds.getName().indexOf("Junction")<=0){
				if(ds.getName().indexOf("Text_Layer")<=0){
					IFeatureLayer layer=new FeatureLayer();
					layer.setName(ds.getName());
					layer.setFeatureClassByRef(fcls);
					map.addLayer(layer, i++);
					//layer.setDisplayField("SVGID");
					System.out.println("MaximumScale=="+layer.getMaximumScale());
					System.out.println("MinimumScale=="+layer.getMinimumScale());
				}else{
					//IFDOGraphicsLayerFactory fdoFactory=new FDOGraphicsLayerFactory();
					//IFDOGraphicsLayer fdo=(IFDOGraphicsLayer)fdoFactory.openGraphicsLayer((IFeatureWorkspace)ds.getWorkspace(), (IFeatureDataset)ds, "Text_Layer");
					//map.addLayer(fdoFactory.openGraphicsLayer(Workspace, Workspace.openFeatureDataset("SLB1027_"), ds.getName()),0);
				}
			}
			}*/
			fcls=Workspace.openFeatureClass(ds.getName());
			IFeatureLayer layer=new FeatureLayer();
			layer.setName(ds.getName());
			layer.setFeatureClassByRef(fcls);
			map.addLayer(layer, i++);
		}
		//System.out.println("map count=="+server.getMapCount());
		//server.activate();
		
		//mapname=server.getMapName(0);
		//mapServerInfo = server.getServerInfo(mapname);
		//System.out.println(mapname);
		//mapDescription = mapServerInfo.getDefaultMapDescription();
		//mapServerInfo.getMapLayerInfos().
		
/*			imageDisplay.setHeight(new Double(server.getDefaultPageDescription().getHeight()).intValue());
		imageDisplay.setWidth(new Double(server.getDefaultPageDescription().getWidth()).intValue());
*/			
		map.refresh(esriViewDrawPhase.esriViewGeography, null, null);
	}
	
	public void addEventListeners() throws IOException {
		
		toolbar.addIToolbarControlEventsListener(new IToolbarControlEventsAdapter(){

			public void onItemClick(IToolbarControlEventsOnItemClickEvent arg0) throws IOException, AutomationException {
				if(arg0.getIndex()!=3){//全景
				if(arg0.getIndex()==4){
					select=true;
				}else{
					select=false;
				}
				}
			}
			
			
		});
		
		map.addIMapControlEvents2Listener(new IMapControlEvents2Adapter(){
			

			public void onMouseUp(IMapControlEvents2OnMouseUpEvent theEvent) throws IOException, AutomationException {
				if(theEvent.getButton()==1&&select){
					p2.putCoords(theEvent.getMapX(), theEvent.getMapY());
					//out("isEquals:"+p.equals(p2));
					if(!p.equals(p2)){System.out.println("aaa");
						currentExtent= new Envelope();
						if(p.getX()>=p2.getX()&&p.getY()<=p2.getY()){//向左上拉
							currentExtent.putCoords(p.getX(), p.getY(), p2.getX(), p2.getY());
						}else if(p.getX()<=p2.getX()&&p.getY()<=p2.getY()){//向右上拉
							currentExtent.putCoords(p2.getX(), p.getY(), p.getX(), p2.getY());
						}else if(p.getX()>=p2.getX()&&p.getY()>=p2.getY()){//向右下拉
							currentExtent.putCoords(p.getX(), p2.getY(), p2.getX(), p.getY());
						}else if(p.getX()<=p2.getX()&&p.getY()>=p2.getY()){//向左下拉
							currentExtent.putCoords(p2.getX(), p2.getY(), p.getX(), p.getY());
						}
						identify();
					}
				}
			}

			public void onMouseDown(IMapControlEvents2OnMouseDownEvent evt) throws IOException {
				if(evt.getButton() == 1&&select){
					//textArea.setText(textArea.getText()+"mouse clicked\n");
					currentExtent= new Envelope();
					longArrayX = new LongArray();
					longArrayY = new LongArray();
					longArrayX.add(evt.getX()-10);
					longArrayX.add(evt.getX()+10);
					longArrayY.add(evt.getY()-10);
					longArrayY.add(evt.getY()+10);
					

					mapExtent.setExtent(map.getExtent());
					mapDescription.setMapArea(mapExtent);

					imageDisplay.setHeight(map.getHeight());
					imageDisplay.setWidth(map.getWidth());
					
					
					/*imageDisplay.setHeight(new Double(map.getExtent().getHeight()).intValue());
					imageDisplay.setWidth(new Double(map.getExtent().getWidth()).intValue());*/
					//out("size=="+imageDisplay.getWidth()+","+imageDisplay.getHeight());
					//mapDescription.set
					pc=server.toMapPoints(mapDescription, imageDisplay, longArrayX, longArrayY);
					//pc=server.toPagePoints(currentExtent, imageDisplay, longArrayX, longArrayY);
					p.putCoords(evt.getMapX(), evt.getMapY());
					
					currentExtent.setXMax(pc.getPoint(1).getX());
					currentExtent.setXMin(pc.getPoint(0).getX());
					currentExtent.setYMax(pc.getPoint(0).getY());
					currentExtent.setYMin(pc.getPoint(1).getY());
					
					identify();
					
					//map.getSpatialReference()
					//out("starting identify...");
					//out("mapcoor=="+p.getX()+","+p.getY());
					//out("screencoor=="+evt.getX()+","+evt.getY());
					//out("point count=="+pc.getPointCount());
					//out("toMapcoor=="+pc.getPoint(0).getX()+","+pc.getPoint(0).getY()+"  "+pc.getPoint(1).getX()+","+pc.getPoint(1).getY());
					//out("------");
					
					//out("stop...");
					//System.out.println("result count=="+identifyResults.getCount());
					//textArea.setText(textArea.getText()+map.getMap().getLayer(0).getName()+"\n");
					
				}
			}
			
		}
		);
	}
	
	private void identify() throws IOException{
		identifyResults=server.identify(mapDescription, imageDisplay, currentExtent, 1, esriIdentifyOption.esriIdentifyTopmost, null);
		if ( identifyResults != null && identifyResults.getCount() > 0 ) {
			Object objkeys[] = new Object[]{ new Object() };
			Object objvalues[] = new Object[]{ new Object() };
			String[] keys;
			Object[] vals;
			for ( int i = 0; i < identifyResults.getCount(); i++ ) {
				result = identifyResults.getElement(i);
				pset = result.getProperties();
				pset.getAllProperties(objkeys, objvalues);
				keys = (String[]) objkeys[0];
				vals = (Object[]) objvalues[0];
				setShapeValue(keys, vals, result.getShape().getGeometryType());
				IMapLayerInfo mapLayerInfo = getLayerInfoFromID(result.getLayerID(), mapname);
				//String idField = mapLayerInfo.getDisplayField();
				String idField = "OBJECTID";
				
				if(idField != null) {
					
					Object idFieldValue = null;
					try {
						idFieldValue = pset.getProperty(idField);
						if(idFieldValue == null) throw new NullPointerException();
						out(mapLayerInfo.getName()+" : "+idField+" = "+idFieldValue);
						query(mapLayerInfo.getName(),idFieldValue.toString());
					}
					catch (Exception ex1) {
						idFieldValue = vals[1];
						if(idFieldValue == null)
							idFieldValue = vals[0];
						
					}
				}
				//System.out.println(result.getShape().getGeometryType());
			}
			//out("============");
		}
	}
	
	
	private void out(String str){
		textArea.setText(textArea.getText()+str+"\n");
		textArea.setSelectionEnd(textArea.getText().length()-1);
		/*str+="\n";
		String[] text=textArea.getText().split("\n");
		for(int i=text.length-1;i>=0;i--){
			str+=text[i]+"\n";
		}
		textArea.setText(str);*/
	}
	
	public IMapLayerInfo getLayerInfoFromID(int ID, String mapName) {
		try {
			IMapServerInfo iMapServerInfo = this.server.getServerInfo(mapName);
			IMapLayerInfos layerInfos = iMapServerInfo.getMapLayerInfos();
			IMapLayerInfo layerInfo = null;
			int count = layerInfos.getCount();
			for (int i = 0; i < count; i++) {
				layerInfo = layerInfos.getElement(i);
				if (layerInfo.getID() == ID) {
					break;
				}
			}
			return layerInfo;
		}
		catch (IOException ex) {
			return null;
		}
	}
	
	private void setShapeValue(String keys[], Object values[], int geometryType) {
		for(int i =0 ; i < keys.length; i++) {
			if(keys[i].compareToIgnoreCase("shape") == 0)
				values[i] = getGeometryTypeString(geometryType);
		}
	}
	
	private void query(String layername,String oid) throws Exception{
		m_pNetworkJunction=(INetworkJunction)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETJunction);
		IEnumNetworkElement  e=pNetworkQuery.getElementsByOID(pNetDataset.getSourceByName(layername).getID(), new Integer(oid));
		pNetworkQuery.queryJunction(e.next().getEID(), m_pNetworkJunction);
		pNetworkForwardStar=pNetworkQuery.createForwardStar();
		pAdjacencies=pNetworkQuery.createForwardStarAdjacencies();
		pNetworkEdge=(INetworkEdge)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETEdge);
		pNetworkJunction=(INetworkJunction)pNetworkQuery.createNetworkElement(esriNetworkElementType.esriNETJunction);
		pNetworkForwardStar.queryAdjacencies(m_pNetworkJunction, null, null, pAdjacencies);
		for(int i=0;i<pAdjacencies.getCount();i++){
			//把空的边对象传入,查询取得邻近边
			pAdjacencies.queryEdge(i, pNetworkEdge, fromPosition,toPosition );
			
			//把空的Junction对象传入,查询取得指定Junction对面的Junciton
			pAdjacencies.queryToJunction(i, pNetworkJunction, isFiltered);
			out("NetWorkEdge eid :"+pNetworkEdge.getEID()+" Junction eid :"+pNetworkJunction.getEID());
			
			//传入Junction对象,查询取得边上的两个Junction
			pNetworkEdge.queryJunctions(pNetworkJunction, m_pNetworkJunction);
			out("edge is "+pNetworkEdge.getEID()+" from : "+pNetworkJunction.getEID()+" to : "+m_pNetworkJunction.getEID());
			out("fromPosition : "+fromPosition[0]+" toPosition : "+toPosition[0]);
			out("-------------------------------");
		}
		out("====================================");
	}
	
	private static String getGeometryTypeString(int geometryType) {
		switch(geometryType) {
		case esriGeometryType.esriGeometryAny: return "Any";
		case esriGeometryType.esriGeometryBag: return "Bag";
		case esriGeometryType.esriGeometryBezier3Curve: return "Bezier 3 Curve";
		case esriGeometryType.esriGeometryCircularArc: return "Circular Arc";
		case esriGeometryType.esriGeometryEllipticArc: return "Elliptic Arc";
		case esriGeometryType.esriGeometryEnvelope: return "Envelope";
		case esriGeometryType.esriGeometryLine: return "Line";
		case esriGeometryType.esriGeometryMultiPatch: return "Multi Patch";
		case esriGeometryType.esriGeometryMultipoint: return "Multi Point";
		case esriGeometryType.esriGeometryNull: return "Null";
		case esriGeometryType.esriGeometryPath: return "Path";
		case esriGeometryType.esriGeometryPoint: return "Point";
		case esriGeometryType.esriGeometryPolygon: return "Polygon";
		case esriGeometryType.esriGeometryPolyline: return "Polyline";
		case esriGeometryType.esriGeometryRay: return "Ray";
		case esriGeometryType.esriGeometryRing: return "Ring";
		case esriGeometryType.esriGeometrySphere: return "Sphere";
		case esriGeometryType.esriGeometryTriangleFan: return "Triangle Fan";
		case esriGeometryType.esriGeometryTriangleStrip: return "Triangle Strip";
		default: return "Unknown";
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -