2013-03-08 5 views
5

का उपयोग कर भू-स्पेसियल त्रिज्या खोज GeoModel का उपयोग कर एक एप्लिकेशन विकसित कर रहा हूं। मुझे दिए गए अक्षांश और देशांतर के आधार पर किसी विशेष त्रिज्या में खोज करने की आवश्यकता है। मैं ऑब्जेक्टिफ़ाई का उपयोग करके डेटास्टोर में जियोसेल उत्पन्न करने में सक्षम हूं, लेकिन परिणामों को किसी विशेष त्रिज्या में वापस पाने में सक्षम नहीं हूं।ऑब्जेक्टिफाइंग

मैं नीचे अपना कोड साझा कर रहा हूं।

इकाई कक्षा

@Entity 
public class NewsFeed implements Serializable { 
private static final long serialVersionUID = 1L; 
@Id 
@Index 
private Long feedID; 
@Index 
private String topic; 
@Index 
private String title; 
private String description; 
@Index 
private Date createDate; 
private String imageOrVideo; 
private String imageUrl; 
private String blobKey; 
@Latitude 
private Double latitude; 
@Longitude 
private Double longitude; 
@Geocells 
private List<String> cells; 

    // getter and setters ... 
} 

कस्टम GeocellQueryEngine कक्षाFrom This Source

public class ObjectifyGeocellQueryEngine implements GeocellQueryEngine { 
private String geocellsProperty; 
private Objectify ofy; 
public static final String DEFAULT_GEOCELLS_PROPERTY = "cells"; 

public ObjectifyGeocellQueryEngine(Objectify ofy) { 
    this(ofy, DEFAULT_GEOCELLS_PROPERTY); 
} 

public ObjectifyGeocellQueryEngine(Objectify ofy, String geocellsProperty) { 
    this.ofy = ofy; 
    this.geocellsProperty = geocellsProperty; 
} 

@Override 
public <T> List<T> query(GeocellQuery baseQuery, List<String> geocells, Class<T> entityClass) { 
    StringTokenizer st; 
    int tokenNo = 0; 
    Query<T> query = ofy.query(entityClass); 
    if (baseQuery != null) { 
     st = new StringTokenizer(baseQuery.getBaseQuery(), ","); 
     while (st.hasMoreTokens()) { 
      query.filter(st.nextToken(), baseQuery.getParameters().get(tokenNo++)); 
     } 
    } 
    return query.filter(geocellsProperty + " IN", geocells).list(); 
} 
} 

डेटा प्राप्त करने यहाँ

Point p = new Point(24.8993714, 79.5839124); 
    // Generates the list of GeoCells 
    List<String> cells = GeocellManager.generateGeoCell(p); 
    List<Object> params = new ArrayList<Object>(); 
    params.add("Movies"); 
    GeocellQuery baseQuery = new GeocellQuery("topic == topic", "String topic",params); 
    ObjectifyGeocellQueryEngine objectifyGeocellQueryEngine = new ObjectifyGeocellQueryEngine(ofy(), "cells"); 
    List<NewsFeed> list = objectifyGeocellQueryEngine.query(baseQuery, cells, NewsFeed.class); 
    List<NewsFeed> list2 = GeocellManager.proximitySearch(p, 10, 10000,NewsFeed.class, baseQuery, objectifyGeocellQueryEngine, GeocellManager.MAX_GEOCELL_RESOLUTION); 
    System.out.println(list+" : "+list2); 

अब समस्या यह है कि मुझे यहां से कोई परिणाम नहीं मिल रहा है। क्या आप लोग इस बारे में मेरी मदद कर सकते हैं क्योंकि मुझे खाली सूची नहीं मिल रही है, मुझे कोई अपवाद नहीं मिल रहा है।

+0

मुझे नवीनतम अपडेट के बाद लगभग दो साल का विश्वास नहीं होगा। जावा के साथ कभी नहीं खेला .. तो मेरी बात मत सुनो :) – Lipis

+0

यह एक अच्छा सवाल है लेकिन आपको संभवतः पाइथन में अधिक सहायता मिलेगी (मैं खुद के लिए बोलता हूं) –

उत्तर

-2

मैंने इस स्थिति के लिए एक कामकाज किया है मैंने भू-स्थानिक परिणामों को संग्रहीत करने और पुनर्प्राप्त करने के लिए समानांतर जेडीओ कक्षा को जोड़ा है।

+0

क्या आप कृपया अपडेट कर सकते हैं कि यह कैसे कर रहा है ... यह आपकी तरफ से एक बड़ी मदद होगी। –

+0

मुझे एक ही समस्या का सामना करना पड़ रहा है, लेकिन आपका 'उत्तर' कोई समाधान प्रदान नहीं करता है। – mdarwin

+0

@mdarwin मैंने समाधान के चारों ओर एक काम किया है कि मैंने एक जेडीओ एनोटेटेड क्लास बनाया है जिसमें अक्षांश, देशांतर है और जेडीओ का उपयोग करके उन्हें जारी रखा गया है क्योंकि भू-स्थानिक क्वेरी जेडीओ के साथ ठीक काम करती है, इसलिए मुझे परिणाम मिल गए। –