📄 testload.java.svn-base
字号:
/*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 + -