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

You may also like...

退出移动版