use of org.apache.pig.PigServer in project pigeon by aseldawy.
the class TestConnect method testShouldMakeGeometryCollectionForDisconnectedShapes.
public void testShouldMakeGeometryCollectionForDisconnectedShapes() throws Exception {
ArrayList<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "1", "2", "LINESTRING(0 0, 2 0, 3 1)" });
data.add(new String[] { "2", "3", "LINESTRING(3 1, 2 2)" });
data.add(new String[] { "3", "1", "LINESTRING(2 2, 1 2, 0 0)" });
data.add(new String[] { "7", "8", "LINESTRING(10 8, 8 5)" });
String datafile = TestHelper.createTempFile(data, "\t");
datafile = datafile.replace("\\", "\\\\");
PigServer pig = new PigServer(LOCAL);
String query = "A = LOAD 'file:" + datafile + "' AS (first_point: long, last_point: long, linestring: chararray);\n" + "B = GROUP A ALL;" + "C = FOREACH B GENERATE " + Connect.class.getName() + "(A.first_point, A.last_point, A.linestring);";
pig.registerQuery(query);
Iterator<?> it = pig.openIterator("C");
int count = 0;
String expectedResult = "GEOMETRYCOLLECTION(LINESTRING(10 8, 8 5), " + "POLYGON((0 0, 2 0, 3 1, 2 2, 1 2, 0 0)))";
while (it.hasNext()) {
Tuple tuple = (Tuple) it.next();
if (tuple == null)
break;
TestHelper.assertGeometryEqual(expectedResult, tuple.get(0));
count++;
}
assertEquals(1, count);
}
use of org.apache.pig.PigServer in project pigeon by aseldawy.
the class TestConvexHull method testShouldWorkWithWKT.
public void testShouldWorkWithWKT() throws Exception {
ArrayList<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "0", "POLYGON ((0 0, 6 0, 0 5, 0 0))" });
data.add(new String[] { "1", "POLYGON ((2 2, 7 2, 2 6, 2 2))" });
data.add(new String[] { "2", "POLYGON ((3 -2, 8 -1, 8 4, 3 -2))" });
String datafile = TestHelper.createTempFile(data, "\t");
datafile = datafile.replace("\\", "\\\\");
PigServer pig = new PigServer(LOCAL);
String query = "A = LOAD 'file:" + datafile + "' as (id, geom);\n" + "B = GROUP A ALL;\n" + "C = FOREACH B GENERATE " + ConvexHull.class.getName() + "(A.geom);";
pig.registerQuery(query);
Iterator<?> it = pig.openIterator("C");
// Calculate the convex hull outside Pig
String true_convex_hull = "POLYGON ((0 0, 3 -2, 8 -1, 8 4, 2 6, 0 5, 0 0))";
int output_size = 0;
while (it.hasNext()) {
Tuple tuple = (Tuple) it.next();
if (tuple == null)
break;
output_size++;
TestHelper.assertGeometryEqual(true_convex_hull, tuple.get(0));
}
assertEquals(1, output_size);
}
use of org.apache.pig.PigServer in project pigeon by aseldawy.
the class TestCrosses method testShouldWorkWithWKT.
public void testShouldWorkWithWKT() throws Exception {
ArrayList<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "0", "LINESTRING (0 0, 3 3)", "LINESTRING (0 3, 3 0)" });
data.add(new String[] { "1", "LINESTRING (0 0, 0 3)", "LINESTRING (0 3, 3 0)" });
data.add(new String[] { "2", "LINESTRING (0 0, 3 0)", "LINESTRING (0 3, 3 3)" });
String datafile = TestHelper.createTempFile(data, "\t");
datafile = datafile.replace("\\", "\\\\");
PigServer pig = new PigServer(LOCAL);
String query = "A = LOAD 'file:" + datafile + "' as (id: int, geom1, geom2);\n" + "B = FILTER A BY " + Crosses.class.getName() + "(geom1, geom2);";
pig.registerQuery(query);
Iterator<?> it = pig.openIterator("B");
ArrayList<Integer> expected_results = new ArrayList<Integer>();
expected_results.add(0);
Iterator<Integer> result_ids = expected_results.iterator();
int count = 0;
while (it.hasNext() && result_ids.hasNext()) {
Tuple tuple = (Tuple) it.next();
count++;
assertEquals(result_ids.next(), (Integer) tuple.get(0));
}
assertFalse(it.hasNext());
assertEquals(1, count);
}
use of org.apache.pig.PigServer in project pigeon by aseldawy.
the class TestEnvelope method testShouldWorkWithWKT.
public void testShouldWorkWithWKT() throws Exception {
ArrayList<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "0", "LINESTRING (0 0, 0 3, 4 5, 10 0)" });
String datafile = TestHelper.createTempFile(data, "\t");
datafile = datafile.replace("\\", "\\\\");
PigServer pig = new PigServer(LOCAL);
String query = "A = LOAD 'file:" + datafile + "' as (id, geom);\n" + "B = FOREACH A GENERATE " + Envelope.class.getName() + "(geom);";
pig.registerQuery(query);
Iterator<?> it = pig.openIterator("B");
ArrayList<String> geometries = new ArrayList<String>();
geometries.add("POLYGON ((0 0, 10 0, 10 5, 0 5, 0 0))");
Iterator<String> geoms = geometries.iterator();
while (it.hasNext() && geoms.hasNext()) {
String expected_result = geoms.next();
Tuple tuple = (Tuple) it.next();
if (tuple == null)
break;
TestHelper.assertGeometryEqual(expected_result, tuple.get(0));
}
}
use of org.apache.pig.PigServer in project pigeon by aseldawy.
the class TestMakeBox method testShouldWorkWithWKT.
public void testShouldWorkWithWKT() throws Exception {
ArrayList<String[]> data = new ArrayList<String[]>();
data.add(new String[] { "0" });
String datafile = TestHelper.createTempFile(data, "\t");
datafile = datafile.replace("\\", "\\\\");
PigServer pig = new PigServer(LOCAL);
String query = "A = LOAD 'file:" + datafile + "' as (dummy);\n" + "B = FOREACH A GENERATE " + MakeBox.class.getName() + "(1, 2, 5, 7);";
pig.registerQuery(query);
Iterator<?> it = pig.openIterator("B");
Vector<String> expectedResult = new Vector<String>();
expectedResult.add("POLYGON((1 2, 5 2, 5 7, 1 7, 1 2))");
Iterator<String> geoms = expectedResult.iterator();
int count = 0;
while (it.hasNext() && geoms.hasNext()) {
Tuple tuple = (Tuple) it.next();
String expected_result = geoms.next();
if (tuple == null)
break;
TestHelper.assertGeometryEqual(expected_result, tuple.get(0));
count++;
}
assertEquals(expectedResult.size(), count);
}
Aggregations