ArcSDE SDK Java 快速實踐 5

來源:互聯網
上載者:User
I. 資料操作
· 添加

添加資料操作封裝在SeInsert類中,如下的代碼展示了如何在一個名為“PT”的點圖層中添加資料:

SeConnection conn = getConn();

if (conn != null) {

try {

SeInsert insert = new SeInsert(conn);

insert.intoTable("PT", new String[] { "SHAPE", "NAME" });

insert.setWriteMode(true);// 開啟buffer

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

SeCoordinateReference cr = layer.getCoordRef();

for (int i = 0; i < 10; i++) {

SeRow row = insert.getRowToSet();

SeShape shape = new SeShape(cr);

String wkt = "POINT("+i+" " + i+")";

shape.generateFromText(wkt);

row.setShape(0, shape);

row.setNString(1, "名稱" + i);

insert.execute();

}

insert.flushBufferedWrites();

insert.close();

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

· 查詢

查詢資料操作封裝在SeQuery類中,如下的代碼展示了如何在一個名為“PT”的點圖層中查詢資料,其中包括屬性和空間過濾條件:

SeConnection conn = getConn();

if (conn != null) {

try {

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

SeCoordinateReference cr = layer.getCoordRef();

SeShape inputShape = new SeShape(cr);

inputShape.generateFromText("POLYGON((2 2,2 4,4 4,4 2,2 2))");

SeSqlConstruct sqlC = new SeSqlConstruct("PT");

sqlC.setWhere("OBJECTID>4");

String[] cols = new String[] { "OBJECTID", "SHAPE","NAME" };

SeQuery query = new SeQuery(conn, cols, sqlC);

query.prepareQuery();

SeFilter filter = new SeShapeFilter("PT", "SHAPE", inputShape, SeShapeFilter.METHOD_AI);

SeFilter[] filters = new SeFilter[] { filter };

query .setSpatialConstraints(SeQuery.SE_SPATIAL_FIRST, true, filters);

query.execute();

SeRow row = query.fetch();

while (row != null) {

try {

int objectid = row.getInteger(0);

SeShape shape = row.getShape(1);

String name = row.getNString(2);

System.out.println(name);

} catch (Exception e) {

e.printStackTrace();

}

row = query.fetch();

}

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

查詢還可以進行表串連,比如一個空間表串連一個業務表:

SeConnection conn = getConn();

if (conn != null) {

try {

String t1 = "CITIES";

String t2 = "WUYF_CITIES_JOIN";

SeTable table1 = new SeTable(conn, t1);

SeColumnDefinition[] tableDef1 = table1.describe();

int numCols1 = tableDef1.length;

SeTable table2 = new SeTable(conn, t2);

SeColumnDefinition[] tableDef2 = table2.describe();

int numCols2 = tableDef2.length;

String[] cols = new String[numCols1 + numCols2];

for (int i = 0; i < numCols1; i++) {

cols[i] = tableDef1[i].getName();

}

for (int i = 0; i < numCols2; i++) {

cols[i + numCols1] = tableDef2[i].getName();

}

SeSqlConstruct sqlCons = new SeSqlConstruct(

new String[] { t1, t2 }, "");

SeQuery query = new SeQuery(conn, cols, sqlCons);

SeQueryInfo queryInfo = new SeQueryInfo();

queryInfo.setQueryType(SeQueryInfo.SE_QUERYTYPE_ATTRIBUTE_FIRST);

query.prepareQueryInfo(queryInfo);

query.execute();

SeRow row = query.fetch();

while (row != null) {

for (int j = 0; j < cols.length; j++) {

System.out.println(row.getObject(j).toString());

}

System.out.println("-----------------------");

row = query.fetch();

}

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

· 修改

修改資料操作封裝在SeUpdate類中,如下的代碼展示了如何在一個名為“PT”的點圖層中修改資料:

SeConnection conn = getConn();

if (conn != null) {

try {

SeUpdate update = new SeUpdate(conn);

update.toTable("PT", new String[] { "NAME" }, "OBJECTID=5");

SeRow row = update.getRowToSet();

row.setNString(0, "修改");

update.execute();

update.close();

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

· 刪除

刪除資料操作封裝在SeDelete類中,如下的代碼展示了如何在一個名為“PT”的點圖層中刪除資料:

SeConnection conn = getConn();

if (conn != null) {

try {

SeDelete delete = new SeDelete(conn);

delete.fromTable("PT", "OBJECTID>4");

delete.close();

} catch (SeException e) {

e.printStackTrace();

} finally {

try {

conn.close();

} catch (SeException e) {

e.printStackTrace();

}

}

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.