Java GISサーバデータの読み出し
package com.gis.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.codehaus.jackson.map.ObjectMapper;
import com.gis.entity.Attributes;
import com.gis.entity.Geometry;
import com.gis.entity.HeavyMetal;
import com.gis.rest.RestAPI;
import com.gis.util.Constants;
public class QueryAction {
public HeavyMetal queryByObjectid(int objectid) {
HeavyMetal heavyMetal = new HeavyMetal();
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("f", "json"));
//queryurl=http://192.168.24.218/ArcGIS/rest/services/HeavyMetal/FeatureServer/0/11(11 objectid)
String response = RestAPI.rest(Constants.queryurl + objectid,
formparams);
JSONObject jsonObject = JSONObject.fromObject(response);
Map map = new HashMap();
for (Iterator iter = jsonObject.keys(); iter.hasNext();) {
String key = (String) iter.next();
map.put(key, jsonObject.get(key));
}
System.out.println("feature:" + map.get("feature"));
ObjectMapper objectMapper = new ObjectMapper();
String str = map.get("feature").toString();
JSONObject jsonObject1 = JSONObject.fromObject(str);
Map map1 = new HashMap();
String[] strings = new String[2];
int i = 0;
for (Iterator iter = jsonObject1.keys(); iter.hasNext();) {
// System.out.println(iter);
String key = (String) iter.next();
map.put(key, jsonObject1.get(key));
// System.err.println(jsonObject1.get(key));
strings[i] = jsonObject1.get(key).toString();
i++;
}
JSONObject obj = new JSONObject().fromObject(strings[0]);
// System.err.println("OBJECTID:" + obj.get("OBJECTID"));
Attributes attributes = (Attributes) JSONObject.toBean(obj,
Attributes.class);
obj = new JSONObject().fromObject(strings[1]);
Geometry geometry = (Geometry) JSONObject.toBean(obj, Geometry.class);
heavyMetal.setAttributes(attributes);
heavyMetal.setGeometry(geometry);
return heavyMetal;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
QueryAction queryAction = new QueryAction();
System.err.println(queryAction.queryByObjectid(11));
}
}
public class RestAPI {
public static String rest(String url,List<NameValuePair> formparams)
{
HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
String responseBody = null;
BufferedReader br = null;
try {
UrlEncodedFormEntity uef = new UrlEncodedFormEntity(formparams, HTTP.UTF_8);
post.setEntity(uef);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
responseBody = httpClient.execute(post, responseHandler);
System.out.println(responseBody);
}
catch (Exception e) {
// TODO: handle exception
}
return responseBody;
}
}
response値
「feature」:{「attributes」:{「OBJECTID」:11、「ID」:1、「CD」:0.2433、「HG」:0.2433、「DP_AS」:1.0309、「CU」:2.3848、「PB」: 217.217.217、「CR」:353.5227、「ZN」:357.47679、「NI」:208.2775、「HM_TIME」:1379085429000、「HM_NAME」:1379085429000、「HM_NAME」:「宜昌」、「USER_NAME」:null}、「geomomomomome」:null}、「geomomomomome e」、「geomomome_TIME」:{try"{"x":111.3000000000745,"y":31.9999992549}}
一度解析したstr値
「attributes」:{「OBJECTID」:11,「ID」:1,「CD」:0.2433,「HG」:0.2433,「DP_AS」:1.0309,「CU」:2.3848,「PB」:21217.2114,「CR」:353.5227,「ZN」:357.47679,「NI」:208.2775,「HM_TIME」:1379085429000,「HM_NAME」:「宜昌」,「USER_NAME」:null},「geometry」:::::::geomettry」::::::::「geomettry」::::::::::::「geomettry」{「x」:111.3,「y」:31.2}}
さらにattributesとgeometryをそれぞれ解析し,最終的に解析したオブジェクトを得る.
demoアドレスhttp://down.51cto.com/data/947003