空间类相关方法
This commit is contained in:
parent
da30005ad4
commit
53e2838961
101
pom.xml
101
pom.xml
@ -2,9 +2,9 @@
|
|||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<groupId>com.gis3c</groupId>
|
<groupId>com.c3gis</groupId>
|
||||||
<artifactId>gis3c</artifactId>
|
<artifactId>c3gis</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0.1</version>
|
||||||
<build>
|
<build>
|
||||||
<plugins>
|
<plugins>
|
||||||
<plugin>
|
<plugin>
|
||||||
@ -16,6 +16,23 @@
|
|||||||
<target>1.8</target>
|
<target>1.8</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<version>3.0.2</version>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>src/test/**</exclude>
|
||||||
|
</excludes>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
<!--<classpathPrefix>lib/</classpathPrefix>-->
|
||||||
|
<!--<mainClass>com.sysware.HelloWorld</mainClass>-->
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
<resources>
|
<resources>
|
||||||
<resource>
|
<resource>
|
||||||
@ -37,98 +54,20 @@
|
|||||||
<mybatis.version>3.3.1</mybatis.version>
|
<mybatis.version>3.3.1</mybatis.version>
|
||||||
<slf4j.version>1.7.18</slf4j.version>
|
<slf4j.version>1.7.18</slf4j.version>
|
||||||
<log4j.version>1.2.16</log4j.version>
|
<log4j.version>1.2.16</log4j.version>
|
||||||
<!--<shiro.version>1.2.4</shiro.version>-->
|
|
||||||
<geotools.version>17.0</geotools.version>
|
<geotools.version>17.0</geotools.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-core</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-oxm</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-tx</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-jdbc</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-aop</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-context-support</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-aop</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework</groupId>
|
|
||||||
<artifactId>spring-test</artifactId>
|
|
||||||
<version>${spring.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>junit</groupId>
|
|
||||||
<artifactId>junit</artifactId>
|
|
||||||
<version>3.8.1</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mybatis</groupId>
|
<groupId>org.mybatis</groupId>
|
||||||
<artifactId>mybatis</artifactId>
|
<artifactId>mybatis</artifactId>
|
||||||
<version>${mybatis.version}</version>
|
<version>${mybatis.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.mybatis</groupId>
|
|
||||||
<artifactId>mybatis-spring</artifactId>
|
|
||||||
<version>1.2.3</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.postgresql</groupId>
|
<groupId>org.postgresql</groupId>
|
||||||
<artifactId>postgresql</artifactId>
|
<artifactId>postgresql</artifactId>
|
||||||
<version>42.1.0</version>
|
<version>42.1.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.oracle</groupId>
|
|
||||||
<artifactId>ojdbc14</artifactId>
|
|
||||||
<version>10.2.0.4.0</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-core</artifactId>
|
|
||||||
<version>2.7.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-databind</artifactId>
|
|
||||||
<version>2.7.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
|
||||||
<artifactId>jackson-annotations</artifactId>
|
|
||||||
<version>2.7.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>commons-dbcp</groupId>
|
|
||||||
<artifactId>commons-dbcp</artifactId>
|
|
||||||
<version>1.4</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.geotools</groupId>
|
<groupId>org.geotools</groupId>
|
||||||
<artifactId>gt-opengis</artifactId>
|
<artifactId>gt-opengis</artifactId>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.common;/**
|
package com.c3gis.spatial.common;/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
import org.geotools.data.DataUtilities;
|
import org.geotools.data.DataUtilities;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
import org.geotools.data.FeatureSource;
|
import org.geotools.data.FeatureSource;
|
||||||
import org.geotools.map.FeatureLayer;
|
import org.geotools.map.FeatureLayer;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;/**
|
package com.c3gis.spatial.entity;/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
import com.sun.media.jai.codec.ImageCodec;
|
import com.sun.media.jai.codec.ImageCodec;
|
||||||
import com.sun.media.jai.codec.ImageEncoder;
|
import com.sun.media.jai.codec.ImageEncoder;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;/**
|
package com.c3gis.spatial.entity;/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;/**
|
package com.c3gis.spatial.entity;/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1,8 +1,6 @@
|
|||||||
package com.gis3c.entity;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
import com.gis3c.entity.spatial.BaseFeature;
|
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
import com.vividsolutions.jts.geom.MultiPolygon;
|
|
||||||
|
|
||||||
public class GeoCity extends BaseFeature{
|
public class GeoCity extends BaseFeature{
|
||||||
private String code;
|
private String code;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by hukekuan on 17-7-10.
|
* Created by hukekuan on 17-7-10.
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.entity.spatial;
|
package com.c3gis.spatial.entity;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.gis3c.postgis;
|
package com.c3gis.spatial.postgis;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.CallableStatement;
|
import java.sql.CallableStatement;
|
||||||
@ -1,32 +0,0 @@
|
|||||||
package com.gis3c;
|
|
||||||
|
|
||||||
import com.gis3c.entity.GeoCity;
|
|
||||||
import com.gis3c.service.HelloService;
|
|
||||||
import com.gis3c.service.PostGISService;
|
|
||||||
import org.opengis.feature.simple.SimpleFeature;
|
|
||||||
import org.opengis.feature.simple.SimpleFeatureType;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class App {
|
|
||||||
public static ApplicationContext ContextInit(){
|
|
||||||
return new ClassPathXmlApplicationContext("classpath:spring-config.xml");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException, IllegalAccessException {
|
|
||||||
ApplicationContext context =ContextInit();
|
|
||||||
PostGISService postGISService = (PostGISService) context.getBean("postGISService");
|
|
||||||
List<GeoCity> geoCities = postGISService.AllCities();
|
|
||||||
List<SimpleFeature> simpleFeatureList = new ArrayList<>();
|
|
||||||
SimpleFeatureType simpleFeatureType = geoCities.get(0).createFeatureType();
|
|
||||||
for(int i = 0,len = geoCities.size();i < len;i++){
|
|
||||||
simpleFeatureList.add(geoCities.get(i).attribute2Feature(simpleFeatureType,Integer.toString(i)));
|
|
||||||
}
|
|
||||||
System.out.println(GeoCity.Attributes2GeoJSON(simpleFeatureList));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,126 +0,0 @@
|
|||||||
package com.gis3c;
|
|
||||||
|
|
||||||
import com.gis3c.entity.C3Map;
|
|
||||||
import com.gis3c.entity.GeoCity;
|
|
||||||
import com.gis3c.service.PostGISService;
|
|
||||||
import no.ecc.vectortile.VectorTileDecoder;
|
|
||||||
import no.ecc.vectortile.VectorTileEncoder;
|
|
||||||
import org.apache.commons.collections.map.HashedMap;
|
|
||||||
import org.geotools.data.FileDataStore;
|
|
||||||
import org.geotools.data.FileDataStoreFinder;
|
|
||||||
import org.geotools.data.shapefile.ShapefileDataStore;
|
|
||||||
import org.geotools.data.simple.SimpleFeatureSource;
|
|
||||||
import org.geotools.factory.CommonFactoryFinder;
|
|
||||||
import org.geotools.map.FeatureLayer;
|
|
||||||
import org.geotools.map.Layer;
|
|
||||||
import org.geotools.styling.SLD;
|
|
||||||
import org.geotools.styling.SLDParser;
|
|
||||||
import org.geotools.styling.Style;
|
|
||||||
import org.geotools.styling.StyleFactory;
|
|
||||||
import org.geotools.swing.data.JFileDataStoreChooser;
|
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.nio.charset.Charset;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class Main {
|
|
||||||
public static ApplicationContext ContextInit(){
|
|
||||||
return new ClassPathXmlApplicationContext("classpath:spring-config.xml");
|
|
||||||
}
|
|
||||||
public static StyleFactory styleFactory = CommonFactoryFinder.getStyleFactory();
|
|
||||||
// public static Style createStyle(File file, FeatureSource featureSource) {
|
|
||||||
// File sld = toSLDFile(file);
|
|
||||||
// if (sld != null) {
|
|
||||||
// return createFromSLD(sld);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// SimpleFeatureType schema = (SimpleFeatureType)featureSource.getSchema();
|
|
||||||
// return JSimpleStyleDialog.showDialog(null, schema);
|
|
||||||
// }
|
|
||||||
// public static File toSLDFile(File file) {
|
|
||||||
// String path = file.getAbsolutePath();
|
|
||||||
// String base = path.substring(0,path.length()-4);
|
|
||||||
// String newPath = base + ".sld";
|
|
||||||
// File sld = new File( newPath );
|
|
||||||
// if( sld.exists() ){
|
|
||||||
// return sld;
|
|
||||||
// }
|
|
||||||
// newPath = base + ".SLD";
|
|
||||||
// sld = new File( newPath );
|
|
||||||
// if( sld.exists() ){
|
|
||||||
// return sld;
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
// public static Style createFromSLD(File sld) {
|
|
||||||
// try {
|
|
||||||
// SLDParser stylereader = new SLDParser(styleFactory, sld.toURI().toURL());
|
|
||||||
// Style[] style = stylereader.readXML();
|
|
||||||
// return style[0];
|
|
||||||
//
|
|
||||||
// } catch (Exception e) {
|
|
||||||
// JExceptionReporter.showDialog(e, "Problem creating style");
|
|
||||||
// }
|
|
||||||
// return null;
|
|
||||||
// }
|
|
||||||
public static void StyleTest()throws IOException{
|
|
||||||
File file = JFileDataStoreChooser.showOpenFile("shp",null);
|
|
||||||
if(file == null){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
File sldFile = new File("D:\\f\\shp\\shijie.sld");
|
|
||||||
SLDParser styleReader = new SLDParser(styleFactory,sldFile.toURI().toURL());
|
|
||||||
Style[] styles = styleReader.readXML();
|
|
||||||
Style style1 = styles[0];
|
|
||||||
|
|
||||||
FileDataStore store = FileDataStoreFinder.getDataStore(file);
|
|
||||||
((ShapefileDataStore)store).setCharset(Charset.forName("GBK"));
|
|
||||||
SimpleFeatureSource featureSource = store.getFeatureSource();
|
|
||||||
|
|
||||||
C3Map map = new C3Map();
|
|
||||||
map.setTitle("Quickstart");
|
|
||||||
Style style = SLD.createSimpleStyle(featureSource.getSchema());
|
|
||||||
|
|
||||||
Layer layer = new FeatureLayer(featureSource,style1);
|
|
||||||
map.addLayer(layer);
|
|
||||||
map.saveImage("D://mapimage//1.jpg",256);
|
|
||||||
System.out.println("image has saved");
|
|
||||||
}
|
|
||||||
public static void copy(Reader in,Writer out) throws IOException {
|
|
||||||
int c = -1;
|
|
||||||
while((c = in.read()) != -1) {
|
|
||||||
out.write(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void VectorTilesTest()throws IOException{
|
|
||||||
ApplicationContext context =ContextInit();
|
|
||||||
PostGISService postGISService = (PostGISService) context.getBean("postGISService");
|
|
||||||
List<GeoCity> geoCities = postGISService.AllCities();
|
|
||||||
|
|
||||||
VectorTileEncoder encoder = new VectorTileEncoder();
|
|
||||||
VectorTileDecoder d = new VectorTileDecoder();
|
|
||||||
byte[] encoded;
|
|
||||||
geoCities.forEach(city -> {
|
|
||||||
Map<String,String> cityAttr = new HashMap<>();
|
|
||||||
cityAttr.put("name",city.getName());
|
|
||||||
cityAttr.put("code",city.getCode());
|
|
||||||
// encoder.addFeature("city",cityAttr,city.getGeom());
|
|
||||||
});
|
|
||||||
encoded = encoder.encode();
|
|
||||||
|
|
||||||
System.out.println(new String(encoded, "utf8"));
|
|
||||||
try(FileOutputStream fos = new FileOutputStream("/home/hukekuan/0.vector.pbf",true)){
|
|
||||||
fos.write(encoded);
|
|
||||||
fos.flush();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void main(String[] args) throws IOException {
|
|
||||||
VectorTilesTest();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
package com.gis3c.dao;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by hukekuan on 2016/12/28.
|
|
||||||
*/
|
|
||||||
public interface HelloDao {
|
|
||||||
public String SayHello();
|
|
||||||
}
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
package com.gis3c.dao;
|
|
||||||
|
|
||||||
import com.gis3c.entity.GeoCity;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public interface PostGISDao {
|
|
||||||
public void CommonCreateTable(Map<String,Object> tableStructure);
|
|
||||||
public void CreateSpatialIndex(String tableName,String geometryColumn);
|
|
||||||
|
|
||||||
public List<GeoCity> AllCities();
|
|
||||||
}
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
package com.gis3c.dao.impl;
|
|
||||||
|
|
||||||
import com.gis3c.dao.HelloDao;
|
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
|
||||||
import org.mybatis.spring.support.SqlSessionDaoSupport;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by hukekuan on 2016/12/28.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public class HelloDaoImpl extends SqlSessionDaoSupport implements HelloDao {
|
|
||||||
@Resource(name="sqlSessionFactory_GIS") private SqlSessionFactory sqlSessionFactory;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String SayHello(){
|
|
||||||
return "hello wold";
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void injectSessionFactory(){
|
|
||||||
super.setSqlSessionFactory(sqlSessionFactory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
package com.gis3c.dao.impl;
|
|
||||||
|
|
||||||
import com.gis3c.dao.PostGISDao;
|
|
||||||
import com.gis3c.entity.GeoCity;
|
|
||||||
import org.apache.ibatis.session.SqlSessionFactory;
|
|
||||||
import org.mybatis.spring.support.SqlSessionDaoSupport;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public class PostGISDaoImpl extends SqlSessionDaoSupport implements PostGISDao {
|
|
||||||
@Resource(name="sqlSessionFactory_GIS")
|
|
||||||
private SqlSessionFactory sqlSessionFactory;
|
|
||||||
@PostConstruct
|
|
||||||
public void injectSessionFactory(){
|
|
||||||
super.setSqlSessionFactory(sqlSessionFactory);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void CommonCreateTable(Map<String,Object> tableStructure){
|
|
||||||
System.out.println(tableStructure);
|
|
||||||
getSqlSession().update("PostGISSql.commonCreateTable",tableStructure);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void CreateSpatialIndex(String tableName,String geometryColumn){
|
|
||||||
Map<String,Object> param = new HashMap<>();
|
|
||||||
param.put("tableName",tableName);
|
|
||||||
param.put("geometryColumn",geometryColumn);
|
|
||||||
param.put("spatialIndexName","sidx_" + tableName +"_" + geometryColumn);
|
|
||||||
getSqlSession().update("PostGISSql.createSpatialIndex",param);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<GeoCity> AllCities(){
|
|
||||||
return getSqlSession().selectList("PostGISSql.allCity");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
package com.gis3c.service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by hukekuan on 2016/12/28.
|
|
||||||
*/
|
|
||||||
public interface HelloService {
|
|
||||||
public String SayHello();
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
package com.gis3c.service;
|
|
||||||
|
|
||||||
import com.gis3c.entity.GeoCity;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public interface PostGISService {
|
|
||||||
public void CommonCreateTable(String tableName,String geometryColumn,List<Map<String,Object>> columns);
|
|
||||||
|
|
||||||
public List<GeoCity> AllCities();
|
|
||||||
}
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
package com.gis3c.service.impl;
|
|
||||||
|
|
||||||
import com.gis3c.dao.HelloDao;
|
|
||||||
import com.gis3c.service.HelloService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by hukekuan on 2016/12/28.
|
|
||||||
*/
|
|
||||||
@Service("helloService")
|
|
||||||
public class HelloServiceImpl implements HelloService {
|
|
||||||
@Resource private HelloDao helloDao;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String SayHello(){
|
|
||||||
return helloDao.SayHello();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
package com.gis3c.service.impl;
|
|
||||||
|
|
||||||
import com.gis3c.dao.PostGISDao;
|
|
||||||
import com.gis3c.entity.GeoCity;
|
|
||||||
import com.gis3c.service.PostGISService;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Service("postGISService")
|
|
||||||
public class PostGISServiceImpl implements PostGISService {
|
|
||||||
@Resource private PostGISDao postGISDao;
|
|
||||||
|
|
||||||
public void CommonCreateTable(
|
|
||||||
String tableName,String geometryColumn,List<Map<String,Object>> columns){
|
|
||||||
if(tableName == null || "".equals(tableName)
|
|
||||||
|| geometryColumn == null || "".equals(geometryColumn)
|
|
||||||
|| columns == null || columns.size() == 0){
|
|
||||||
throw new IllegalArgumentException("参数错误");
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String,Object> tableStructure = new HashMap<>();
|
|
||||||
tableStructure.put("tableName",tableName);
|
|
||||||
tableStructure.put("columnList",columns);
|
|
||||||
|
|
||||||
Map<String,Object> SpatialIndexParam = new HashMap<>();
|
|
||||||
SpatialIndexParam.put("spatialIndexName","sidx_" + tableName + "_" + geometryColumn);
|
|
||||||
SpatialIndexParam.put("tableName",tableName);
|
|
||||||
SpatialIndexParam.put("geometryColumn",geometryColumn);
|
|
||||||
|
|
||||||
postGISDao.CommonCreateTable(tableStructure);
|
|
||||||
postGISDao.CreateSpatialIndex(tableName,geometryColumn);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<GeoCity> AllCities(){
|
|
||||||
return postGISDao.AllCities();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,126 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
|
||||||
<mapper namespace="PostGISSql">
|
|
||||||
<resultMap id="GeoCityResultMap" type="java.util.HashMap">
|
|
||||||
<result property="geom" column="geom" javaType="Geometry"/>
|
|
||||||
</resultMap>
|
|
||||||
<resultMap id="geoCity" type="com.gis3c.entity.GeoCity">
|
|
||||||
<result column="code" property="code" />
|
|
||||||
<result column="name" property="name" />
|
|
||||||
<result column="geom" property="geometry" />
|
|
||||||
</resultMap>
|
|
||||||
<!--创建空间表通用方法-->
|
|
||||||
<update id="commonCreateTable">
|
|
||||||
CREATE TABLE ${tableName}
|
|
||||||
<foreach item="item" index="index" collection="columnList" open="(" separator=",">
|
|
||||||
<choose>
|
|
||||||
<when test='item.typeCode == 1'>
|
|
||||||
${item.columnName} numeric
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 2'>
|
|
||||||
${item.columnName} NUMBER
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 3'>
|
|
||||||
${item.columnName} character varying(254)
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 91'>
|
|
||||||
${item.columnName} geometry(POINT,4326)
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 911'>
|
|
||||||
${item.columnName} geometry(MULTIPOINT,4326)
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 92'>
|
|
||||||
${item.columnName} geometry(LINESTRING,4326)
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 922'>
|
|
||||||
${item.columnName} geometry(MULTILINESTRING,4326)
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 93'>
|
|
||||||
${item.columnName} geometry(POLYGON,4326)
|
|
||||||
</when>
|
|
||||||
<when test='item.typeCode == 933'>
|
|
||||||
${item.columnName} geometry(MULTIPOLYGON,4326)
|
|
||||||
</when>
|
|
||||||
</choose>
|
|
||||||
</foreach>
|
|
||||||
,CONSTRAINT fid_pkey PRIMARY KEY (fid));
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!--创建空间索引-->
|
|
||||||
<update id="createSpatialIndex">
|
|
||||||
CREATE INDEX ${spatialIndexName}
|
|
||||||
ON ${tableName}
|
|
||||||
USING gist
|
|
||||||
(${geometryColumn});
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<!--查询表是否存在,返回表个数-->
|
|
||||||
<select id="tableCount" parameterType="java.lang.String" resultType="java.lang.Integer">
|
|
||||||
select count(1) from pg_class where relname in (lower(#{tableName,jdbcType=VARCHAR}),upper(#{tableName,jdbcType=VARCHAR}));
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 删除空间表通用方法 -->
|
|
||||||
<delete id="commonTableRemove" parameterType="java.lang.String">
|
|
||||||
drop table ${_parameter};
|
|
||||||
</delete>
|
|
||||||
|
|
||||||
<!-- 插入空间信息通用方法 -->
|
|
||||||
<insert id="commonInsertBatch">
|
|
||||||
insert into ${tableName}
|
|
||||||
<foreach item="item" index="index" collection="keyList" open="(" separator="," close=")values">
|
|
||||||
${item}
|
|
||||||
</foreach>
|
|
||||||
<foreach collection="featuresList" item="featureValues" index="index" separator="," >
|
|
||||||
<foreach item="featureValue" index="featureIndex" collection="featureValues" open=" (" separator="," close=")">
|
|
||||||
<choose>
|
|
||||||
<when test='featureValue.key == "fid"'>
|
|
||||||
#{featureValue.value,jdbcType=INTEGER}
|
|
||||||
</when>
|
|
||||||
<when test='featureValue.key == "geo"'>
|
|
||||||
st_geomfromText(#{featureValue.value,jdbcType=VARCHAR},4326)
|
|
||||||
</when>
|
|
||||||
<otherwise>
|
|
||||||
#{featureValue.value,jdbcType=VARCHAR}
|
|
||||||
</otherwise>
|
|
||||||
</choose>
|
|
||||||
</foreach>
|
|
||||||
</foreach>
|
|
||||||
</insert>
|
|
||||||
|
|
||||||
<insert id="commonInsert">
|
|
||||||
insert into ${tableName}
|
|
||||||
<foreach item="item" index="index" collection="keyList" open="(" separator="," close=")">
|
|
||||||
${item}
|
|
||||||
</foreach>
|
|
||||||
<foreach item="featureValue" index="index" collection="valueList" open=" values(" separator="," close=")">
|
|
||||||
<choose>
|
|
||||||
<when test='featureValue.key == "fid"'>
|
|
||||||
#{featureValue.value,jdbcType=INTEGER}
|
|
||||||
</when>
|
|
||||||
<when test='featureValue.key == "geo"'>
|
|
||||||
st_geomfromText(#{featureValue.value,jdbcType=VARCHAR},4326)
|
|
||||||
</when>
|
|
||||||
<otherwise>
|
|
||||||
#{featureValue.value,jdbcType=VARCHAR}
|
|
||||||
</otherwise>
|
|
||||||
</choose>
|
|
||||||
</foreach>
|
|
||||||
</insert>
|
|
||||||
|
|
||||||
<!--查询表中字段信息-->
|
|
||||||
<select id="tableColumns" parameterType="java.lang.String" resultType="java.util.HashMap">
|
|
||||||
select column_name,data_type
|
|
||||||
from information_schema.columns where table_name = #{tableName,jdbcType=INTEGER} and table_schema='public';
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<!-- 清空表 -->
|
|
||||||
<delete id="clearSpatialTable" parameterType="java.lang.String">
|
|
||||||
delete from ${_parameter}
|
|
||||||
</delete>
|
|
||||||
|
|
||||||
<select id="allCity" resultMap="geoCity">
|
|
||||||
select t.code as code,t.name as name, t.geom
|
|
||||||
from geocity t;
|
|
||||||
--where t."CODE"='370300';
|
|
||||||
</select>
|
|
||||||
</mapper>
|
|
||||||
7
src/test/java/com/c3gis/spatial/App.java
Normal file
7
src/test/java/com/c3gis/spatial/App.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package com.c3gis.spatial;
|
||||||
|
|
||||||
|
public class App {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("OK");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,38 +0,0 @@
|
|||||||
package com.gis3c;
|
|
||||||
|
|
||||||
import junit.framework.Test;
|
|
||||||
import junit.framework.TestCase;
|
|
||||||
import junit.framework.TestSuite;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unit test for simple App.
|
|
||||||
*/
|
|
||||||
public class AppTest
|
|
||||||
extends TestCase
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Create the test case
|
|
||||||
*
|
|
||||||
* @param testName name of the test case
|
|
||||||
*/
|
|
||||||
public AppTest( String testName )
|
|
||||||
{
|
|
||||||
super( testName );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the suite of tests being tested
|
|
||||||
*/
|
|
||||||
public static Test suite()
|
|
||||||
{
|
|
||||||
return new TestSuite( AppTest.class );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Rigourous Test :-)
|
|
||||||
*/
|
|
||||||
public void testApp()
|
|
||||||
{
|
|
||||||
assertTrue( true );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -9,6 +9,6 @@
|
|||||||
<typeAlias type="com.vividsolutions.jts.geom.Geometry" alias="Geometry" />
|
<typeAlias type="com.vividsolutions.jts.geom.Geometry" alias="Geometry" />
|
||||||
</typeAliases>
|
</typeAliases>
|
||||||
<typeHandlers>
|
<typeHandlers>
|
||||||
<typeHandler handler="com.gis3c.postgis.PostGISHandler" javaType="Geometry" />
|
<typeHandler handler="com.c3gis.spatial.postgis.PostGISHandler" javaType="Geometry" />
|
||||||
</typeHandlers>
|
</typeHandlers>
|
||||||
</configuration>
|
</configuration>
|
||||||
Loading…
Reference in New Issue
Block a user