use of de.westnordost.osmapi.map.data.OsmLatLon in project StreetComplete by westnordost.
the class ElementGeometryTest method testFindCenterOfPolylineWithZeroLength.
public void testFindCenterOfPolylineWithZeroLength() {
List<List<LatLon>> polylines = new ArrayList<>();
List<LatLon> polyline = new ArrayList<>();
polyline.add(new OsmLatLon(20, 20));
polyline.add(new OsmLatLon(20, 20));
polylines.add(polyline);
ElementGeometry geom = new ElementGeometry(polylines, null);
assertEquals(null, geom.center);
}
use of de.westnordost.osmapi.map.data.OsmLatLon in project StreetComplete by westnordost.
the class ElementGeometryTest method createSquareAroundOrigin.
private static List<LatLon> createSquareAroundOrigin(double offsetLat, double offsetLon) {
List<LatLon> square = new ArrayList<>();
square.add(new OsmLatLon(-offsetLat, -offsetLon));
square.add(new OsmLatLon(+offsetLat, -offsetLon));
square.add(new OsmLatLon(+offsetLat, +offsetLon));
square.add(new OsmLatLon(-offsetLat, +offsetLon));
square.add(new OsmLatLon(-offsetLat, -offsetLon));
return square;
}
use of de.westnordost.osmapi.map.data.OsmLatLon in project StreetComplete by westnordost.
the class OsmQuestDownloadTest method testDeleteObsoleteQuests.
public void testDeleteObsoleteQuests() {
LatLon pos = new OsmLatLon(3.0, 4.0);
ElementWithGeometry node4 = new ElementWithGeometry();
node4.element = new OsmNode(4, 0, pos, null);
node4.geometry = new ElementGeometry(pos);
// questType mock will only "find" the Node #4
OsmElementQuestType questType = new ListBackedQuestType(Collections.singletonList(node4));
// in the quest database mock, there are quests for node 4 and node 5
List<OsmQuest> quests = new ArrayList<>();
quests.add(new OsmQuest(12L, questType, Element.Type.NODE, 4, QuestStatus.NEW, null, null, new Date(), new ElementGeometry(pos)));
quests.add(new OsmQuest(13L, questType, Element.Type.NODE, 5, QuestStatus.NEW, null, null, new Date(), new ElementGeometry(pos)));
when(osmQuestDao.getAll(any(BoundingBox.class), any(QuestStatus.class), anyString(), any(Element.Type.class), anyLong())).thenReturn(quests);
doAnswer(invocation -> {
Collection<Long> deletedQuests = (Collection<Long>) (invocation.getArguments()[0]);
assertEquals(1, deletedQuests.size());
assertEquals(13L, (long) deletedQuests.iterator().next());
return 1;
}).when(osmQuestDao).deleteAll(any(Collection.class));
OsmQuestDownload dl = new OsmQuestDownload(geometryDb, elementDb, osmQuestDao, countryBoundariesFuture);
VisibleQuestListener listener = mock(VisibleQuestListener.class);
dl.setQuestListener(listener);
// -> we expect that quest with node #5 is removed
dl.download(questType, new BoundingBox(0, 0, 1, 1), null);
verify(osmQuestDao).deleteAll(any(Collection.class));
verify(listener).onQuestsRemoved(any(Collection.class), any(QuestGroup.class));
}
use of de.westnordost.osmapi.map.data.OsmLatLon in project StreetComplete by westnordost.
the class ElementGeometryDao method createObjectFrom.
static ElementGeometry createObjectFrom(Serializer serializer, Cursor cursor) {
int colGeometryPolygons = cursor.getColumnIndexOrThrow(ElementGeometryTable.Columns.GEOMETRY_POLYGONS), colGeometryPolylines = cursor.getColumnIndexOrThrow(ElementGeometryTable.Columns.GEOMETRY_POLYLINES), colCenterLat = cursor.getColumnIndexOrThrow(ElementGeometryTable.Columns.LATITUDE), colCenterLon = cursor.getColumnIndexOrThrow(ElementGeometryTable.Columns.LONGITUDE);
List<List<LatLon>> polygons = null, polylines = null;
if (!cursor.isNull(colGeometryPolygons)) {
polygons = serializer.toObject(cursor.getBlob(colGeometryPolygons), ArrayList.class);
}
if (!cursor.isNull(colGeometryPolylines)) {
polylines = serializer.toObject(cursor.getBlob(colGeometryPolylines), ArrayList.class);
}
LatLon center = new OsmLatLon(cursor.getDouble(colCenterLat), cursor.getDouble(colCenterLon));
return new ElementGeometry(polylines, polygons, center);
}
use of de.westnordost.osmapi.map.data.OsmLatLon in project StreetComplete by westnordost.
the class NodeDao method createObjectFrom.
@Override
protected Node createObjectFrom(Cursor cursor) {
int colId = cursor.getColumnIndexOrThrow(NodeTable.Columns.ID), colLat = cursor.getColumnIndexOrThrow(NodeTable.Columns.LATITUDE), colLon = cursor.getColumnIndexOrThrow(NodeTable.Columns.LONGITUDE), colVersion = cursor.getColumnIndexOrThrow(NodeTable.Columns.VERSION), colTags = cursor.getColumnIndexOrThrow(NodeTable.Columns.TAGS);
long id = cursor.getLong(colId);
int version = cursor.getInt(colVersion);
LatLon latLon = new OsmLatLon(cursor.getDouble(colLat), cursor.getDouble(colLon));
Map<String, String> tags = null;
if (!cursor.isNull(colTags)) {
tags = serializer.toObject(cursor.getBlob(colTags), HashMap.class);
}
return new OsmNode(id, version, latLon, tags);
}
Aggregations