ArcSDE SDK Java 快速实践 4

· 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();

}

}

}

如上,更改图层后可以查看下更新后图层的网格统计信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值