use of org.openforis.idm.model.Coordinate in project collect by openforis.
the class RecordDaoTest method createRecord.
private CollectRecord createRecord(CollectSurvey survey, int sequenceNumber) {
int skippedCount = new Double(Math.ceil((double) (Math.random() * 40))).intValue();
int missingCount = new Double(Math.ceil((double) (Math.random() * 50))).intValue();
int errorsCount = new Double(Math.ceil((double) (Math.random() * 10))).intValue();
int warningsCount = new Double(Math.ceil((double) (Math.random() * 30))).intValue();
int numberOfPlots = new Double(Math.ceil((double) (Math.random() * 20))).intValue();
int numberOfTrees = new Double(Math.ceil((double) (Math.random() * 30))).intValue();
;
CollectRecord record = new CollectRecord(recordManager, survey, "2.0");
record.setCreationDate(new GregorianCalendar(2011, 0, sequenceNumber, 8, 30).getTime());
// record.setCreatedBy("ModelDaoIntegrationTest");
record.setStep(Step.ENTRY);
record.setModifiedDate(new GregorianCalendar(2011, 1, sequenceNumber, 8, 30).getTime());
record.setSkipped(skippedCount);
record.setMissing(missingCount);
record.setErrors(errorsCount);
record.setWarnings(warningsCount);
Entity cluster = record.createRootEntity("cluster");
String keyId = Integer.toString(sequenceNumber);
EntityBuilder.addValue(cluster, "id", new Code(keyId));
EntityBuilder.addValue(cluster, "gps_realtime", Boolean.TRUE);
EntityBuilder.addValue(cluster, "region", new Code("001"));
EntityBuilder.addValue(cluster, "district", new Code("002"));
EntityBuilder.addValue(cluster, "vehicle_location", new Coordinate(432423423l, 4324324l, "srs"));
EntityBuilder.addValue(cluster, "gps_model", "TomTom 1.232");
{
Entity ts = EntityBuilder.addEntity(cluster, "time_study");
ts.addValue("date", new Date(2011, 2, 14));
ts.addValue("start_time", new Time(8, 15));
ts.addValue("end_time", new Time(15, 29));
}
{
Entity ts = EntityBuilder.addEntity(cluster, "time_study");
ts.addValue("date", new Date(2011, 2, 15));
ts.addValue("start_time", new Time(8, 32));
ts.addValue("end_time", new Time(11, 20));
}
for (int i = 0; i < numberOfPlots; i++) {
Entity plot = EntityBuilder.addEntity(cluster, "plot");
EntityBuilder.addValue(plot, "no", new Code(Integer.toString(i + 1)));
for (int j = 0; j < numberOfTrees; j++) {
Entity tree = EntityBuilder.addEntity(plot, "tree");
tree.addValue("dbh", 54.2);
tree.addValue("total_height", 2.0);
RealAttribute boleHeight = tree.addValue("bole_height", (Double) null);
boleHeight.getField().setSymbol('*');
boleHeight.getField().setRemarks("No value specified");
// .setMetadata(new CollectAttributeMetadata('*',null,"No value specified"));
}
}
// set counts
record.getEntityCounts().add(numberOfPlots);
// set keys
record.getRootEntityKeys().add(keyId);
return record;
}
use of org.openforis.idm.model.Coordinate in project collect by openforis.
the class CoordinateAttributeMapper method addNode.
@Override
Node<?> addNode(NodeDefinition defn, Record r, Entity parent) {
Long x = r.getValueAsLong(DATA.NUMBER1);
Long y = r.getValueAsLong(DATA.NUMBER2);
// Long z = r.getValueAsLong(DATA.NUMBER3);
String srsId = r.getValueAsString(DATA.TEXT1);
Coordinate c = new Coordinate(x, y, srsId);
return parent.addValue(defn.getName(), c);
}
use of org.openforis.idm.model.Coordinate in project collect by openforis.
the class SamplingPointsController method loadSamplingPointDataFeatures.
private FeatureCollection loadSamplingPointDataFeatures(CollectSurvey survey) {
FeatureCollection featureCollection = new FeatureCollection();
Feature feature = new Feature();
feature.setProperty("letter", "o");
feature.setProperty("color", "blue");
feature.setProperty("rank", "15");
MultiPoint multiPoint = new MultiPoint();
CoordinateOperations coordinateOperations = getCoordinateOperations(survey);
List<SamplingDesignItem> samplingDesignItems = loadSamplingDesignItems(survey);
for (SamplingDesignItem item : samplingDesignItems) {
Coordinate coordinate = new Coordinate(item.getX(), item.getY(), item.getSrsId());
multiPoint.add(createLngLatAlt(coordinateOperations, coordinate));
}
feature.setGeometry(multiPoint);
featureCollection.add(feature);
return featureCollection;
}
use of org.openforis.idm.model.Coordinate in project collect by openforis.
the class SamplingPointsController method loadSamplingPointBounds.
@RequestMapping(value = "survey/{surveyId}/sampling_point_bounds.json", method = GET)
@ResponseBody
public Bounds loadSamplingPointBounds(@PathVariable int surveyId) {
CollectSurvey survey = surveyManager.loadSurvey(surveyId);
CollectSurveyContext surveyContext = survey.getContext();
CoordinateOperations coordinateOperations = surveyContext.getCoordinateOperations();
SamplingDesignSummaries samplingDesignSummaries = samplingDesignManager.loadBySurvey(survey.getId());
List<SamplingDesignItem> samplingDesignItems = samplingDesignSummaries.getRecords();
Bounds bounds = new Bounds();
for (SamplingDesignItem item : samplingDesignItems) {
Coordinate coordinate = new Coordinate(item.getX(), item.getY(), item.getSrsId());
LngLatAlt lngLatAlt = createLngLatAlt(coordinateOperations, coordinate);
if (lngLatAlt != null) {
if (bounds.topLeft == null) {
bounds.topLeft = bounds.topRight = bounds.bottomLeft = bounds.bottomRight = lngLatAlt;
} else {
if (lngLatAlt.getLatitude() < bounds.topLeft.getLatitude() && lngLatAlt.getLongitude() < bounds.topLeft.getLongitude()) {
bounds.topLeft = lngLatAlt;
} else if (lngLatAlt.getLatitude() < bounds.topRight.getLatitude() && lngLatAlt.getLongitude() > bounds.topRight.getLongitude()) {
bounds.topRight = lngLatAlt;
} else if (lngLatAlt.getLatitude() > bounds.bottomRight.getLatitude() && lngLatAlt.getLongitude() > bounds.bottomRight.getLongitude()) {
bounds.bottomRight = lngLatAlt;
} else if (lngLatAlt.getLatitude() > bounds.bottomLeft.getLatitude() && lngLatAlt.getLongitude() > bounds.bottomLeft.getLongitude()) {
bounds.bottomLeft = lngLatAlt;
}
}
}
}
return bounds;
}
use of org.openforis.idm.model.Coordinate in project collect by openforis.
the class SamplingPointDataGeneratorTest method griddedPlotsGenerationTest.
@Test
public void griddedPlotsGenerationTest() {
Coordinate topLeftCoordinate = new Coordinate(12.369192d, 41.987927d, LAT_LON_SRS_ID);
Coordinate topRightCoordinate = new Coordinate(12.621191d, 41.987927d, LAT_LON_SRS_ID);
Coordinate bottomLeftCoordinate = new Coordinate(12.369192d, 41.802904d, LAT_LON_SRS_ID);
Coordinate bottomRightCoordinate = new Coordinate(12.621191d, 41.802904d, LAT_LON_SRS_ID);
int numPlots = 25;
int samplesPerPlot = 10;
int plotWidth = 1000;
SamplingPointLevelGenerationSettings plotPointsConfig = new SamplingPointLevelGenerationSettings(numPlots, Shape.CIRCLE, Distribution.GRIDDED, 5000, plotWidth);
SamplingPointLevelGenerationSettings samplePointsConfig = new SamplingPointLevelGenerationSettings(samplesPerPlot, Shape.CIRCLE, Distribution.RANDOM, 20, 10);
CollectSurvey survey = createTestSurvey();
SamplingPointGenerationSettings conf = new SamplingPointGenerationSettings();
conf.setAoiBoundary(Arrays.asList(topLeftCoordinate, topRightCoordinate, bottomLeftCoordinate, bottomRightCoordinate));
conf.setLevelsSettings(Arrays.asList(plotPointsConfig, samplePointsConfig));
SamplingPointDataGenerator generator = new SamplingPointDataGenerator(coordinateOperations, survey, null, conf);
List<SamplingDesignItem> items = generator.generate();
// printLatLonPoints(items);
assertTrue(items.size() <= numPlots + numPlots * samplesPerPlot);
List<SamplingDesignItem> plotItems = getSamplingItemsInLevel(items, 1);
assertTrue(plotItems.size() <= numPlots);
for (SamplingDesignItem plotItem : plotItems) {
assertPointInSquare(plotItem, topLeftCoordinate, bottomRightCoordinate);
}
}
Aggregations