org.geotools.data.Query.setHints()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(10.5k)|赞(0)|评价(0)|浏览(276)

本文整理了Java中org.geotools.data.Query.setHints方法的一些代码示例,展示了Query.setHints的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.setHints方法的具体详情如下:
包路径:org.geotools.data.Query
类名称:Query
方法名:setHints

Query.setHints介绍

[英]Set hints to control the query execution.

Hints can control such things as:

  • the GeometryFactory to be used
  • a generalization distance to be applied
  • the fetch size to be used in JDBC queries
    The set of hints supported can be found by calling org.geotools.data.FeatureSource#getSupportedHints().

Note: Data sources may ignore hints (depending on their values) and no mechanism currently exists to discover which hints where actually used during the query's execution.
[中]设置提示以控制查询执行。
提示可以控制以下情况:
*要使用的几何测量工厂
*要应用的泛化距离
*JDBC查询中要使用的获取大小
可以通过调用org找到支持的提示集。地理工具。数据FeatureSource#GetSupportedHits()。
注意:数据源可能会忽略提示(取决于它们的值),并且目前不存在发现查询执行期间实际使用了哪些提示的机制。

代码示例

代码示例来源:origin: geoserver/geoserver

  1. result.setHints(securityQuery.getHints());
  2. } else if (securityQuery.getHints() == null) {
  3. result.setHints(userQuery.getHints());
  4. } else {
  5. Hints mix = userQuery.getHints();
  6. mix.putAll(securityQuery.getHints());
  7. result.setHints(mix);

代码示例来源:origin: geoserver/geoserver

  1. query.setMaxFeatures(maxEntries);
  2. query.setPropertyNames(new String[] {descriptor.getStartAttribute()});
  3. query.setHints(new Hints(StructuredCoverageViewReader.QUERY_FIRST_BAND, true));

代码示例来源:origin: geotools/geotools

  1. private Query setupBaseQuery(Query q) {
  2. if (q == null) {
  3. q = new Query();
  4. } else {
  5. q = new Query(q);
  6. }
  7. if (hints != null) {
  8. q.setHints(hints);
  9. }
  10. if (q.getTypeName() == null) {
  11. q.setTypeName(typeName);
  12. }
  13. return q;
  14. }

代码示例来源:origin: geotools/geotools

  1. /**
  2. * Merges the wrapper hints with the query ones, making sure not to overwrite the query ones
  3. *
  4. * @param q
  5. * @return
  6. */
  7. protected Query mergeHints(Query q) {
  8. if (this.hints == null || this.hints.isEmpty()) {
  9. return q;
  10. }
  11. Query clone = new Query(q);
  12. Hints hints = clone.getHints();
  13. if (hints == null || hints.isEmpty()) {
  14. clone.setHints(this.hints);
  15. } else {
  16. for (Entry<Object, Object> entry : this.hints.entrySet()) {
  17. if (!hints.containsKey(entry.getKey())) {
  18. hints.put(entry.getKey(), entry.getValue());
  19. }
  20. }
  21. }
  22. return clone;
  23. }

代码示例来源:origin: geotools/geotools

  1. private Query namedQuery(Filter filter, int countLimit, boolean isJoining, Hints hints) {
  2. Query query = isJoining ? new JoiningQuery() : new Query();
  3. if (getName().getNamespaceURI() != null) {
  4. try {
  5. query.setNamespace(new URI(getName().getNamespaceURI()));
  6. } catch (URISyntaxException e) {
  7. throw new RuntimeException(e);
  8. }
  9. }
  10. query.setTypeName(getName().getLocalPart());
  11. query.setFilter(filter);
  12. query.setMaxFeatures(countLimit);
  13. query.setHints(hints);
  14. return query;
  15. }

代码示例来源:origin: geotools/geotools

  1. public void testWhereParam() throws Exception {
  2. FeatureSource fsView = dataStore.getFeatureSource("riverParam");
  3. // by default we get everything
  4. assertEquals(2, fsView.getCount(Query.ALL));
  5. // let's try filtering a bit dynamically
  6. Query q = new Query(Query.ALL);
  7. StringBuffer sb = new StringBuffer();
  8. sb.append(" where ");
  9. dialect.encodeColumnName(aname("flow"), sb);
  10. sb.append(" > 4");
  11. q.setHints(
  12. new Hints(
  13. Hints.VIRTUAL_TABLE_PARAMETERS,
  14. Collections.singletonMap("where", sb.toString())));
  15. assertEquals(1, fsView.getCount(q));
  16. }

代码示例来源:origin: geotools/geotools

  1. public void testMulParamInvalid() throws Exception {
  2. FeatureSource fsView = dataStore.getFeatureSource("riverParam");
  3. // let's set an invalid mul param
  4. Query q = new Query(Query.ALL);
  5. q.setHints(
  6. new Hints(Hints.VIRTUAL_TABLE_PARAMETERS, Collections.singletonMap("mul", "abc")));
  7. try {
  8. fsView.getFeatures(q).features();
  9. fail("Should have thrown an exception!");
  10. } catch (Exception e) {
  11. // fine
  12. }
  13. }

代码示例来源:origin: geotools/geotools

  1. public void testMixQueryAll() {
  2. // mixing Query.ALL equivalents with extra hints did not work
  3. Query firstQuery = new Query(Query.ALL);
  4. Query secondQuery = new Query(Query.ALL);
  5. firstQuery.setHints(new Hints(Hints.USE_PROVIDED_FID, Boolean.TRUE));
  6. secondQuery.setHints(new Hints(Hints.FEATURE_2D, Boolean.TRUE));
  7. Query mixed = DataUtilities.mixQueries(firstQuery, secondQuery, "mixer");
  8. assertEquals(2, mixed.getHints().size());
  9. assertTrue((Boolean) mixed.getHints().get(Hints.USE_PROVIDED_FID));
  10. assertTrue((Boolean) mixed.getHints().get(Hints.FEATURE_2D));
  11. }

代码示例来源:origin: geotools/geotools

  1. mixed.setHints(hints);
  2. if (start != 0) {
  3. mixed.setStartIndex(start);

代码示例来源:origin: geotools/geotools

  1. public void testMulParamValid() throws Exception {
  2. FilterFactory ff = CommonFactoryFinder.getFilterFactory(null);
  3. FeatureSource fsView = dataStore.getFeatureSource("riverParam");
  4. // let's change the mul param
  5. Query q = new Query(Query.ALL);
  6. q.setHints(
  7. new Hints(Hints.VIRTUAL_TABLE_PARAMETERS, Collections.singletonMap("mul", "10")));
  8. q.setSortBy(new SortBy[] {ff.sort(aname("mulflow"), SortOrder.ASCENDING)});
  9. try (FeatureIterator fi = fsView.getFeatures(q).features()) {
  10. assertTrue(fi.hasNext());
  11. SimpleFeature f = (SimpleFeature) fi.next();
  12. assertEquals(30.0, ((Number) f.getAttribute(aname("mulflow"))).doubleValue(), 0.1);
  13. assertTrue(fi.hasNext());
  14. f = (SimpleFeature) fi.next();
  15. assertEquals(45.0, ((Number) f.getAttribute(aname("mulflow"))).doubleValue(), 0.1);
  16. }
  17. }

代码示例来源:origin: geotools/geotools

  1. public void testGeometryFactoryHintsGF() throws IOException {
  2. SimpleFeatureSource fs = dataStore.getFeatureSource(tname("road"));
  3. assertTrue(fs.getSupportedHints().contains(Hints.JTS_GEOMETRY_FACTORY));
  4. Query q = new Query(tname("road"));
  5. GeometryFactory gf = new GeometryFactory(new LiteCoordinateSequenceFactory());
  6. Hints hints = new Hints(Hints.JTS_GEOMETRY_FACTORY, gf);
  7. q.setHints(hints);
  8. try (SimpleFeatureIterator it = fs.getFeatures(q).features()) {
  9. it.hasNext();
  10. SimpleFeature f = (SimpleFeature) it.next();
  11. LineString ls = (LineString) f.getDefaultGeometry();
  12. assertTrue(ls.getCoordinateSequence() instanceof LiteCoordinateSequence);
  13. }
  14. }

代码示例来源:origin: geotools/geotools

  1. public void testGeometryFactoryHint() throws Exception {
  2. FilterFactory ff = dataStore.getFilterFactory();
  3. PropertyIsEqualTo filter =
  4. ff.equals(ff.property(aname("stringProperty")), ff.literal("one"));
  5. Query query = new Query();
  6. query.setFilter(filter);
  7. // check we're respecting the geometry factory hint
  8. GeometryFactory gf1 = new GeometryFactory();
  9. query.setHints(new Hints(Hints.JTS_GEOMETRY_FACTORY, gf1));
  10. SimpleFeature f1 = DataUtilities.first(featureSource.getFeatures(query));
  11. assertSame(gf1, ((Geometry) f1.getDefaultGeometry()).getFactory());
  12. // check we're respecting the geometry factory when changing it
  13. GeometryFactory gf2 = new GeometryFactory();
  14. query.setHints(new Hints(Hints.JTS_GEOMETRY_FACTORY, gf2));
  15. SimpleFeature f2 = DataUtilities.first(featureSource.getFeatures(query));
  16. assertSame(gf2, ((Geometry) f2.getDefaultGeometry()).getFactory());
  17. }

代码示例来源:origin: geotools/geotools

  1. public void testGeometryFactoryHintsCS() throws IOException {
  2. SimpleFeatureSource fs = dataStore.getFeatureSource(tname("road"));
  3. assertTrue(fs.getSupportedHints().contains(Hints.JTS_COORDINATE_SEQUENCE_FACTORY));
  4. Query q = new Query(tname("road"));
  5. Hints hints =
  6. new Hints(
  7. Hints.JTS_COORDINATE_SEQUENCE_FACTORY, new LiteCoordinateSequenceFactory());
  8. q.setHints(hints);
  9. try (SimpleFeatureIterator it = fs.getFeatures(q).features()) {
  10. it.hasNext();
  11. SimpleFeature f = (SimpleFeature) it.next();
  12. LineString ls = (LineString) f.getDefaultGeometry();
  13. assertTrue(ls.getCoordinateSequence() instanceof LiteCoordinateSequence);
  14. }
  15. }

代码示例来源:origin: geotools/geotools

  1. private Query namedQuery(Query query) {
  2. Query namedQuery =
  3. namedQuery(
  4. query.getFilter(), query.getMaxFeatures(), query instanceof JoiningQuery);
  5. namedQuery.setProperties(query.getProperties());
  6. namedQuery.setCoordinateSystem(query.getCoordinateSystem());
  7. namedQuery.setCoordinateSystemReproject(query.getCoordinateSystemReproject());
  8. namedQuery.setHandle(query.getHandle());
  9. namedQuery.setMaxFeatures(query.getMaxFeatures());
  10. namedQuery.setStartIndex(query.getStartIndex());
  11. namedQuery.setSortBy(query.getSortBy());
  12. namedQuery.setHints(query.getHints());
  13. if (query instanceof JoiningQuery) {
  14. ((JoiningQuery) namedQuery).setQueryJoins(((JoiningQuery) query).getQueryJoins());
  15. ((JoiningQuery) namedQuery).setRootMapping(((JoiningQuery) query).getRootMapping());
  16. }
  17. return namedQuery;
  18. }

代码示例来源:origin: geotools/geotools

  1. /**
  2. * Makes sure the datastore works when the renderer uses the typical rendering hints
  3. *
  4. * @throws Exception
  5. */
  6. public void testRendererBehaviour() throws Exception {
  7. Query query = new Query(featureSource.getSchema().getTypeName());
  8. query.setHints(
  9. new Hints(
  10. new Hints(
  11. Hints.JTS_COORDINATE_SEQUENCE_FACTORY,
  12. new LiteCoordinateSequenceFactory())));
  13. SimpleFeatureCollection fc = featureSource.getFeatures(query);
  14. try (SimpleFeatureIterator fi = fc.features()) {
  15. while (fi.hasNext()) {
  16. fi.next();
  17. }
  18. }
  19. }

代码示例来源:origin: geotools/geotools

  1. public void testSimplification() throws Exception {
  2. SimpleFeatureSource fs = dataStore.getFeatureSource(tname("road"));
  3. if (fs.getSupportedHints().contains(Hints.GEOMETRY_SIMPLIFICATION) == false) return;
  4. SimpleFeatureCollection fColl = fs.getFeatures();
  5. Geometry original = null;
  6. try (SimpleFeatureIterator iterator = fColl.features()) {
  7. if (iterator.hasNext()) {
  8. original = (Geometry) iterator.next().getDefaultGeometry();
  9. }
  10. }
  11. double width = original.getEnvelope().getEnvelopeInternal().getWidth();
  12. Query query = new Query();
  13. Hints hints = new Hints(Hints.GEOMETRY_SIMPLIFICATION, width / 2);
  14. query.setHints(hints);
  15. Geometry simplified = null;
  16. fColl = fs.getFeatures(query);
  17. try (SimpleFeatureIterator iterator = fColl.features()) {
  18. if (iterator.hasNext()) simplified = (Geometry) iterator.next().getDefaultGeometry();
  19. }
  20. assertTrue(original.getNumPoints() >= simplified.getNumPoints());
  21. }

代码示例来源:origin: geotools/geotools

  1. public void testGeneralization() throws Exception {
  2. SimpleFeatureSource fs = dataStore.getFeatureSource(tname("lake"));
  3. if (fs.getSupportedHints().contains(Hints.GEOMETRY_GENERALIZATION) == false) return;
  4. SimpleFeatureCollection fColl = fs.getFeatures();
  5. Geometry original = null;
  6. try (SimpleFeatureIterator iterator = fColl.features()) {
  7. if (iterator.hasNext()) {
  8. original = (Geometry) iterator.next().getDefaultGeometry();
  9. }
  10. }
  11. double width = original.getEnvelope().getEnvelopeInternal().getWidth();
  12. Query query = new Query();
  13. Hints hints = new Hints(Hints.GEOMETRY_GENERALIZATION, width / 2);
  14. query.setHints(hints);
  15. Geometry generalized = null;
  16. fColl = fs.getFeatures(query);
  17. try (SimpleFeatureIterator iterator = fColl.features()) {
  18. if (iterator.hasNext()) {
  19. generalized = (Geometry) iterator.next().getDefaultGeometry();
  20. }
  21. }
  22. assertTrue(original.getNumPoints() >= generalized.getNumPoints());
  23. }

代码示例来源:origin: geotools/geotools

  1. Filter bbox = new FastBBOX(filterFactory.property(""), bounds, filterFactory);
  2. optimizedQuery = new Query(null, bbox);
  3. optimizedQuery.setHints(layerQuery.getHints());

代码示例来源:origin: geotools/geotools

  1. hints.put(Hints.JTS_COORDINATE_SEQUENCE_FACTORY, new LiteCoordinateSequenceFactory());
  2. Query query = new Query(tname(getPoly3d()));
  3. query.setHints(hints);

代码示例来源:origin: geotools/geotools

  1. new Hints(
  2. Hints.JTS_COORDINATE_SEQUENCE_FACTORY, new LiteCoordinateSequenceFactory());
  3. q.setHints(hints);

相关文章