diff --git a/build.gradle b/build.gradle
index dcf7061b..1777d526 100644
--- a/build.gradle
+++ b/build.gradle
@@ -42,7 +42,6 @@ def versionName() { return version }
subprojects {
repositories {
google()
- //maven { url 'https://repo.boundlessgeo.com/main/' }
jcenter()
maven { url 'https://jitpack.io' }
}
diff --git a/settings.gradle b/settings.gradle
index 814da947..ddc74185 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -14,7 +14,7 @@ include ':vtm-gdx-poi3d'
include ':vtm-http'
include ':vtm-ios'
include ':vtm-ios-example'
-//include ':vtm-jeo'
+include ':vtm-jeo'
include ':vtm-json'
include ':vtm-jts'
include ':vtm-models'
diff --git a/vtm-android-example/AndroidManifest.xml b/vtm-android-example/AndroidManifest.xml
index 00f2c5e1..62e58c0c 100644
--- a/vtm-android-example/AndroidManifest.xml
+++ b/vtm-android-example/AndroidManifest.xml
@@ -42,9 +42,9 @@
-
+ android:configChanges="keyboardHidden|orientation|screenSize" />
diff --git a/vtm-android-example/build.gradle b/vtm-android-example/build.gradle
index 6373c096..c6a7e332 100644
--- a/vtm-android-example/build.gradle
+++ b/vtm-android-example/build.gradle
@@ -5,7 +5,7 @@ dependencies {
implementation project(':vtm-android-mvt')
implementation project(':vtm-extras')
implementation project(':vtm-http')
- //implementation project(':vtm-jeo')
+ implementation project(':vtm-jeo')
implementation project(':vtm-json')
implementation project(':vtm-jts')
implementation project(':vtm-mvt')
diff --git a/vtm-android-example/src/org/oscim/android/test/JeoIndoorActivity.java b/vtm-android-example/src/org/oscim/android/test/JeoIndoorActivity.java
index c5eda5e0..809cd770 100644
--- a/vtm-android-example/src/org/oscim/android/test/JeoIndoorActivity.java
+++ b/vtm-android-example/src/org/oscim/android/test/JeoIndoorActivity.java
@@ -1,186 +1,185 @@
-///*
-// * Copyright 2014 Hannes Janetzek
-// * Copyright 2016-2018 devemux86
-// *
-// * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
-// *
-// * This program is free software: you can redistribute it and/or modify it under the
-// * terms of the GNU Lesser General Public License as published by the Free Software
-// * Foundation, either version 3 of the License, or (at your option) any later version.
-// *
-// * This program is distributed in the hope that it will be useful, but WITHOUT ANY
-// * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-// * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-// *
-// * You should have received a copy of the GNU Lesser General Public License along with
-// * this program. If not, see .
-// */
-//package org.oscim.android.test;
-//
-//import android.content.Context;
-//import android.os.Bundle;
-//import android.view.View;
-//import android.widget.Toast;
-//import android.widget.ToggleButton;
-//
-//import org.jeo.map.Style;
-//import org.jeo.vector.VectorDataset;
-//import org.oscim.backend.CanvasAdapter;
-//import org.oscim.backend.canvas.Color;
-//import org.oscim.layers.OSMIndoorLayer;
-//import org.oscim.layers.tile.buildings.BuildingLayer;
-//import org.oscim.layers.tile.vector.labeling.LabelLayer;
-//import org.oscim.test.JeoTest;
-//import org.oscim.theme.VtmThemes;
-//import org.oscim.theme.styles.TextStyle;
-//import org.oscim.utils.IOUtils;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//
-//import java.io.IOException;
-//import java.io.InputStream;
-//import java.net.URL;
-//import java.net.URLConnection;
-//import java.util.Arrays;
-//
-//public class JeoIndoorActivity extends BaseMapActivity {
-// public static final Logger log = LoggerFactory.getLogger(JeoIndoorActivity.class);
-//
-// // from http://overpass-turbo.eu/s/2vp
-// String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson";
-//
-// private OSMIndoorLayer mIndoorLayer;
-//
-// public JeoIndoorActivity() {
-// super(R.layout.jeo_indoor_map);
-// }
-//
-// @Override
-// public void onCreate(Bundle savedInstanceState) {
-// super.onCreate(savedInstanceState);
-//
-// mMap.addTask(new Runnable() {
-// @Override
-// public void run() {
-// showToast("load data");
-// InputStream is = null;
-// try {
-// // File file = new File(Environment.getExternalStorageDirectory()
-// // .getAbsolutePath(), "osmindoor.json");
-// // is = new FileInputStream(file);
-//
-// URL url = new URL(PATH);
-// URLConnection conn = url.openConnection();
-// is = conn.getInputStream();
-// loadJson(is);
-// } catch (IOException e) {
-// e.printStackTrace();
-// } finally {
-// IOUtils.closeQuietly(is);
-// }
-// }
-// });
-//
-// mMap.setTheme(VtmThemes.DEFAULT);
-//
-// mMap.layers().add(new BuildingLayer(mMap, mBaseLayer));
-// mMap.layers().add(new LabelLayer(mMap, mBaseLayer));
-//
-// // String file = Environment.getExternalStorageDirectory().getAbsolutePath();
-// // VectorDataset data = (VectorDataset) JeoTest.getJsonData(file + "/states.json", true);
-// // Style style = JeoTest.getStyle();
-// // mMap.layers().add(new JeoVectorLayer(mMap, data, style));
-// }
-//
-// void loadJson(InputStream is) {
-// showToast("got data");
-//
-// VectorDataset data = JeoTest.readGeoJson(is);
-// Style style = JeoTest.getStyle();
-// TextStyle textStyle = TextStyle.builder()
-// .isCaption(true)
-// .fontSize(16 * CanvasAdapter.getScale()).color(Color.BLACK)
-// .strokeWidth(2.2f * CanvasAdapter.getScale()).strokeColor(Color.WHITE)
-// .build();
-// mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle);
-// mMap.layers().add(mIndoorLayer);
-//
-// showToast("data ready");
-// mMap.updateMap(true);
-//
-// mIndoorLayer.activeLevels[0] = true;
-// shift();
-// }
-//
-// public void showToast(final String text) {
-// final Context ctx = this;
-// runOnUiThread(new Runnable() {
-// @Override
-// public void run() {
-// Toast toast = Toast.makeText(ctx, text, Toast.LENGTH_SHORT);
-// toast.show();
-// }
-// });
-// }
-//
-// boolean mShift = true;
-//
-// public void shift() {
-// if (!mShift)
-// return;
-//
-// mMap.postDelayed(new Runnable() {
-//
-// @Override
-// public void run() {
-// for (int i = 0; i < 10; i++) {
-// if (mIndoorLayer.activeLevels[i]) {
-// mIndoorLayer.activeLevels[i] = false;
-// mIndoorLayer.activeLevels[(i + 1) % 9] = true;
-// mIndoorLayer.update();
-// break;
-// }
-// }
-// shift();
-// }
-// }, 200);
-//
-// }
-//
-// public void onClick(View v) {
-// mShift = false;
-//
-// if (mIndoorLayer == null)
-// return;
-//
-// int i = 0;
-//
-// if (v instanceof ToggleButton) {
-// ToggleButton b = (ToggleButton) v;
-// i = (b.getTextOn().charAt(0) - '0') + 1;
-// }
-//
-// if (i < 0 || i > 9)
-// i = 0;
-//
-// mIndoorLayer.activeLevels[i] ^= true;
-// if (v instanceof ToggleButton)
-// ((ToggleButton) v).setChecked(mIndoorLayer.activeLevels[i]);
-// log.debug(Arrays.toString(mIndoorLayer.activeLevels));
-// mIndoorLayer.update();
-// }
-//
-// @Override
-// protected void onStop() {
-// super.onStop();
-// }
-//
-// @Override
-// protected void onResume() {
-// super.onResume();
-//
-// /* ignore saved position */
-// //mMap.setMapPosition(49.417, 8.673, 1 << 17);
-// mMap.setMapPosition(53.5620092, 9.9866457, 1 << 16);
-// }
-//}
+/*
+ * Copyright 2014 Hannes Janetzek
+ * Copyright 2016-2018 devemux86
+ *
+ * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
+ *
+ * This program is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License along with
+ * this program. If not, see .
+ */
+package org.oscim.android.test;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Toast;
+import android.widget.ToggleButton;
+import io.jeo.map.Style;
+import io.jeo.vector.VectorDataset;
+import org.oscim.backend.CanvasAdapter;
+import org.oscim.backend.canvas.Color;
+import org.oscim.layers.OSMIndoorLayer;
+import org.oscim.layers.tile.buildings.BuildingLayer;
+import org.oscim.layers.tile.vector.labeling.LabelLayer;
+import org.oscim.test.JeoTest;
+import org.oscim.theme.VtmThemes;
+import org.oscim.theme.styles.TextStyle;
+import org.oscim.utils.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.Arrays;
+
+public class JeoIndoorActivity extends BaseMapActivity {
+ public static final Logger log = LoggerFactory.getLogger(JeoIndoorActivity.class);
+
+ // from http://overpass-turbo.eu/s/2vp
+ String PATH = "https://gist.githubusercontent.com/anonymous/09062103a66844a96048f25626078c8d/raw/1d3af6a5a55e9ea4adc9551fa633a051a44a5a9c/overpass.geojson";
+
+ private OSMIndoorLayer mIndoorLayer;
+
+ public JeoIndoorActivity() {
+ super(R.layout.jeo_indoor_map);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mMap.addTask(new Runnable() {
+ @Override
+ public void run() {
+ showToast("load data");
+ InputStream is = null;
+ try {
+ // File file = new File(Environment.getExternalStorageDirectory()
+ // .getAbsolutePath(), "osmindoor.json");
+ // is = new FileInputStream(file);
+
+ URL url = new URL(PATH);
+ URLConnection conn = url.openConnection();
+ is = conn.getInputStream();
+ loadJson(is);
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ IOUtils.closeQuietly(is);
+ }
+ }
+ });
+
+ mMap.setTheme(VtmThemes.DEFAULT);
+
+ mMap.layers().add(new BuildingLayer(mMap, mBaseLayer));
+ mMap.layers().add(new LabelLayer(mMap, mBaseLayer));
+
+ // String file = Environment.getExternalStorageDirectory().getAbsolutePath();
+ // VectorDataset data = (VectorDataset) JeoTest.getJsonData(file + "/states.json", true);
+ // Style style = JeoTest.getStyle();
+ // mMap.layers().add(new JeoVectorLayer(mMap, data, style));
+ }
+
+ void loadJson(InputStream is) {
+ showToast("got data");
+
+ VectorDataset data = JeoTest.readGeoJson(is);
+ Style style = JeoTest.getStyle();
+ TextStyle textStyle = TextStyle.builder()
+ .isCaption(true)
+ .fontSize(16 * CanvasAdapter.getScale()).color(Color.BLACK)
+ .strokeWidth(2.2f * CanvasAdapter.getScale()).strokeColor(Color.WHITE)
+ .build();
+ mIndoorLayer = new OSMIndoorLayer(mMap, data, style, textStyle);
+ mMap.layers().add(mIndoorLayer);
+
+ showToast("data ready");
+ mMap.updateMap(true);
+
+ mIndoorLayer.activeLevels[0] = true;
+ shift();
+ }
+
+ public void showToast(final String text) {
+ final Context ctx = this;
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Toast toast = Toast.makeText(ctx, text, Toast.LENGTH_SHORT);
+ toast.show();
+ }
+ });
+ }
+
+ boolean mShift = true;
+
+ public void shift() {
+ if (!mShift)
+ return;
+
+ mMap.postDelayed(new Runnable() {
+
+ @Override
+ public void run() {
+ for (int i = 0; i < 10; i++) {
+ if (mIndoorLayer.activeLevels[i]) {
+ mIndoorLayer.activeLevels[i] = false;
+ mIndoorLayer.activeLevels[(i + 1) % 9] = true;
+ mIndoorLayer.update();
+ break;
+ }
+ }
+ shift();
+ }
+ }, 200);
+
+ }
+
+ public void onClick(View v) {
+ mShift = false;
+
+ if (mIndoorLayer == null)
+ return;
+
+ int i = 0;
+
+ if (v instanceof ToggleButton) {
+ ToggleButton b = (ToggleButton) v;
+ i = (b.getTextOn().charAt(0) - '0') + 1;
+ }
+
+ if (i < 0 || i > 9)
+ i = 0;
+
+ mIndoorLayer.activeLevels[i] ^= true;
+ if (v instanceof ToggleButton)
+ ((ToggleButton) v).setChecked(mIndoorLayer.activeLevels[i]);
+ log.debug(Arrays.toString(mIndoorLayer.activeLevels));
+ mIndoorLayer.update();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+
+ /* ignore saved position */
+ //mMap.setMapPosition(49.417, 8.673, 1 << 17);
+ mMap.setMapPosition(53.5620092, 9.9866457, 1 << 16);
+ }
+}
diff --git a/vtm-android-example/src/org/oscim/android/test/Samples.java b/vtm-android-example/src/org/oscim/android/test/Samples.java
index 2f862a5a..79fdd26b 100644
--- a/vtm-android-example/src/org/oscim/android/test/Samples.java
+++ b/vtm-android-example/src/org/oscim/android/test/Samples.java
@@ -128,7 +128,7 @@ public class Samples extends Activity {
linearLayout.addView(createLabel("Experiments"));
linearLayout.addView(createButton(ReverseGeocodeActivity.class));
linearLayout.addView(createButton(ThemeStylerActivity.class));
- //linearLayout.addView(createButton(JeoIndoorActivity.class));
+ linearLayout.addView(createButton(JeoIndoorActivity.class));
linearLayout.addView(createButton(GdxPoi3DActivity.class));
linearLayout.addView(createButton(OverpassActivity.class));
linearLayout.addView(createButton(ClusterMarkerOverlayActivity.class));
diff --git a/vtm-jeo/build.gradle b/vtm-jeo/build.gradle
index 40044a22..827ded29 100644
--- a/vtm-jeo/build.gradle
+++ b/vtm-jeo/build.gradle
@@ -3,10 +3,7 @@ apply plugin: 'maven'
dependencies {
api project(':vtm')
- api('org.jeo:jeo:0-SNAPSHOT') {
- exclude group: 'org.slf4j', module: 'slf4j-jdk14'
- }
- api('org.jeo:jeo-carto:0-SNAPSHOT') {
+ api('com.github.jeo.jeo:jeo-carto:master-SNAPSHOT') {
exclude group: 'org.slf4j', module: 'slf4j-jdk14'
}
}
diff --git a/vtm-jeo/src/org/oscim/jeo/JeoUtils.java b/vtm-jeo/src/org/oscim/jeo/JeoUtils.java
index def14a68..ce6c804a 100644
--- a/vtm-jeo/src/org/oscim/jeo/JeoUtils.java
+++ b/vtm-jeo/src/org/oscim/jeo/JeoUtils.java
@@ -1,6 +1,6 @@
package org.oscim.jeo;
-import org.jeo.map.RGB;
+import io.jeo.map.RGB;
public class JeoUtils {
public static int color(RGB rgb) {
diff --git a/vtm-jeo/src/org/oscim/layers/JeoTileSource.java b/vtm-jeo/src/org/oscim/layers/JeoTileSource.java
index 9cade819..c84ba9af 100644
--- a/vtm-jeo/src/org/oscim/layers/JeoTileSource.java
+++ b/vtm-jeo/src/org/oscim/layers/JeoTileSource.java
@@ -16,8 +16,8 @@
*/
package org.oscim.layers;
-import org.jeo.tile.Tile;
-import org.jeo.tile.TileDataset;
+import io.jeo.tile.Tile;
+import io.jeo.tile.TileDataset;
import org.oscim.backend.CanvasAdapter;
import org.oscim.backend.canvas.Bitmap;
import org.oscim.layers.tile.MapTile;
@@ -30,9 +30,7 @@ import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
-import static org.oscim.tiling.QueryResult.FAILED;
-import static org.oscim.tiling.QueryResult.SUCCESS;
-import static org.oscim.tiling.QueryResult.TILE_NOT_FOUND;
+import static org.oscim.tiling.QueryResult.*;
public class JeoTileSource extends TileSource {
static final Logger log = LoggerFactory.getLogger(JeoTileSource.class);
diff --git a/vtm-jeo/src/org/oscim/layers/JeoVectorLayer.java b/vtm-jeo/src/org/oscim/layers/JeoVectorLayer.java
index 4a6339fa..9c43ca0b 100644
--- a/vtm-jeo/src/org/oscim/layers/JeoVectorLayer.java
+++ b/vtm-jeo/src/org/oscim/layers/JeoVectorLayer.java
@@ -19,16 +19,11 @@ package org.oscim.layers;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString;
-
-import org.jeo.geom.Geom;
-import org.jeo.map.CartoCSS;
-import org.jeo.map.RGB;
-import org.jeo.map.Rule;
-import org.jeo.map.RuleList;
-import org.jeo.map.Style;
-import org.jeo.vector.Feature;
-import org.jeo.vector.VectorDataset;
-import org.jeo.vector.VectorQuery;
+import io.jeo.geom.Geom;
+import io.jeo.map.*;
+import io.jeo.vector.Feature;
+import io.jeo.vector.VectorDataset;
+import io.jeo.vector.VectorQuery;
import org.oscim.jeo.JeoUtils;
import org.oscim.map.Map;
import org.oscim.renderer.bucket.LineBucket;
@@ -77,7 +72,7 @@ public class JeoVectorLayer extends JtsLayer {
VectorQuery q = new VectorQuery().bounds(b);
if (dbg)
log.debug("query {}", b);
- for (Feature f : mDataset.cursor(q)) {
+ for (Feature f : mDataset.read(q)) {
if (dbg)
log.debug("feature {}", f);
diff --git a/vtm-jeo/src/org/oscim/layers/JtsLayer.java b/vtm-jeo/src/org/oscim/layers/JtsLayer.java
index 68d5b950..8e751194 100644
--- a/vtm-jeo/src/org/oscim/layers/JtsLayer.java
+++ b/vtm-jeo/src/org/oscim/layers/JtsLayer.java
@@ -21,13 +21,8 @@ package org.oscim.layers;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
-
-import org.jeo.geom.CoordinatePath;
-import org.oscim.core.Box;
-import org.oscim.core.GeometryBuffer;
-import org.oscim.core.MapPosition;
-import org.oscim.core.MercatorProjection;
-import org.oscim.core.Tile;
+import io.jeo.geom.CoordinatePath;
+import org.oscim.core.*;
import org.oscim.layers.vector.AbstractVectorLayer;
import org.oscim.map.Map;
import org.oscim.renderer.bucket.LineBucket;
diff --git a/vtm-jeo/src/org/oscim/layers/OSMIndoorLayer.java b/vtm-jeo/src/org/oscim/layers/OSMIndoorLayer.java
index 2c88dd4e..5eafe063 100644
--- a/vtm-jeo/src/org/oscim/layers/OSMIndoorLayer.java
+++ b/vtm-jeo/src/org/oscim/layers/OSMIndoorLayer.java
@@ -21,13 +21,12 @@ package org.oscim.layers;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.LineString;
-
-import org.jeo.map.CartoCSS;
-import org.jeo.map.RGB;
-import org.jeo.map.Rule;
-import org.jeo.map.Style;
-import org.jeo.vector.Feature;
-import org.jeo.vector.VectorDataset;
+import io.jeo.map.CartoCSS;
+import io.jeo.map.RGB;
+import io.jeo.map.Rule;
+import io.jeo.map.Style;
+import io.jeo.vector.Feature;
+import io.jeo.vector.VectorDataset;
import org.oscim.backend.canvas.Color;
import org.oscim.jeo.JeoUtils;
import org.oscim.map.Map;
diff --git a/vtm-jeo/src/org/oscim/test/JeoTest.java b/vtm-jeo/src/org/oscim/test/JeoTest.java
index 3f46e529..be96b93b 100644
--- a/vtm-jeo/src/org/oscim/test/JeoTest.java
+++ b/vtm-jeo/src/org/oscim/test/JeoTest.java
@@ -18,21 +18,15 @@
package org.oscim.test;
import com.vividsolutions.jts.geom.Geometry;
-
-import org.jeo.carto.Carto;
-import org.jeo.data.Dataset;
-import org.jeo.data.mem.MemVector;
-import org.jeo.data.mem.MemWorkspace;
-import org.jeo.geojson.GeoJSONDataset;
-import org.jeo.geojson.GeoJSONReader;
-import org.jeo.geom.GeomBuilder;
-import org.jeo.map.Style;
-import org.jeo.vector.Feature;
-import org.jeo.vector.Features;
-import org.jeo.vector.Schema;
-import org.jeo.vector.SchemaBuilder;
-import org.jeo.vector.VectorDataset;
-import org.jeo.vector.VectorQuery;
+import io.jeo.carto.Carto;
+import io.jeo.data.Dataset;
+import io.jeo.data.mem.MemVectorDataset;
+import io.jeo.data.mem.MemWorkspace;
+import io.jeo.geojson.GeoJSONDataset;
+import io.jeo.geojson.GeoJSONReader;
+import io.jeo.geom.GeomBuilder;
+import io.jeo.map.Style;
+import io.jeo.vector.*;
import org.oscim.backend.canvas.Color;
import org.oscim.layers.OSMIndoorLayer;
import org.oscim.layers.tile.buildings.BuildingLayer;
@@ -42,11 +36,7 @@ import org.oscim.renderer.MapRenderer;
import org.oscim.theme.styles.TextStyle;
import org.oscim.tiling.source.oscimap4.OSciMap4TileSource;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
public class JeoTest {
@@ -101,13 +91,13 @@ public class JeoTest {
GeoJSONReader r = new GeoJSONReader();
@SuppressWarnings("resource")
- MemWorkspace mem = new MemWorkspace();
+ MemWorkspace mem = new MemWorkspace("");
//mem.put("layer", data);
try {
Schema s = new SchemaBuilder("way").schema();
- MemVector memData = mem.create(s);
+ MemVectorDataset memData = mem.create(s);
for (Feature f : r.features(is)) {
//System.out.println("loaded: " + f);
@@ -133,7 +123,7 @@ public class JeoTest {
if (memory) {
@SuppressWarnings("resource")
- MemWorkspace mem = new MemWorkspace();
+ MemWorkspace mem = new MemWorkspace("");
//mem.put("layer", data);
try {
@@ -141,9 +131,9 @@ public class JeoTest {
Schema s = data.schema();
VectorQuery q = new VectorQuery();
- MemVector memData = mem.create(s);
+ MemVectorDataset memData = mem.create(s);
- for (Feature f : data.cursor(q)) {
+ for (Feature f : data.read(q)) {
memData.add(f);
}
@@ -160,14 +150,14 @@ public class JeoTest {
GeomBuilder gb = new GeomBuilder(4326);
@SuppressWarnings("resource")
- MemWorkspace mem = new MemWorkspace();
+ MemWorkspace mem = new MemWorkspace("");
Schema schema = new SchemaBuilder(layer)
.field("geometry", Geometry.class)
.field("id", Integer.class)
.field("name", String.class)
.field("cost", Double.class).schema();
- MemVector data;
+ MemVectorDataset data;
try {
data = mem.create(schema);
} catch (UnsupportedOperationException e) {
@@ -181,15 +171,16 @@ public class JeoTest {
Geometry g = gb.point(0, 0).toPoint();
//g.setSRID(4326);
- data.add(Features.create(null, data.schema(),
+
+ data.add(new ListFeature(data.schema(),
g, 1, "anvil",
10.99));
- data.add(Features.create(null, data.schema(),
+ data.add(new ListFeature(data.schema(),
gb.points(10, 10, 20, 20).toLineString(),
2, "bomb", 11.99));
- data.add(Features.create(null, data.schema(),
+ data.add(new ListFeature(data.schema(),
gb.point(100, 10).toPoint().buffer(10),
3, "dynamite", 12.99));
diff --git a/vtm-jeo/src/org/oscim/theme/carto/BasicFeature.java b/vtm-jeo/src/org/oscim/theme/carto/BasicFeature.java
new file mode 100644
index 00000000..0a13ecf6
--- /dev/null
+++ b/vtm-jeo/src/org/oscim/theme/carto/BasicFeature.java
@@ -0,0 +1,452 @@
+/* Copyright 2013 The jeo project. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.oscim.theme.carto;
+
+import com.vividsolutions.jts.geom.Geometry;
+import io.jeo.util.Util;
+import io.jeo.vector.Feature;
+import io.jeo.vector.Field;
+import io.jeo.vector.Schema;
+import io.jeo.vector.SchemaBuilder;
+import org.osgeo.proj4j.CoordinateReferenceSystem;
+
+import java.util.*;
+
+/**
+ * Basic feature implementation.
+ *
+ * @author Justin Deoliveira, Boundless
+ *
+ * Adapted by Jan Lippert to the changes made in https://github.com/jeo/jeo/commit/e28695ccc8530ae6d1a2dff1fbd1e11449ef949f
+ */
+public class BasicFeature implements Feature {
+
+ /**
+ * feature identifier
+ */
+ protected String id;
+
+ /**
+ * Underlying feature storage.
+ */
+ protected Storage storage;
+
+ /**
+ * Constructor taking a feature identifier.
+ *
+ * @param id The feature id, if null an identifier will be generated.
+ */
+ public BasicFeature(String id) {
+ this(id, (Schema) null);
+ }
+
+ /**
+ * Constructor taking a feature identifier and an explicit schema object.
+ *
+ * @param id The feature id, if null an identifier will be generated.
+ * @param schema The feature schema, if null the schema will be always be derived
+ */
+ public BasicFeature(String id, Schema schema) {
+ this(id, (Storage)
+ (schema != null ? new ListStorage(null, schema) : new MapStorage(null, schema)));
+ }
+
+ /**
+ * Constructs a feature from an identifier and a list of values.
+ *
+ * @param id The feature id, if null an identifier will be generated.
+ * @param values The feature values.
+ */
+ public BasicFeature(String id, List