| 
					
				 | 
			
			
				@@ -0,0 +1,365 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.sysu.admin.utils.shape; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.io.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.nio.charset.Charset; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.HashMap; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONArray; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.sysu.admin.utils.shape.vo.Param; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.sysu.admin.utils.shape.vo.ParamType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.sysu.admin.utils.shape.vo.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sourceforge.pinyin4j.PinyinHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.data.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.data.shapefile.ShapefileDataStore; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.data.shapefile.ShapefileDataStoreFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.data.store.ContentFeatureCollection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.data.store.ContentFeatureSource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.feature.FeatureIterator; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.feature.simple.SimpleFeatureTypeBuilder; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.geojson.feature.FeatureJSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.geojson.geom.GeometryJSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.jdbc.JDBCDataStore; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.referencing.CRS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.geotools.referencing.crs.DefaultGeographicCRS; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.locationtech.jts.geom.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.opengis.feature.simple.SimpleFeature; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.opengis.feature.simple.SimpleFeatureType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.opengis.referencing.FactoryException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class FileFormat { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * geojson转换为shp文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param jsonPath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param shpPath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static Map geojson2Shape(String jsonPath, String shpPath){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map map = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		GeometryJSON gjson = new GeometryJSON(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String strJson = CommonMethod.getFileContent(jsonPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONObject json = JSON.parseObject(strJson); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONArray features = (JSONArray) json.get("features"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONObject feature0 = JSON.parseObject(features.get(0).toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			System.out.println(feature0.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			String strType = ((JSONObject)feature0.get("geometry")).getString("type").toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Class<?> geoType = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			switch(strType){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case "Point": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					geoType = Point.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case "MultiPoint": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					geoType = MultiPoint.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case "LineString": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					geoType = LineString.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case "MultiLineString": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					geoType = MultiLineString.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case "Polygon": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					geoType = Polygon.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				case "MultiPolygon": 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					geoType = MultiPolygon.class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//创建shape文件对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			File file = new File(shpPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Map<String, Serializable> params = new HashMap<String, Serializable>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			params.put( ShapefileDataStoreFactory.URLP.key, file.toURI().toURL() ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ShapefileDataStore ds = (ShapefileDataStore) new ShapefileDataStoreFactory().createNewDataStore(params); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//定义图形信息和属性信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.setCRS(DefaultGeographicCRS.WGS84); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.setName("shapefile"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.add("the_geom", geoType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.add("POIID", Long.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ds.createSchema(tb.buildFeatureType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//设置编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Charset charset = Charset.forName("GBK"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ds.setCharset(charset); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//设置Writer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			FeatureWriter<SimpleFeatureType, SimpleFeature> writer = ds.getFeatureWriter(ds.getTypeNames()[0], Transaction.AUTO_COMMIT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for(int i=0,len=features.size();i<len;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String strFeature = features.get(i).toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				Reader reader = new StringReader(strFeature); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SimpleFeature feature = writer.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				feature.setAttribute("the_geom",GeoCastUtil.readGeometry(reader, strType, gjson)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				feature.setAttribute("POIID",i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				writer.write(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			writer.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ds.dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("status", "success"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("message", shpPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		catch(Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("status", "failure"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("message", e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void toShp(List<Geometry> geometryList, String shpPath, ParamType[] paramTypes, List<Param> params) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		GeometryJSON fjson = new GeometryJSON(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		File file = new File(shpPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map<String, Serializable> map = new HashMap<String, Serializable>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		map.put( ShapefileDataStoreFactory.URLP.key, file.toURI().toURL() ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ShapefileDataStore ds = (ShapefileDataStore) new ShapefileDataStoreFactory().createNewDataStore(map); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//定义图形信息和属性信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//设置坐标系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.setCRS(CRS.decode("EPSG:4326")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (FactoryException e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tb.setName("shapefile"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		tb.add("the_geom", MultiPolygon.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for(ParamType paramType : paramTypes){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.add(paramType.getName(), paramType.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ds.createSchema(tb.buildFeatureType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//设置编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ds.setCharset(Charset.forName("GBK")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//设置Writer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FeatureWriter<SimpleFeatureType, SimpleFeature> writer = ds.getFeatureWriterAppend(ds.getTypeNames()[0], Transaction.AUTO_COMMIT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for(int i=0,len=geometryList.size();i<len;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Geometry geometry = geometryList.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SimpleFeature feature = writer.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			feature.setAttribute("the_geom", GeoSwapXYUtil.swap(fjson, geometry)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Param param = params.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for(int j = 0;j < param.getNames().length;j++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				feature.setAttribute(param.getNames()[j], param.getValues()[j]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			writer.write(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		writer.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ds.dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void toShpPostGis(List<Geometry> geometryList, JDBCDataStore ds, ParamType[] paramTypes, List<Param> params) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		GeometryJSON fjson = new GeometryJSON(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String typeName = "shapefile"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(!ds.hasSchema(typeName)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//定义图形信息和属性信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//设置坐标系 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//创建 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.setCRS(DefaultGeographicCRS.WGS84); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.setName(typeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			tb.add("the_geom", GeometryCollection.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (ParamType paramType : paramTypes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				tb.add(paramType.getName(), paramType.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ds.createSchema(tb.buildFeatureType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FeatureWriter<SimpleFeatureType, SimpleFeature> writer = ds.getFeatureWriterAppend(ds.getTypeNames()[0], Transaction.AUTO_COMMIT); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for(int i=0,len=geometryList.size();i<len;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Geometry geometry = geometryList.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SimpleFeature feature = writer.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			feature.setAttribute("the_geom", GeoCastUtil.castGeometryCollection(fjson, geometry)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Param param = params.get(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (int j = 0; j < param.getNames().length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				feature.setAttribute(param.getNames()[j], param.getValues()[j]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			writer.write(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		writer.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ds.dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * shp转换为Geojson 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param shpPath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static Map shape2Geojson(String shpPath, String jsonPath){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map map = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FeatureJSON fjson = new FeatureJSON(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			StringBuffer sb = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sb.append("{\"type\": \"FeatureCollection\",\"features\": "); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			File file = new File(shpPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ShapefileDataStore shpDataStore = new ShapefileDataStore(file.toURL()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			FeatureIterator<SimpleFeature> itertor = getFeatures(shpDataStore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			JSONArray array = new JSONArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			while (itertor.hasNext()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SimpleFeature feature = itertor.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				StringWriter writer = new StringWriter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fjson.writeFeature(feature, writer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				JSONObject json = JSON.parseObject(writer.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				array.add(json); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			itertor.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sb.append(array.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sb.append("}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//写入文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			CommonMethod.append2File(jsonPath, sb.toString(), false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("status", "success"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("message", sb.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		catch(Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("status", "failure"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("message", e.getMessage()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static FeatureIterator<SimpleFeature> getFeatures(ShapefileDataStore shpDataStore) throws IOException { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//设置编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Charset charset = Charset.forName("GBK"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpDataStore.setCharset(charset); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String typeName = shpDataStore.getTypeNames()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ContentFeatureSource featureSource = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		featureSource =  shpDataStore.getFeatureSource (typeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ContentFeatureCollection result = featureSource.getFeatures(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FeatureIterator<SimpleFeature> itertor = result.features(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return itertor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * shp转换为Geojson 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param shpPath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public Map shape2GeoJsonList(String shpPath, String jsonPathDir, String numberPropertyName){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Map map = new HashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FeatureJSON fjson = new FeatureJSON(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			File file = new File(shpPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			ShapefileDataStore shpDataStore = new ShapefileDataStore(file.toURL()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			FeatureIterator<SimpleFeature> itertor = getFeatures(shpDataStore); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			while (itertor.hasNext()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				StringBuffer sb = new StringBuffer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sb.append("{\"type\": \"FeatureCollection\",\"features\": ["); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SimpleFeature feature = itertor.next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				StringWriter writer = new StringWriter(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fjson.writeFeature(feature, writer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				JSONObject json = JSON.parseObject(writer.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sb.append(json.toJSONString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				sb.append("]}"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				//写入文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				String path = jsonPathDir + "\\" + getPinyin(file.getName().substring(0, 2)) + "_" + feature.getProperty(numberPropertyName).getValue()  + ".geojson"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				CommonMethod.append2File(path, sb.toString(), false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			itertor.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("status", "success"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		catch(Exception e){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			map.put("status", "failure"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param china (字符串 汉字) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @return 汉字转拼音 其它字符不变 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static String getPinyin(String china){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		HanyuPinyinOutputFormat formart = new HanyuPinyinOutputFormat(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		formart.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		formart.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		formart.setVCharType(HanyuPinyinVCharType.WITH_V); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		char[] arrays = china.trim().toCharArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String result = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			for (int i=0;i<arrays.length;i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				char ti = arrays[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(Character.toString(ti).matches("[\\u4e00-\\u9fa5]")){ //匹配是否是中文 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					String[] temp = PinyinHelper.toHanyuPinyinStringArray(ti,formart); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					result += temp[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					result += ti; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} catch (BadHanyuPinyinOutputFormatCombination e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			e.printStackTrace(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * 工具类测试方法 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 * @param args 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void main(String[] args){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		no3(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void no3(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String shpPath = "C:\\Users\\Administrator\\Desktop\\改建\\"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		geojson2Shape(shpPath + "districts.geojson",shpPath + "districts.shp"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void no2(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		geojson2Shape("E:\\zcjy\\intersections.geojson", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				"E:\\zcjy\\intersections.shp"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//		shape2Geojson("E:\\zcjy\\intersections.shp","E:\\zcjy\\intersections.geojson"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public static void no1(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		FileFormat fileFormat = new FileFormat(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		long start = System.currentTimeMillis(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\采矿权数据.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		String jsonPath = "E:\\zcjy\\workspace2\\change_det\\src\\main\\webapp\\geojson"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"OBJECTID"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\英德最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\阳山最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\清新最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\清城最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\连州最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\连山最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\连南最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		shpPath = "E:\\zcjy\\bhjc\\清远裸露山体\\佛冈最终裸露山体地块8.11new.shp"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fileFormat.shape2GeoJsonList(shpPath, jsonPath,"地块编号"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		System.out.println(jsonPath+",共耗时"+(System.currentTimeMillis() - start)+"ms"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |