您的位置:首页 > 编程语言 > Java开发

ArcSDE SDK Java 快速实践 4

2010-06-21 11:04 197 查看

· SeLayer

1. 创建图层

创建图层需要首先创建普通表,然后通过SeLayer的一系列方法给普通表添加几何字段,再注册成Layer。但是,这个方法大多数情况不应该被使用,因为注册完的Layer并没有Geodatabase信息,因此不能直接通过ArcGIS其他产品访问。

下面基于上面创建的CREATE_TEST表创建了一个ArcSDE的图层:

SeConnection conn = getConn();

if (conn != null) {

try {

SeLayer layer = new SeLayer(conn);

layer.setTableName("CREATE_TEST");

layer.setSpatialColumnName("SHAPE");

layer.setShapeTypes(SeLayer.TYPE_POINT);

layer.setStorageTypes(SeLayer.SE_STORAGE_SPATIAL_TYPE);

layer.setGridSizes(SeLayer.SE_SPATIALINDEX_DBTUNE,

SeLayer.SE_SPATIALINDEX_DBTUNE,

SeLayer.SE_SPATIALINDEX_DBTUNE);

layer.create(10, 100);

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

2. 获得图层及信息

一般大多数的应用都是访问已经存在的ArcSDE图层,连接并获取图层对象的操作非常简单:

SeLayer layer = new SeLayer(conn,"SDE_CITIES","SHAPE");

获取图层后就可以获得一些图层相关的信息:

SeConnection conn = getConn();

if (conn != null) {

try {

SeLayer layer = new SeLayer(conn,"SDO_CITIES","SHAPE");

SeCoordinateReference coordRef = layer.getCoordRef();//获得图层空间参考

SeExtent fullExtent = layer.getExtent();//获取图层范围

SeSqlConstruct sqlC = new SeSqlConstruct();

sqlC.setWhere("OBJECTID<30");

SeExtent extent = layer.calculateExtent(false, sqlC);//获取图层(部分)范围

boolean hasSpatialIndex = layer.hasSpatialIndex();//是否存在空间索引

boolean isStorageSdo = layer.isStorageSpatial();//是否SDO_Geometry存储

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

3. 更改图层

获得图层后还可以进行一些更改操作,比如想改变空间索引的格网大小,可以通过以下的代码实现:

SeConnection conn = getConn();

if (conn != null) {

try {

SeLayer layer = new SeLayer(conn,"SDE_CITIES","SHAPE");

layer.setGridSizes(5,0,0);

layer.alter();

layer.getInfo();//刷新图层信息

SeLayerSpatialIndexStats spatialIndexStats = layer.getSpatialIndexStats();

SeLayerGridStats[] gridStats = spatialIndexStats.getGrids();

for(int i=0,numGrids=gridStats.length; i

SeLayerGridStats gridStat = gridStats[i];

int maxFpg = gridStat.getMaxFPG();

System.out.println(maxFpg);

}

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

如上,更改图层后可以查看下更新后图层的网格统计信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: