geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql
来源:互联网 发布:网络教育的在职研究生 编辑:程序博客网 时间:2024/06/01 23:56
- 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());
- }
- }
阅读全文
0 0
- geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql
- 除了在DDMS中可以查看进程,我们还可以通过shell命令来查看
- jQuery 1.9移除了$.browser可以使用$.support来替代
- 如何在GeoServer中使用OpenStreetMap数据
- 当需要使窗口除了点击标题栏以外还可以移动的解决方案 WM_NCHITTEST
- android屏幕适配,除了使用dp,还可以使用比例
- android屏幕适配,除了使用dp,还可以使用比例
- 使用kml格式显示查询结果
- 不同页面之间传值除了Cookie,Session之外,还可以使用页面的上下文对象
- 获取document对象除了getElement方法,居然还可以使用css选择器方法!!!
- Android中除了利用VideoView、Mediaplayer播放视频文件外,还可以用发送Intent来调用视频播放模块。
- KML中使用本地js文件模块
- 还可以使用OpenMP
- THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法
- 在GeoServer中使用“宋体”
- 在GeoServer中使用“宋体”
- GeoServer基础教程(六):使用GeoServer发布PostGIS表数据
- android studio 除了用本身生成jar 还可以通过简单的脚本来生成
- geoserver 通过代码实现发布地图服务
- mapping 映射
- 三维dem
- unity 安卓应用名称多语言本地化
- 剑指offer:(23)举例让抽象问题具体化 :从上往下打印二叉树
- geoserver中除了使用kml来查询数据以外,还可以使用csql或ecsql
- PM2管理nodejs
- Android Tv 焦点总结 TvRecyclerView
- linux 操作笔记
- mvn 使用
- eclipse
- html音乐播放js/jq
- 一些概念
- vue过滤器和函数的比较