CoordinateReferenceSystem dataCRS = layer.getCRS();
CoordinateReferenceSystem worldCRS = context.getCRS();
MathTransform dataToWorld = CRS.findMathTransform(dataCRS, worldCRS, false);
ReferencedEnvelope bounds = getRenderBounds();
monitor.subTask("connecting");
CSV csv = resource.resolve(CSV.class, new SubProgressMonitor(monitor, 10) );
reader = csv.reader();
int nameIndex = csv.getHeader("name");
IProgressMonitor drawMonitor = new SubProgressMonitor(monitor, 90);
Coordinate worldLocation = new Coordinate();
drawMonitor.beginTask("draw "+csv.toString(), csv.getSize());
String [] row;
while ((row = reader.readNext()) != null) {
Point point = csv.getPoint(row);
Coordinate dataLocation = point.getCoordinate();
try {
JTS.transform(dataLocation, worldLocation, dataToWorld);
} catch (TransformException e) {
continue;
}
if (bounds != null && !bounds.contains(worldLocation)) {
continue; // optimize!
}
java.awt.Point p = getContext().worldToPixel(worldLocation);
g.fillOval(p.x, p.y, 10, 10);
String name = row[nameIndex];