package org.geotools.data.ogr; import static org.geotools.data.ogr.bridj.OgrLibrary.*; import org.bridj.BridJ; import org.bridj.Pointer; import org.geotools.data.ogr.bridj.OgrLibrary.OGRFieldType; public class DumpShapefile { public static void main(String[] args) { GdalInit.init(); OGRRegisterAll(); for (int i = 0; i < OGRGetDriverCount(); i++) { Pointer driver = OGRGetDriver(i); System.out.println(OGR_Dr_GetName(driver).getCString()); } String path = "/home/aaime/devel/gisData/world.shp"; Pointer ds = OGROpen(Pointer.pointerToCString(path), 0, null); System.out.println(ds); Pointer layer = OGR_DS_GetLayerByName(ds, Pointer.pointerToCString("world")); Pointer hFDefn = OGR_L_GetLayerDefn(layer); int iField; Pointer hFeature; OGR_L_ResetReading(layer); while( (hFeature = OGR_L_GetNextFeature(layer)) != null) { for( iField = 0; iField < OGR_FD_GetFieldCount(hFDefn); iField++ ) { Pointer hFieldDefn = OGR_FD_GetFieldDefn( hFDefn, iField ); if( OGR_Fld_GetType(hFieldDefn) == OGRFieldType.OFTInteger ) System.out.println(OGR_F_GetFieldAsInteger( hFeature, iField ) ); else if( OGR_Fld_GetType(hFieldDefn) == OGRFieldType.OFTReal ) System.out.println(OGR_F_GetFieldAsDouble( hFeature, iField) ); else System.out.println(OGR_F_GetFieldAsString( hFeature, iField).getCString() ); } OGR_F_Destroy(hFeature); } // OGR_FD_Release(hFDefn); OGR_L_Dereference(layer); OGR_DS_Destroy(ds); } }