geotools处理shapefiles
package org.geotools;
import java.io.File;
import org.geotools.data.FileDataStore;
import org.geotools.data.FileDataStoreFinder;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.geotools.data.simple.SimpleFeatureSource;
import org.geotools.map.FeatureLayer;
import org.geotools.map.Layer;
import org.geotools.map.MapContent;
import org.geotools.styling.SLD;
import org.geotools.styling.Style;
import org.geotools.swing.JMapFrame;
import org.geotools.swing.data.JFileDataStoreChooser;
import java.io.IOException;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.Vector;
import org.geotools.data.shapefile.ShapefileDataStore;
import org.geotools.data.shapefile.ShapefileDataStoreFactory;
import org.geotools.data.shapefile.dbf.DbaseFileReader;
import org.geotools.data.shapefile.dbf.DbaseFileHeader;
import org.geotools.data.shapefile.files.ShpFiles;
import org.geotools.data.shapefile.shp.ShapefileReader;
import org.opengis.feature.Property;
import org.opengis.feature.simple.SimpleFeature;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
public static void main(String[] args) throws Exception {
FileChannel in = new FileInputStream("data/test.dbf").getChannel();
DbaseFileReader dr = new DbaseFileReader(in, true, Charset.forName("GBK"));
DbaseFileHeader dh = dr.getHeader();
int fields = dh.getNumFields();
ShpFiles sf = new ShpFiles("data/test.shp");
ShapefileReader r = new ShapefileReader( sf, false, false, new GeometryFactory() );
Vector v1=new Vector();
while(dr.hasNext()&&r.hasNext()){
Geometry shape = (Geometry) r.nextRecord().shape(); //com.vividsolutions.jts.geom.Geometry;
/*System.out.println(shape.toString());*/
Vector v=new Vector();
v.addElement(shape);
DbaseFileReader.Row row = dr.readRow();
for (int i=0;i<fields;i++){
Object data = row.read(i);
v.addElement(data);
//处理中文
if(dh.getFieldName(i).equals("NAME")){
// TO-DO: charset error here.
String name = new String(data.toString().getBytes(),"utf-8");
/* System.out.print(name);*/
}else{
/*System.out.print(data);*/
}
/* System.out.print("\t");*/
}
v1.addElement(v);
}
System.out.println(v1);
r.close();
dr.close();
}
}
转载自:https://blog.csdn.net/cehui115081/article/details/18563573