初始化

This commit is contained in:
hukekuan@163.com 2018-03-30 17:02:38 +08:00
parent 28c98e6c09
commit e838d2cb88
3 changed files with 51 additions and 11 deletions

View File

@ -2,16 +2,21 @@ package com.gis3c.spatial.common;
import com.gis3c.spatial.entity.BaseFeature; import com.gis3c.spatial.entity.BaseFeature;
import com.vividsolutions.jts.geom.Geometry;
import org.geotools.data.DataUtilities; import org.geotools.data.DataUtilities;
import org.geotools.data.simple.SimpleFeatureCollection; import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.filter.text.cql2.CQL;
import org.geotools.filter.text.cql2.CQLException;
import org.geotools.geojson.feature.FeatureJSON; import org.geotools.geojson.feature.FeatureJSON;
import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeature;
import org.opengis.filter.Filter;
import org.opengis.filter.FilterFactory2;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.ArrayList; import java.util.*;
import java.util.List;
/** /**
* Created by hukekuan on 2018/1/16. * Created by hukekuan on 2018/1/16.
@ -165,4 +170,34 @@ public class FeatureUtilities {
return result; return result;
} }
public static SimpleFeatureCollection FeatureCollectionFilter(
SimpleFeatureCollection featureCollection, Geometry geometry,String whereClause) throws CQLException {
SimpleFeatureCollection resultCollection = null;
if(featureCollection == null || featureCollection.size() == 0){
return featureCollection;
}
if(geometry == null && (whereClause == null || "".equals(whereClause))){
throw new IllegalArgumentException("参数输入有误");
}
FilterFactory2 filterFactory = CommonFactoryFinder.getFilterFactory2();
List<Filter> filterList = new ArrayList<>();
if(geometry != null){
if(geometry.getSRID() == 0){
geometry.setSRID(4326);
}
String geometryPropertyName = featureCollection.getSchema().getGeometryDescriptor().getLocalName();
filterList.add(filterFactory.intersects(filterFactory.property(geometryPropertyName), filterFactory.literal(geometry)));
}
if(whereClause != null && !"".equals(whereClause)){
filterList.add(CQL.toFilter(whereClause));
}
if(filterList.size() == 1){
resultCollection = featureCollection.subCollection(filterList.get(0));
}else if(filterList.size() == 2){
resultCollection = featureCollection.subCollection(filterFactory.and(filterList.get(0),filterList.get(1)));
}
return resultCollection;
}
} }

View File

@ -44,7 +44,7 @@ public class GeometryUtilities {
* @return * @return
*/ */
public static Point CreatePoint(double lon, double lat){ public static Point CreatePoint(double lon, double lat){
return geomFactory.createPoint(new Coordinate(lat, lon)); return geomFactory.createPoint(new Coordinate(lon,lat));
} }
/** /**
@ -324,7 +324,7 @@ public class GeometryUtilities {
* @param distance * @param distance
* @return * @return
*/ */
public Polygon CreateBuffer(Geometry geometry,Double distance){ public static Polygon CreateBuffer(Geometry geometry,Double distance){
Polygon bufferResult = null; Polygon bufferResult = null;
if(geometry == null || distance == null){ if(geometry == null || distance == null){
throw new IllegalArgumentException("参数输入有误"); throw new IllegalArgumentException("参数输入有误");

View File

@ -37,13 +37,18 @@ public class App {
ApplicationContext context = ApplicationInit(); ApplicationContext context = ApplicationInit();
Point start = GeometryUtilities.CreatePoint(118.024444,36.802778); List<Double> data = new ArrayList<>(Arrays.asList(new Double[]{1.1,2.1,3.1}));
Point end = GeometryUtilities.CreatePoint(118.027777,36.759166); Double result = data.stream().max(Comparator.naturalOrder()).get();
try { System.out.println(result);
System.out.println(GeometryUtilities.PointDistance(start,end));
} catch (TransformException | FactoryException e) {
e.printStackTrace(); // Point start = GeometryUtilities.CreatePoint(118.024444,36.802778);
} // Point end = GeometryUtilities.CreatePoint(118.027777,36.759166);
// try {
// System.out.println(GeometryUtilities.PointDistance(start,end));
// } catch (TransformException | FactoryException e) {
// e.printStackTrace();
// }
// List<Region> regionList = regionService.findRegionsByParentCode("370000"); // List<Region> regionList = regionService.findRegionsByParentCode("370000");