java cqlfilter_Geoserver系列:将CQL转换OGC的xml过滤
在Geoserver的wfs查询中,支持CQL的数据查询过滤,但是常用的OGC的查询中,是以post的形式,通过传递一个xml文件的格式,返回查询数据的结果。这在arcgis server,sfs server中都能够进行支持的,因为这些服务都支持OGC的标准查询。
CQL使用类似文本语法的格式,具有很高的可读性和适用性。
这里分享一个使用GeoTools将CQL转换为OGC过滤查询的代码样例,具体的英文网址在原文链接中。
GeoTools是一个开源的java版gis工具集,里边有许多gis方面的相关方法,可在网上直接下载编译好的jar包进行使用。
转换代码如下:
importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importorg.geotools.filter.text.cql2.CQL;importorg.geotools.filter.text.cql2.CQLException;importorg.opengis.filter.Filter;publicclassCQLToOGC{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));Stringline;org.geotools.xml.Configurationconfiguration=neworg.geotools.filter.v1_0.OGCConfiguration();org.geotools.xml.Encoderencoder=neworg.geotools.xml.Encoder(configuration);encoder.setIndenting(true);while(!(line=reader.readLine()).isEmpty()){try{Filterfilter=CQL.toFilter(line);// System.out.println("\t" + filter);encoder.encode(filter,org.geotools.filter.v1_0.OGC.Filter,System.out);}catch(CQLExceptione){e.printStackTrace();}}}}
转换的结果:
CQL样式
prop = 23
转换结果:
prop
23
空间查询转换的效果:
CQL语句:
INTERSECTS(SP_GEOMETRY, POLYGON ((142578.64599609 252217.79003906, 73781.897460938 141983.61767578, 287078.38037109 146764.85888672, 142578.64599609 252217.79003906)))
转换结果:
SP_GEOMETRY
142578.64599609,252217.79003906 73781.897460938,141983.61767578 287078.38037109,146764.85888672 142578.64599609,252217.79003906
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)