Search in sources :

Example 1 with Point

use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.

the class TileMath method zoomLevelForExtents.

/**
 * Returns the maximum zoom level at which the given extents will fit inside
 * the map of the given size
 *
 * @param extent
 * @param mapWidth
 * @param mapHeight
 * @return
 */
public static int zoomLevelForExtents(Extents extent, int mapWidth, int mapHeight) {
    int zoomLevel = 1;
    do {
        Point upperLeft = fromLatLngToPixel(new AiLatLng(extent.getMaxLat(), extent.getMinLon()), zoomLevel);
        Point lowerRight = fromLatLngToPixel(new AiLatLng(extent.getMinLat(), extent.getMaxLon()), zoomLevel);
        int extentWidth = lowerRight.getX() - upperLeft.getX();
        if (extentWidth > mapWidth) {
            return zoomLevel - 1;
        }
        int extentHeight = lowerRight.getY() - upperLeft.getY();
        if (extentHeight > mapHeight) {
            return zoomLevel - 1;
        }
        zoomLevel++;
    } while (zoomLevel < MAX_ZOOM);
    return zoomLevel;
}
Also used : AiLatLng(org.activityinfo.model.type.geo.AiLatLng) Point(org.activityinfo.legacy.shared.reports.content.Point) Point(org.activityinfo.legacy.shared.reports.content.Point)

Example 2 with Point

use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.

the class PathUtils method addRingToPath.

private static void addRingToPath(TiledMap map, GeneralPath path, Coordinate[] coordinates) {
    System.out.println("--ring--");
    float lastX = Float.NaN;
    float lastY = Float.NaN;
    for (int j = 0; j != coordinates.length; ++j) {
        Point point = map.fromLatLngToPixel(new AiLatLng(coordinates[j].y, coordinates[j].x));
        float x = point.getX();
        float y = point.getY();
        if (x != lastX || y != lastY) {
            System.out.println(point.getX() + "," + point.getY());
            if (j == 0) {
                path.moveTo(x, y);
            } else {
                path.lineTo(x, y);
            }
        }
        lastX = x;
        lastY = y;
    }
    path.closePath();
}
Also used : AiLatLng(org.activityinfo.model.type.geo.AiLatLng) Point(org.activityinfo.legacy.shared.reports.content.Point) Point(org.activityinfo.legacy.shared.reports.content.Point)

Example 3 with Point

use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.

the class Cluster method bboxCenter.

/**
 * @return The weighted centroid of the cluster
 */
public Point bboxCenter() {
    int minX = Integer.MAX_VALUE;
    int minY = Integer.MAX_VALUE;
    int maxX = Integer.MIN_VALUE;
    int maxY = Integer.MIN_VALUE;
    for (PointValue pointValue : pointValues) {
        Point p = pointValue.getPx();
        if (p.getX() < minX) {
            minX = p.getX();
        }
        if (p.getY() < minY) {
            minY = p.getY();
        }
        if (p.getX() > maxX) {
            maxX = p.getX();
        }
        if (p.getY() > maxY) {
            maxY = p.getY();
        }
    }
    return new Point((minX + maxX) / 2, (minY + maxY) / 2);
}
Also used : PointValue(org.activityinfo.legacy.shared.reports.model.PointValue) Point(org.activityinfo.legacy.shared.reports.content.Point) Point(org.activityinfo.legacy.shared.reports.content.Point)

Example 4 with Point

use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.

the class KMeans method cluster.

public static List<Cluster> cluster(List<MarkerGraph.Node> nodes, int numClusters) {
    List<Cluster> clusters = new ArrayList<Cluster>(numClusters);
    // sanity check
    if (numClusters > nodes.size() || nodes.size() == 0) {
        throw new IllegalArgumentException();
    }
    // randomize
    Collections.shuffle(nodes);
    // choose random centers
    Point[] centers = new Point[numClusters];
    for (int i = 0; i != numClusters; ++i) {
        centers[i] = nodes.get(i).getPoint();
    }
    // assign initial cluster membership
    int[] membership = new int[nodes.size()];
    assignClosest(nodes, centers, membership);
    // execute k-means algorithm until we achieve convergence
    boolean changed;
    do {
        computeCenters(nodes, membership, centers);
        changed = assignClosest(nodes, centers, membership);
    } while (changed);
    // create clusters
    for (int i = 0; i != numClusters; ++i) {
        clusters.add(new Cluster(centers[i]));
    }
    for (int j = 0; j != nodes.size(); ++j) {
        (clusters.get(membership[j])).addNode(nodes.get(j));
    }
    return clusters;
}
Also used : ArrayList(java.util.ArrayList) Cluster(org.activityinfo.server.report.generator.map.cluster.Cluster) Point(org.activityinfo.legacy.shared.reports.content.Point) Point(org.activityinfo.legacy.shared.reports.content.Point)

Example 5 with Point

use of org.activityinfo.legacy.shared.reports.content.Point in project activityinfo by bedatadriven.

the class CircleMathTest method testNoIntersection.

@Test
public void testNoIntersection() {
    Point a = new Point(0, 0);
    Point b = new Point(5, 0);
    Assert.assertEquals(0.0, CircleMath.intersectionArea(a, b, 1, 2), DELTA);
}
Also used : Point(org.activityinfo.legacy.shared.reports.content.Point) Test(org.junit.Test)

Aggregations

Point (org.activityinfo.legacy.shared.reports.content.Point)16 PointValue (org.activityinfo.legacy.shared.reports.model.PointValue)6 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)5 AiLatLng (org.activityinfo.model.type.geo.AiLatLng)5 Cluster (org.activityinfo.server.report.generator.map.cluster.Cluster)4 SiteDTO (org.activityinfo.legacy.shared.model.SiteDTO)2 MarkerGraph (org.activityinfo.server.report.generator.map.cluster.genetic.MarkerGraph)2 File (java.io.File)1 FileWriter (java.io.FileWriter)1 List (java.util.List)1 IconLayerLegend (org.activityinfo.legacy.shared.reports.content.IconLayerLegend)1 MapSymbol (org.activityinfo.legacy.shared.reports.model.MapSymbol)1 Extents (org.activityinfo.model.type.geo.Extents)1 Clusterer (org.activityinfo.server.report.generator.map.cluster.Clusterer)1 BubbleFitnessFunctor (org.activityinfo.server.report.generator.map.cluster.genetic.BubbleFitnessFunctor)1 GeneticSolver (org.activityinfo.server.report.generator.map.cluster.genetic.GeneticSolver)1 IntersectionCalculator (org.activityinfo.server.report.generator.map.cluster.genetic.MarkerGraph.IntersectionCalculator)1 Node (org.activityinfo.server.report.generator.map.cluster.genetic.MarkerGraph.Node)1