/*
* Licensed Materials - Property of Rogue Wave Software, Inc.
* © Copyright Rogue Wave Software, Inc. 2014, 2017
* © Copyright IBM Corp. 2009, 2014
* © Copyright ILOG 1996, 2009
* All Rights Reserved.
*
* Note to U.S. Government Users Restricted Rights:
* The Software and Documentation were developed at private expense and
* are "Commercial Items" as that term is defined at 48 CFR 2.101,
* consisting of "Commercial Computer Software" and
* "Commercial Computer Software Documentation", as such terms are
* used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4,
* as applicable.
*/
import java.io.IOException;
import ilog.views.IlvGraphic;
import ilog.views.IlvManager;
import ilog.views.IlvManagerView;
import ilog.views.maps.IlvFeatureRenderer;
import ilog.views.maps.IlvMapFeature;
import ilog.views.maps.IlvMapRenderException;
import ilog.views.maps.format.shapefile.IlvShapeFileReader;
import ilog.views.maps.format.shapefile.IlvShapeFileTileLoader;
import ilog.views.maps.srs.coordsys.IlvCoordinateSystem;
import ilog.views.maps.srs.coordsys.IlvGeographicCoordinateSystem;
import ilog.views.maps.srs.coordtrans.IlvCoordinateTransformation;
import ilog.views.maps.srs.coordtrans.IlvCoordinateTransformationException;
import ilog.views.tiling.IlvTiledLayer;
import ilog.views.util.IlvProductUtil;
/**
* Example of how to use the ShapeFile reader package.
*/
public class ShapeReader {
IlvManager manager = new IlvManager();
IlvManagerView view = new IlvManagerView(manager);
/**
* Simple file reader for ESRI shape file format. Attributes are read from the
* dbf file.
*/
public void loadFile(String shapeFileName, String dbfFileName)
throws IOException, IlvMapRenderException, IlvCoordinateTransformationException {
IlvShapeFileReader reader = null;
// instantiate a new reader.
try {
reader = new IlvShapeFileReader(shapeFileName, dbfFileName);
} catch (IOException e) {
e.printStackTrace();
}
// Retreive the default feature renderer.
IlvFeatureRenderer renderer = reader.getDefaultFeatureRenderer();
// Coordinate Transformation from IlvGeographicCoordinateSystem.WGS84
// to IlvGeographicCoordinateSystem.WGS84 (no transformation)
IlvCoordinateSystem sourceCoordinateSystem = IlvGeographicCoordinateSystem.WGS84;
IlvCoordinateSystem targetCoordinateSystem = IlvGeographicCoordinateSystem.WGS84;
IlvCoordinateTransformation transform = IlvCoordinateTransformation.CreateTransformation(sourceCoordinateSystem,
targetCoordinateSystem);
IlvMapFeature mapFeature;
// Loop on all map features.
while ((mapFeature = reader.getNextFeature()) != null) {
IlvGraphic graphic = renderer.makeGraphic(mapFeature, transform);
if (mapFeature.getAttributes() != null)
graphic.setNamedProperty(mapFeature.getAttributes().copy());
// IlvGraphic have then to be stored in an IlvManager.
manager.addObject(graphic, false);
}
}
/**
* Create a Shape load on demand layer.
*/
public void loadLOD(String shpFileName, String dbfFileName, String shxFileName, String idxFileName)
throws IOException {
// Instantiate tile loader.
IlvShapeFileTileLoader shpTileLoader = new IlvShapeFileTileLoader(shpFileName, dbfFileName, shxFileName,
idxFileName);
// instantiate tiled layer.
IlvTiledLayer tiledLayer = new IlvTiledLayer(shpTileLoader.getTileOrigin());
// affect tile loader.
tiledLayer.setTileLoader(shpTileLoader);
// Add the layer to the IlvManager.
manager.addLayer(tiledLayer, 0);
// Fit on tile 0, 0.
tiledLayer.fitTransformerToTile(view, 0, 0);
}
public static void main(String a[]) {
// This sample uses JViews Maps features. When deploying an
// application that includes this code, you need to be in possession
// of a Rogue Wave JViews Maps Deployment license.
IlvProductUtil.DeploymentLicenseRequired(IlvProductUtil.JViews_Maps_Deployment);
ShapeReader reader = new ShapeReader();
if (a.length == 0) {// no arguments, lets specify some
a = new String[] { "data/myShapeFile.shp", null };
}
if (a.length == 2) {// load the shape file and the DBF data.
try {
reader.loadFile(a[0], a[1]);
System.out.println("reader loaded " + reader.manager.getCardinal() + " objects");
} catch (IOException e) {
e.printStackTrace();
} catch (IlvMapRenderException e) {
e.printStackTrace();
} catch (IlvCoordinateTransformationException e) {
e.printStackTrace();
}
}
if (a.length == 4) {// load the shape file on demand.
try {
reader.loadLOD(a[0], a[1], a[2], a[3]);
System.out.println("reader loaded " + reader.manager.getCardinal() + " objects");
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}