public static JTable openShapeFileAttributeTable(String folder,String name) throws AutomationException, IOException{
String dbfFilePath=folder;
String dbfFileName=name.split("\\.")[0]+".dbf";//dbf文件的打开
// System.out.println("folder: "+folder+"\n"+"dbfFileName: "+dbfFileName);
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
IWorkspace pWorkspace = pWorkspaceFactory.openFromFile(dbfFilePath,0);
IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace;
IFeatureClass pFeatureClass = pFeatureWorkspace.openFeatureClass(dbfFileName);
IFeatureLayer pFeatureLayer = new FeatureLayer();
pFeatureLayer.setFeatureClassByRef(pFeatureClass);
pFeatureLayer.setName(pFeatureLayer.getName());
ILayerFields pLayerFields=(ILayerFields) pFeatureLayer;
IFeatureCursor pFeatureCursor = pFeatureClass.search(null,false);
IFeature pFeature = pFeatureCursor.nextFeature();
//计算有多少元素
int countFeature=0;
while(pFeature!=null){
countFeature++;
pFeature = pFeatureCursor.nextFeature();
}
//定义table的数据
Object rowData[][]=new Object[countFeature][pLayerFields.getFieldCount()];
Object columnNames[]=new Object[pLayerFields.getFieldCount()];
//附上列植
for(int i=0;i<pLayerFields.getFieldCount();i++){
columnNames[i]=pLayerFields.getField(i).getName();
}
IFeatureCursor pFeatureCursor1 = pFeatureClass.search(null,false);
IFeature pFeature1 = pFeatureCursor1.nextFeature();
//附上行列具体的值
int rowNumber=0;
while(pFeature1!=null){
for(int j=0;j<pLayerFields.getFieldCount();j++){
String tempRow;
if(pLayerFields.findField(pFeatureClass.getShapeFieldName()) == j){
tempRow= pFeatureClass.getShapeType()+"";
}else{
tempRow=pFeature1.getValue(j).toString();
}
rowData[rowNumber][j]=tempRow;
}
rowNumber++;
pFeature1 = pFeatureCursor1.nextFeature();
}
JTable table=new JTable(rowData, columnNames);//注意在窗体里面添加JScrollPane scrollPane = new JScrollPane(table);//Table组件显示数据时,需要将其放置在JScrollPane中,表头才会自动显示出来。
contentPane.add(scrollPane, BorderLayout.CENTER);
return table;
}
Arcengine for Java 打开属性表
最新推荐文章于 2024-06-24 01:24:44 发布