<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks
    1、創建索引   
    -------------------------------------------------------------------------------------------
    GeohashPrefixTree grid = new GeohashPrefixTree(ctx, 12);//< 1 meter == 11 maxLevels
            this.strategy = new RecursivePrefixTreeStrategy(grid, "shape");
            ((RecursivePrefixTreeStrategy) this.strategy).setDistErrPct(LUCENE_4464_distErrPct);//1% radius (small!)

     String wktstr = clobtoString(map.get("wkt"));//圖形信息
                    String objectid = map.get("objectid").toString();//對象id
                    String name = map.get("name").toString();//對象名稱
                    Shape shape = wktGeoRect(wktstr);
                    Document doc = new Document();
                    doc.add(new StringField("objectidtable", objectid + tableName, Field.Store.YES));
                    doc.add(new StringField("objectid", objectid, Field.Store.YES));
                    doc.add(new StringField("tableName", tableName, Field.Store.YES));
                    doc.add(new StringField("metadataid", mid.toString(), Field.Store.YES));
                    doc.add(new TextField ("title", name, Field.Store.YES));
                    if (shape != null) {
                        for (Field f : strategy.createIndexableFields(shape)) {
                            doc.add(f);
                        }
                        doc.add(new StoredField(strategy.getFieldName(), ctx.toString(shape)));
                    }
      indexWriter.addDocument(doc);
    ---------------------------------------------------------------
        public Shape wktGeoRect(String wktStr) {
            JtsGeometry jtsGeom = null;
            try {
                if (StringUtils.trim(wktStr.substring(0, wktStr.indexOf("("))).equalsIgnoreCase("POINT")) {
                    wktStr = wktStr.substring(wktStr.indexOf("(") + 1, wktStr.lastIndexOf(")"));
                    String[] point = wktStr.split(" ");
                    return ctx.makePoint(Double.parseDouble(point[0]), Double.parseDouble(point[1]));
                } else {
                    jtsGeom = (JtsGeometry) ctx.readShape(wktStr);
                }
            } catch (Exception e) {
            }
            return jtsGeom;
        }
    2、查詢空間索引

       @Test
        public void testshape() throws Exception {
                    JtsSpatialContext ctx = JtsSpatialContext.GEO;
            Directory directory = new SimpleFSDirectory(new File("D:/platform/spatiallucence"));
            IndexReader[] indexReaders1 = new IndexReader[]{IndexReader.open(directory)};
            MultiReader multiReader = new MultiReader(indexReaders1);
            indexSearcher = new IndexSearcher(multiReader);
            indexSearcher.setSimilarity(new NoScoreSimilarity());
            GeohashPrefixTree grid = new GeohashPrefixTree(ctx, 12);//< 1 meter == 11 maxLevels
            strategy = new RecursivePrefixTreeStrategy(grid, "shape");
            ((RecursivePrefixTreeStrategy) strategy).setDistErrPct(0.025);//1% radius (small!)
            //POINT (121.591953019118 28.7566972164043)
            //Shape shape = ctx.readShape("POINT (121.454715099823 28.860595871703)");
            Shape shape = ctx.readShape("POLYGON(" +
                    "(121.10836126349 28.84450508816,\n" +
                    "121.12569906256 28.84450508816,\n" +
                    "121.12569906256 28.856950537989,\n" +
                    "121.10836126349 28.856950537989,\n" +
                    "121.10836126349 28.84450508816))");
            shape = ctx.makeRectangle(121.10836126349d ,121.12569906256d, 28.84450508816d ,28.856950537989d);
            SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects, shape);
            args.setDistErrPct(0.025);
            Query query = strategy.makeQuery(args);
            TopDocs results = indexSearcher.search(query, 1000);
            int numTotalHits = results.totalHits;
            System.out.println("共 " + numTotalHits + " 完全匹配的文檔");
            ScoreDoc[] hits = results.scoreDocs;
            for (int i = 0; i < hits.length; i++) {
                Document document = indexSearcher.doc(hits[i].doc);
                System.out.println("Id: " + document);
            }
        }

    posted on 2013-11-29 16:15 brock 閱讀(700) 評論(0)  編輯  收藏 所屬分類: 學習總結
    主站蜘蛛池模板: 亚洲精品99久久久久中文字幕| 国产精品麻豆免费版| 国产亚洲精品精华液| 四虎影视久久久免费观看| 亚洲日本一区二区一本一道| 麻豆va在线精品免费播放| 免费国产在线观看| 日韩在线视频线视频免费网站| 亚洲高清无码综合性爱视频| 黄色一级免费网站| 亚洲综合日韩久久成人AV| 精品一区二区三区免费视频 | a在线视频免费观看| 日韩亚洲欧洲在线com91tv| 国产午夜成人免费看片无遮挡| 亚洲爆乳无码专区| 四虎精品视频在线永久免费观看| 亚洲国产成人精品久久| 一个人在线观看视频免费| 亚洲av无码一区二区三区四区 | 成年性生交大片免费看| 亚洲风情亚Aⅴ在线发布| 深夜国产福利99亚洲视频| aaa毛片免费观看| 亚洲av女电影网| 无码免费午夜福利片在线| 亚洲乱理伦片在线观看中字| 亚洲成av人在片观看| 免费观看91视频| 在线综合亚洲欧洲综合网站| 亚洲国产成人久久精品99| 午夜免费啪视频在线观看| 亚洲va久久久久| 亚洲综合最新无码专区| 最近最好最新2019中文字幕免费| 成人亚洲国产va天堂| 亚洲色欲色欲www在线丝| 毛片免费视频播放| 中文字幕在线视频免费| 亚洲一区在线视频观看| 国产成人高清亚洲|