?? mapservice.java
字號:
}
}
if(title.lastIndexOf(".")!=-1) title=title.substring(0,title.lastIndexOf(".")+1);
else title="";
return title;
}
/**
* 添加 SubFields
* @param subfields 輸入格式="id,objectid,name"
* @param lyr FeatureLayer
* @param filter Filter
*/
public void addSubFields(String subfields,FeatureLayer lyr,com.esri.aims.mtier.model.map.layer.query.Filter filter){
if(subfields==null) return;
String[] fds = subfields.split(",");
if (fds.length > 0) {
String title=getFieldTitle(lyr.getRecordset().getTableDesc());
for (int k = 0; k < fds.length; k++) {
String fdd=fds[k].trim();
if(fdd.lastIndexOf(".")==-1) fdd=title+fdd;
if (checkSubField(lyr,fdd)) {
filter.addSubField(fdd);
}
}
}
}
/**
* 返回 subFields
* @param lyr FeatureLayer
* @return Vector
*/
protected Vector getSubFields(FeatureLayer lyr) {
Vector<String> fds = new Vector<String>();
Recordset rst = lyr.getRecordset();
String str = null;
if (lyr.getFilterObject().getSubFieldsCount() != 0) {
for (int j = 0; j < lyr.getFilterObject().getSubFieldsCount(); j++){
str = lyr.getFilterObject().getSubField(j);
fds.add(str.substring(str.lastIndexOf(".")+1,str.length()));
}
}else{
for (int i = 0; i < rst.getTableDesc().getCount(); i++) {
str = rst.getTableDesc().getFieldName(i);
fds.add(str.substring(str.lastIndexOf(".")+1,str.length()));
}
}
return fds;
}
/**
* 創建空間查詢的幾何圖形
* @param ptXY 輸入格式="x1,y1,x2,y2"
* @param filterType String
* @return Shape
*/
public Shape createShape(String ptXY, String filterType) {
try{
if (ptXY != null) {
String[] pts = ptXY.split(",");
Point pnt = new Point();
Points pnts = new Points();
Geometry gy = new Geometry();
for (int i = 0; i < pts.length; i = i + 2) {
pnt.setX(DoubleConversion.stringToDouble(pts[i]));
pnt.setY(DoubleConversion.stringToDouble(pts[i + 1]));
pnts.addPointObject(pnt);
}
Point p1 = pnts.getPointObject(0);
Point p2 = pnts.getPointObject(pnts.getCount() - 1);
if (p1.getX() != p2.getX() || p1.getY() != p2.getY()) {
pnts.addPointObject(p1);
}
gy.setPoints(pnts);
if (filterType.equalsIgnoreCase(ConfigService.FILTER_TYPE_POINT)) {
Envelope shape = new Envelope();
shape.setMaxX(DoubleConversion.stringToDouble(pts[0]) + dis);
shape.setMaxY(DoubleConversion.stringToDouble(pts[1]) + dis);
shape.setMinX(DoubleConversion.stringToDouble(pts[0]) - dis);
shape.setMinY(DoubleConversion.stringToDouble(pts[1]) - dis);
return shape;
}
else if (filterType.equalsIgnoreCase(ConfigService.FILTER_TYPE_LINE)) {
Line ln = gy.createLine(pnts);
setDisplaySymbol("line");
ln.setSymbol(lineSymbol);
return ln;
}
else if (filterType.equalsIgnoreCase(ConfigService.FILTER_TYPE_POLY) ||
filterType.equalsIgnoreCase(ConfigService.FILTER_TYPE_CIRCLE)) {
Ring rg = gy.createRing(pnts);
Hole hole = new Hole();
hole.setPoints(pnts);
rg.addHoles(hole);
Polygon poly = gy.createPolygonObject(rg);
setDisplaySymbol("polygon");
poly.setSymbol(polySymbol);
return poly;
}
else if (filterType.equalsIgnoreCase(ConfigService.FILTER_TYPE_RECT)) {
Envelope env = new Envelope();
if (DoubleConversion.stringToDouble(pts[0]) >
DoubleConversion.stringToDouble(pts[2])) {
env.setMaxX(DoubleConversion.stringToDouble(pts[0]));
env.setMinX(DoubleConversion.stringToDouble(pts[2]));
}
else {
env.setMaxX(DoubleConversion.stringToDouble(pts[2]));
env.setMinX(DoubleConversion.stringToDouble(pts[0]));
}
if (DoubleConversion.stringToDouble(pts[1]) >
DoubleConversion.stringToDouble(pts[3])) {
env.setMaxY(DoubleConversion.stringToDouble(pts[1]));
env.setMinY(DoubleConversion.stringToDouble(pts[3]));
}
else {
env.setMaxY(DoubleConversion.stringToDouble(pts[3]));
env.setMinY(DoubleConversion.stringToDouble(pts[1]));
}
return env;
}
else {
return null;
}
}
else {
return null;
}
}catch(Exception ex){
return null;
}
}
/**
* 是否需要連接其他表
* @param isJoinTab boolean
*/
public void isJoinTable(boolean isJoinTab){
isJoin=isJoinTab;
}
/**
* 設置連接表參數
* @param orignTabName 當前表名
* @param joinTabName 連接表名
* @param colName 連接表字段
*/
public void setJoinTableParam(String orignTabName,String joinTabName,String colName){
orignTableName=orignTabName;
joinTableName=joinTabName;
joinColName=colName;
}
/**
* 設置連接表
* @param flyr FeatureLayer
* @param filter Filter
*/
public void setFilterJoinTable(FeatureLayer lyr,com.esri.aims.mtier.model.map.layer.query.Filter filter){
try{
String str = orignTableName + "." + joinColName + "=" + joinTableName + "." + joinColName;
filter.setJoinExpression(str);
filter.setJoinTable(joinTableName);
}catch(Exception ex){
System.out.println(ex);
}
}
/**
* 空間查詢或屬性查詢
* @param layerId 要查詢的圖層ID
* @param shape 由createShape函數創建
* @param subfields 輸入格式="id,objectid,name"
* @param whereClause 屬性查詢SQL語句,輸入格式="objectid=3"
* @param isExtent 查詢的要素集是否顯示在視野范圍內
*/
public void filterShape(String layerId, Shape shape, String subfields, String whereClause, boolean isExtent) {
setActiveFeatureLayer(layerId);
if (flyr != null) {
com.esri.aims.mtier.model.map.layer.query.Filter filter = new com.esri.aims.mtier.model.map.layer.query.Filter();
addSubFields(subfields,flyr,filter);
filter.setGlobalEnvelope(true);
filter.setCheckesc(true);
filter.setRelation(Filter.ENVELOPE_INTERSECTION);
if(whereClause!=null) filter.setWhereExpression(whereClause);
if(shape!=null) filter.setSpatialShape(shape);
//join table
if(isJoin){
setFilterJoinTable(flyr,filter);
}
flyr.setFilterObject(filter);
imsmap.refresh();
if (filterMap == null) {
filterMap = new HashMap();
}
filterMap.clear();
filterMap.put(ConfigService.HASHMAP_SUBFIELDS_VECTOR, getSubFields(flyr));
filterMap.put(ConfigService.HASHMAP_RECORDSET_RS, flyr.getRecordset());
if (isExtent) {
setFilterExtent(flyr.getRecordset());
}
setDisplaySymbol(flyr.getFeatureClass());
if (flyr.getFeatureClass().equalsIgnoreCase("point")) {
imsmap.displayFeatures(flyr, false, markSymbol);
}
if (flyr.getFeatureClass().equalsIgnoreCase("line")) {
imsmap.displayFeatures(flyr, false, lineSymbol);
}
if (flyr.getFeatureClass().equalsIgnoreCase("polygon")) {
imsmap.displayFeatures(flyr, false, polySymbol);
}
}
}
/**
* 設置 BufferLayerId
* @param targetId BufferLayerId
* @return BufferFeatureLayer
*/
public FeatureLayer setBufferLayerId(String targetId) {
FeatureLayer lyr = null;
for (int i = 0; i < getLayerCount(); i++) {
if (imsmap.getLayers().item(i).getID().equalsIgnoreCase(targetId)) {
if (imsmap.getLayers().item(i) instanceof FeatureLayer) {
lyr = (FeatureLayer) imsmap.getLayers().item(i);
bufferLayerId = imsmap.getLayers().item(i).getID();
break;
}
}
}
return lyr;
}
/**
* 獲取 BufferLayerId
* @return String
*/
public String getBufferLayerId() {
return bufferLayerId;
}
/**
* Buffer 分析
* @param layerId ActiveFeatureLayerId
* @param targetId BufferLayerId
* @param distance Buffer distance
* @param unit 單位
* @param targetFields 輸入格式="id,name"
* @param whereClause 查詢SQL
* @param isExtent 查詢的要素集是否顯示在視野范圍內
*/
public void filterBuffer(String layerId, String targetId, double distance,String unit,String targetFields,String whereClause, boolean isExtent) {
}
/**
* 返回查詢結果
* @return HashMap
*/
public HashMap getFilterMap() {
return filterMap;
}
/**
* 返回緩沖區分析查詢結果
* @return HashMap
*/
public HashMap getBufferMap() {
return bufferMap;
}
/**
* 專題地圖
* @param layerId String
* @param chartFields 數字型字段,輸入格式="jg,yg"
* @param chartType "bar"或者"pie"
*/
public void makeChart(String layerId,String chartFields,String chartType) throws
Exception {
try {
setActiveFeatureLayer(layerId);
imsmap.getSeparators().setCS(",");
//join table
if(isJoin){
com.esri.aims.mtier.model.map.layer.query.Filter filter = new com.esri.aims.mtier.model.map.layer.query.Filter();
//filter.setCheckesc(true);
//filter.setGlobalEnvelope(true);
//filter.setRelation(filter.ENVELOPE_INTERSECTION);
setFilterJoinTable(flyr,filter);
flyr.setFilterObject(filter);
imsmap.refresh();
}
GroupRenderer gr = new GroupRenderer();
SimpleLabelRenderer slr = new SimpleLabelRenderer();
String chartfds[] = chartFields.split(",");
long size = (chartfds.length) * chartSize;
ChartSymbol chartSymbol = new ChartSymbol();
chartSymbol.setMode(chartType);
chartSymbol.setSize(size);
for (int i = 0; i < chartfds.length; i++) {
ChartValue chartValue = new ChartValue();
chartValue.setColor(chartColors[i % 6]);
chartValue.setLookUpField(chartfds[i]);
chartSymbol.addChartValue(chartValue);
}
slr.setSymbol(chartSymbol);
slr.setField(chartFields);
gr.addRenderer(slr);
flyr.setRenderer(gr);
}catch(Exception ex){
throw new Exception(ex);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -