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