1. package com.geoserver;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. import org.geotools.data.DataStore;
  7. import org.geotools.data.DataStoreFinder;
  8. import org.geotools.data.simple.SimpleFeatureCollection;
  9. import org.geotools.data.simple.SimpleFeatureSource;
  10. import org.geotools.feature.FeatureIterator;
  11. import org.geotools.filter.text.cql2.CQL;
  12. import org.geotools.filter.text.cql2.CQLException;
  13. import org.geotools.geometry.jts.ReferencedEnvelope;
  14. import org.opengis.feature.simple.SimpleFeature;
  15. import org.opengis.filter.Filter;
  16. /**
  17. * 采用geotools中公共查询语言
  18. * 过滤条件如下
  19. *
  20. * 例如:
  21. *    PERSONS > 15000000
  22. *    PERSONS BETWEEN 1000000 AND 3000000
  23. *    STATE_NAME LIKE 'N%'
  24. *    STATE_NAME = 'California'
  25. *    MALE > FEMALE
  26. *    UNEMPLOY / (EMPLOYED + UNEMPLOY) > 0.07
  27. *     IN ('states.1', 'states.12'):
  28. *   STATE_NAME IN ('New York', 'California', 'Montana', 'Texas'):
  29. *  带函数的使用:
  30. *     strToLowerCase(STATE_NAME) like ‘%m%’
  31. *
  32. *
  33. *
  34. * @Title:
  35. * @Description: 实现TODO
  36. * @Copyright:Copyright (c) 2011
  37. * @Company:
  38. * @Date:2012-9-10
  39. * @author  longgangbai
  40. * @version 1.0
  41. */
  42. public class GeoServerCQLECQL {
  43. /**
  44. *
  45. * @param filterStr
  46. * @param layerName
  47. * @return
  48. * @throws IOException
  49. */
  50. public static ArrayList<SimpleFeature> queryMethod(String filterStr,String layerName) throws IOException {
  51. String getCapabilities = "http://localhost:8080/geoserver/wfs?REQUEST=GetCapabilities";
  52. Map<String,String> connectionParameters = new HashMap<String,String>();
  53. connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", getCapabilities );
  54. // Step 2 - connection
  55. DataStore data = DataStoreFinder.getDataStore( connectionParameters );
  56. SimpleFeatureSource featureSource =data.getFeatureSource(layerName);
  57. ArrayList<SimpleFeature> featureList = new ArrayList<SimpleFeature>();
  58. if(featureSource==null)
  59. return featureList;
  60. try {
  61. Filter  filter = CQL.toFilter(filterStr); // filterStr形式 如  name='武汉大学' or code like 'tt123%'
  62. SimpleFeatureCollection result = featureSource.getFeatures(filter);
  63. ReferencedEnvelope bounds = new ReferencedEnvelope();
  64. FeatureIterator<SimpleFeature> itertor = result.features();
  65. while (itertor.hasNext()) {
  66. SimpleFeature feature = itertor.next();
  67. bounds.include( feature.getBounds() );
  68. featureList.add(feature);
  69. }
  70. System.out.println( "Calculated Bounds:"+ bounds );
  71. itertor.close();
  72. result.close( itertor );
  73. return featureList;
  74. } catch (CQLException e) {
  75. // TODO Auto-generated catch block
  76. e.printStackTrace();
  77. } catch (IOException e) {
  78. // TODO Auto-generated catch block
  79. e.printStackTrace();
  80. }finally {
  81. }
  82. return null;
  83. }
  84. public static void main(String[] args) throws IOException {
  85. ArrayList<SimpleFeature> list=queryMethod("STATE_NAME='Arizona'","topp:states");
  86. System.out.println("list="+list.toString());
  87. }
  88. }

geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql的更多相关文章

  1. 关于EsayUI中datagrid重复提交后台查询数据的问题

    直接上代码: <table id="XXXX" style="width:100%;height:100%;" class="easyui-da ...

  2. Lucene 06 - 使用Lucene的Query API查询数据

    目录 1 Query对象的创建(方式一): 使用子类对象 1.1 常用的Query子类对象 1.2 常用的Query子类对象使用 1.2.1 使用TermQuery 1.2.2 使用NumericRa ...

  3. [原]在GeoServer中为OpenStreetMap数据设置OSM样式

    转载请注明作者think8848和出处(http://think8848.cnblogs.com) 在前面几篇文章中,我们讲到了部署Postgresql,部署PostGis,部署GeoServer以及 ...

  4. Python3操作MySQL,查询数据并保存到文件中

    我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...

  5. MySQL查询数据表中数据记录(包括多表查询)

    MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...

  6. Sql Server 存储过程中查询数据无法使用 Union(All)

    原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...

  7. 关于SpringMVC中如何把查询数据全转成String类型

    之前,本想与客户商量做几张固定的报表予使用,结果发现客户每个月都需要各种各样的报表,所以我们做了个窗口用于直接执行SQL语句:数据量一开始并不是很大查询出来的数据较少(约1-6W左右),所以刚开始几个 ...

  8. 从DataTable中查询数据

    /// <summary> /// 从DataTable中查询数据 /// </summary> /// <param name="tb">待处 ...

  9. 2019-2-14SQLserver中拼音查询数据

    SQLserver中获取文字的全拼音: CREATE function [dbo].[f_GetPinyin](@words nvarchar()) returns varchar() as begi ...

随机推荐

  1. 不设目标也能通关「马里奥」的AI算法,全靠好奇心学习

    在强化学习中,设计密集.定义良好的外部奖励是很困难的,并且通常不可扩展.通常增加内部奖励可以作为对此限制的补偿,OpenAI.CMU 在本研究中更近一步,提出了完全靠内部奖励即好奇心来训练智能体的方法 ...

  2. 小朋友学C语言(7)

    数组 一.数组简介 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比 ...

  3. blktrace 深度了解linux系统的IO运作

    http://blog.yufeng.info/archives/751 我们在Linux上总是要保存数据的,数据要么保存在文件系统里(如ext3),要么就在裸设备里面.我们在使用这些数据的时候都是通 ...

  4. Github入门 - Github基本使用及Github桌面版使用

    知识内容: 1.版本控制 2.Git介绍 3.Github介绍及基本使用 4.Github桌面版介绍及安装 5.Github桌面版基础使用 6.Github桌面版进阶使用 参考: http://www ...

  5. 技术思维VS管理思维

    以下为技术思维与管理思维的不同 在日常的工作中,会出现身兼两职 开发和项目经理 的情况,在此就要学会游刃有余的切换角色,方能一人分身二角 角色转换本质上是思维转换.思维决定一个人的行为,项目经理不像项 ...

  6. selenium ie 模拟request pahonjs

  7. JAVA Spring JavaBean 引入 JavaBean ( 外部引用, 内部定义, 级联属性 )

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. EOF与子过程返回

        在2000及其以上系统,P处理语句GOTO新增了:EOF系统标签,意思是移动到当前P处理文件的结尾,EOF==END OF FILE的缩写,意为文件结尾,主要表现形式为:GOTO :EOFOR ...

  9. struts2,servlet和springmvc的单例多例问题

    struts2,servlet和springmvc的单例多例问题 原创 2017年06月12日 09:59:21 标签: struts2 / servlet / springmvc / 单例 / 多例 ...

  10. Hibernate DetachedCriteria实现

     前段时间在做模糊查询,并利用数据库分页,DAO用hibernate实现,刚开始的时候 根据业务层的数据,拼hql语句进行查询,且不说要进行一些if判断,单从结构上来说, 底层的数据访问层依赖于业务层 ...