package cz.agents.dbtokmlexporter.darptestbed; import java.awt.Color; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.xml.DOMConfigurator; import com.vividsolutions.jts.geom.Point; import cz.agents.agentpolis.tools.geovisio.database.connection.DatabaseConnection; import cz.agents.agentpolis.tools.geovisio.database.connection.DatabaseConnectionSettings; import cz.agents.agentpolis.tools.geovisio.database.postgres.postgis.PostgisConnection; import cz.agents.agentpolis.tools.geovisio.database.postgres.postgis.PostgisGeometry; import cz.agents.agentpolis.tools.geovisio.layer.BoundingBox; import cz.agents.alite.googleearth.updates.Kmz; import cz.agents.dbtokmlexporter.HeatMapKmlItem; import cz.agents.dbtokmlexporter.factory.DescriptionFactory; import cz.agents.dbtokmlexporter.factory.TableColumnsDescriptionFactory; import cz.agents.dbtokmlexporter.factory.geometry.PointGeometryFactory; import cz.agents.dbtokmlexporter.factory.style.IconStyleFactory; import cz.agents.dbtokmlexporter.kmlitem.NotificationKmlItem; import cz.agents.dbtokmlexporter.utils.TimeUtils; import cz.agents.resultsvisio.kml.KmlItem; import de.micromata.opengis.kml.v_2_2_0.Document; import de.micromata.opengis.kml.v_2_2_0.Kml; /** * * @author Marek Cuchy * */ public class RequestSuccessFailDensityMapMain { private final static BoundingBox DUBLIN_BOUNDING_BOX = new BoundingBox(-6.439877418513285, 53.26100248399494, -6.061446946007517, 53.40390930491094, 4326); private final static BoundingBox SAN_FRANCISCO_BOUNDING_BOX = new BoundingBox(-122.63928717885337, 37.69060923316812, -122.2283977678971, 37.94719910401152, 4326); public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException { String schemaName = "testbed_san_francisco_3_r1000_d100_dutrue_putrue"; // String schemaName = "testbed_sf"; new File(schemaName).mkdir(); DOMConfigurator.configure("log4j.xml"); DatabaseConnectionSettings sett = new DatabaseConnectionSettings("mf.felk.cvut.cz", 5432, "cuchy", "geovisio", "visio", schemaName); DatabaseConnection conn = new PostgisConnection(sett); conn.connect(); // List<String> schemas = new ArrayList<>(); // ResultSet resultSet = // conn.executeQuery("select * from information_schema.schemata where schema_name like 'testbed_%'"); // while (resultSet.next()) { // schemas.add(resultSet.getString("schema_name")); // } // for (String string : schemas) { // saveToKml(createRequestSuccessHeatMaps(conn, string,2*60*1000), // schemaName + "/heatmaps.kml"); // saveToKml(createRequestFailHeatMaps(conn, string,2*60*1000), // schemaName + "/heatmaps.kml"); // } // kmz. // kmz. // Kmz kmz = saveToKml(createRequestSuccessHeatMaps(conn, schemaName, 2 // * 60 * 1000), schemaName + "/heatmaps.kml"); // kmz.writeToStream(new FileOutputStream(schemaName + // "/heatmap_success.kmz")); // saveToKml(createRequestSuccessNotification(conn, schemaName, 2 * 60 * 1000), "request_success_notification.kml"); long interval = 2 * 60 * 1000; long notificationDuration = 10 * interval; // RequestNotificationKmlItemBuilder.createSuccessNotificationKmlItemBuilder(conn, schemaName, interval, // notificationDuration); conn.close(); } // private static KmlItem createRequestSuccessHeatMaps(PostgisConnection conn, String schemaName, long interval) // throws SQLException { // HeatMapKmlItem kmlItem = new HeatMapKmlItem(SAN_FRANCISCO_BOUNDING_BOX, schemaName); // // String sql = "SELECT st_transform(p1.geom,4326) AS geom FROM " + schemaName + ".passengers as p1," + schemaName // + ".passengers as p2 " + "WHERE p1.agentid = p2.agentid AND p1.from_time = (p2.from_time + " // + "interval '" + getInterval(interval) + "' ) " // + "AND p1.request_status = 'OUT_OF_VEHICLE' AND p2.request_status != p1.request_status;"; // // ResultSet resultSet = conn.executeQuery(sql); // int count = 0; // while (resultSet.next()) { // PostgisGeometry geometryClassRepresentation = (PostgisGeometry) resultSet.getObject("geom"); // Point point = (Point) geometryClassRepresentation.getGeometry(); // kmlItem.addPoint(point); // count++; // } // // System.out.println(schemaName + "- succesfull:" + count); // // return kmlItem; // } // private static KmlItem createRequestFailHeatMaps(PostgisConnection conn, String schemaName, long interval) // throws SQLException { // HeatMapKmlItem kmlItem = new HeatMapKmlItem(SAN_FRANCISCO_BOUNDING_BOX, schemaName); // // String sql = "SELECT st_transform(p1.geom,4326) AS geom FROM " // + schemaName // + ".passengers as p1," // + schemaName // + ".passengers as p2 " // + "WHERE p1.agentid = p2.agentid AND p1.from_time = (p2.from_time + " // + "interval '" // + getInterval(interval) // + "' ) " // + "AND p1.request_status = 'OUT_OF_VEHICLE_WITH_DELAYED_ARRIVAL' AND p2.request_status != p1.request_status;"; // // ResultSet resultSet = conn.executeQuery(sql); // int count = 0; // while (resultSet.next()) { // PostgisGeometry geometryClassRepresentation = (PostgisGeometry) resultSet.getObject("geom"); // Point point = (Point) geometryClassRepresentation.getGeometry(); // kmlItem.addPoint(point); // count++; // } // // System.out.println(schemaName + "- failed:" + count); // // return kmlItem; // } public static String getInterval(long millis) { return TimeUtils.formatMillisToString(millis, "HH:mm:ss.SSS"); } public static Kmz saveToKml(KmlItem output, String path) throws FileNotFoundException { Kml kml = new Kml(); Kmz kmz = new Kmz(kml); Document doc = kml.createAndSetDocument().addToFeature(output.initFeatureForKml(kmz)); doc.setName(path); kml.marshal(new File(path)); return kmz; } }