geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql
- package com.geoserver;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Map;
- import org.geotools.data.DataStore;
- import org.geotools.data.DataStoreFinder;
- import org.geotools.data.simple.SimpleFeatureCollection;
- import org.geotools.data.simple.SimpleFeatureSource;
- import org.geotools.feature.FeatureIterator;
- import org.geotools.filter.text.cql2.CQL;
- import org.geotools.filter.text.cql2.CQLException;
- import org.geotools.geometry.jts.ReferencedEnvelope;
- import org.opengis.feature.simple.SimpleFeature;
- import org.opengis.filter.Filter;
- /**
- * 采用geotools中公共查询语言
- * 过滤条件如下
- *
- * 例如:
- * PERSONS > 15000000
- * PERSONS BETWEEN 1000000 AND 3000000
- * STATE_NAME LIKE 'N%'
- * STATE_NAME = 'California'
- * MALE > FEMALE
- * UNEMPLOY / (EMPLOYED + UNEMPLOY) > 0.07
- * IN ('states.1', 'states.12'):
- * STATE_NAME IN ('New York', 'California', 'Montana', 'Texas'):
- * 带函数的使用:
- * strToLowerCase(STATE_NAME) like ‘%m%’
- *
- *
- *
- * @Title:
- * @Description: 实现TODO
- * @Copyright:Copyright (c) 2011
- * @Company:
- * @Date:2012-9-10
- * @author longgangbai
- * @version 1.0
- */
- public class GeoServerCQLECQL {
- /**
- *
- * @param filterStr
- * @param layerName
- * @return
- * @throws IOException
- */
- public static ArrayList<SimpleFeature> queryMethod(String filterStr,String layerName) throws IOException {
- String getCapabilities = "http://localhost:8080/geoserver/wfs?REQUEST=GetCapabilities";
- Map<String,String> connectionParameters = new HashMap<String,String>();
- connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", getCapabilities );
- // Step 2 - connection
- DataStore data = DataStoreFinder.getDataStore( connectionParameters );
- SimpleFeatureSource featureSource =data.getFeatureSource(layerName);
- ArrayList<SimpleFeature> featureList = new ArrayList<SimpleFeature>();
- if(featureSource==null)
- return featureList;
- try {
- Filter filter = CQL.toFilter(filterStr); // filterStr形式 如 name='武汉大学' or code like 'tt123%'
- SimpleFeatureCollection result = featureSource.getFeatures(filter);
- ReferencedEnvelope bounds = new ReferencedEnvelope();
- FeatureIterator<SimpleFeature> itertor = result.features();
- while (itertor.hasNext()) {
- SimpleFeature feature = itertor.next();
- bounds.include( feature.getBounds() );
- featureList.add(feature);
- }
- System.out.println( "Calculated Bounds:"+ bounds );
- itertor.close();
- result.close( itertor );
- return featureList;
- } catch (CQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally {
- }
- return null;
- }
- public static void main(String[] args) throws IOException {
- ArrayList<SimpleFeature> list=queryMethod("STATE_NAME='Arizona'","topp:states");
- System.out.println("list="+list.toString());
- }
- }
geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql的更多相关文章
- 关于EsayUI中datagrid重复提交后台查询数据的问题
直接上代码: <table id="XXXX" style="width:100%;height:100%;" class="easyui-da ...
- Lucene 06 - 使用Lucene的Query API查询数据
目录 1 Query对象的创建(方式一): 使用子类对象 1.1 常用的Query子类对象 1.2 常用的Query子类对象使用 1.2.1 使用TermQuery 1.2.2 使用NumericRa ...
- [原]在GeoServer中为OpenStreetMap数据设置OSM样式
转载请注明作者think8848和出处(http://think8848.cnblogs.com) 在前面几篇文章中,我们讲到了部署Postgresql,部署PostGis,部署GeoServer以及 ...
- Python3操作MySQL,查询数据并保存到文件中
我们在测试过程中,可能需要到数据库中拉去一些数据,为从测试准备.比如最近在做接口性能测试的时候,就需要很多数据来支撑,所以就需要的数据库去查询数据,下面就是python3 查询 mysql 并且保存到 ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- Sql Server 存储过程中查询数据无法使用 Union(All)
原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...
- 关于SpringMVC中如何把查询数据全转成String类型
之前,本想与客户商量做几张固定的报表予使用,结果发现客户每个月都需要各种各样的报表,所以我们做了个窗口用于直接执行SQL语句:数据量一开始并不是很大查询出来的数据较少(约1-6W左右),所以刚开始几个 ...
- 从DataTable中查询数据
/// <summary> /// 从DataTable中查询数据 /// </summary> /// <param name="tb">待处 ...
- 2019-2-14SQLserver中拼音查询数据
SQLserver中获取文字的全拼音: CREATE function [dbo].[f_GetPinyin](@words nvarchar()) returns varchar() as begi ...
随机推荐
- re模块 ,random模块
# 在python中使用正则表达式 # 转义符 : 在正则中的转义符 \ 在python中的转义符# 正则表达式中的转义 :# '\(' 表示匹配小括号# [()+*?/$.] 在字符组中一些特殊的字 ...
- faker模块基本用法
引言: 自动化脚本编写时,一般会遇到需要构造数据的情况,比如注册时的基本信息:每次执行脚本都要重新构造数据显然是很费时费力的事情,所以可以用到faker模块来构造:方便快捷,神器也: 一.安装 pip ...
- uva-10004-俩色图验证
题意: 在1976年,四色猜想被一个计算机助手提出,这个理论表示对任意一个地图的上色都只需要四种颜色,地图内每一个区块和相邻的区块颜色都不相同.你现在被要求解决一个相似但相对简单的问题.给你任意一个连 ...
- Python正则总结
re总结 限定符(就是控制重复次数) ? 匹配前面的子表达式零次或一次.例如,"do(es)?" 可以匹配 "do" . "does" 中的 ...
- windows巡检
参考网站: http://www.jb51.net/os/windows/525017.html 系统自带工具巡检 : 先说说如何检查系统健康度的方法,Win+R只有只要输入一个命令: perf ...
- ajax 遍历json一维数组
$.each(data,function(index,value){}data必须是Object类型index是数组的下标value可以是一个对象 function myonclick() { var ...
- 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
一.消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,RabbitM ...
- Java Integer值用==和equals相等问题
来自 http://blog.csdn.net/w112736112736/article/details/77986283
- Kotlin语言学习笔记(7)
反射 // 反射 val c = MyClass::class val c2 = MyClass::class.java // 获取KClass的引用 val widget: Widget = ... ...
- Cache Lucene IndexReader with Apache Commons Pool
IndexReaderFactory.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...