Skip to content

Commit

Permalink
Merge pull request #39 from jiayuasu/master
Browse files Browse the repository at this point in the history
Refactor GeoSpark APIs. Prepare for LineStringRDD and the upcoming re…
  • Loading branch information
jiayuasu authored Dec 21, 2016
2 parents 50062ea + f0100da commit de58ead
Show file tree
Hide file tree
Showing 93 changed files with 3,327 additions and 4,239 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ script:

- mvn clean install -DskipTests

after_success:
- bash <(curl -s https://codecov.io/bash)

## ----------------------------------------------------------------------
## Notification
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.datasyslab</groupId>
<artifactId>geospark</artifactId>
<version>0.3.2</version>
<version>0.4.0</version>

<name>${project.groupId}:${project.artifactId}</name>
<description>Geospatial extension for Apache Spark</description>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: FileDataSplitter.java
* PATH: org.datasyslab.geospark.enums.FileDataSplitter.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.enums;
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/datasyslab/geospark/enums/GridType.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: GridType.java
* PATH: org.datasyslab.geospark.enums.GridType.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.enums;
Expand All @@ -14,7 +14,8 @@
*/
public enum GridType implements Serializable{

/** The equalgrid. */
/** The equalgrid. */
// /** The equalgrid. */
EQUALGRID,

/** The hilbert. */
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/datasyslab/geospark/enums/IndexType.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: IndexType.java
* PATH: org.datasyslab.geospark.enums.IndexType.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.enums;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: PointFormatMapper.java
* PATH: org.datasyslab.geospark.formatMapper.PointFormatMapper.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.formatMapper;
Expand All @@ -24,7 +24,7 @@
/**
* The Class PointFormatMapper.
*/
public class PointFormatMapper implements Serializable, Function<String, Point> {
public class PointFormatMapper implements Serializable, Function<String, Object> {

/** The offset. */
Integer offset = 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: PolygonFormatMapper.java
* PATH: org.datasyslab.geospark.formatMapper.PolygonFormatMapper.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.formatMapper;
Expand All @@ -25,7 +25,7 @@
/**
* The Class PolygonFormatMapper.
*/
public class PolygonFormatMapper implements Function<String, Polygon>, Serializable {
public class PolygonFormatMapper implements Function<String, Object>, Serializable {

/** The offset. */
Integer offset = 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: RectangleFormatMapper.java
* PATH: org.datasyslab.geospark.formatMapper.RectangleFormatMapper.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.formatMapper;
Expand All @@ -24,7 +24,7 @@
/**
* The Class RectangleFormatMapper.
*/
public class RectangleFormatMapper implements Serializable,Function<String,Envelope>
public class RectangleFormatMapper implements Serializable,Function<String,Object>
{

/** The offset. */
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* FILE: Circle.java
* PATH: org.datasyslab.geospark.geometryObjects.Circle.java
* Copyright (c) 2017 Arizona State University Data Systems Lab.
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.geometryObjects;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/**
* FILE: AllByRectangleJudgementUsingIndex.java
* PATH: org.datasyslab.geospark.joinJudgement.AllByRectangleJudgementUsingIndex.java
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.joinJudgement;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

import org.apache.spark.api.java.function.PairFlatMapFunction;

import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.index.SpatialIndex;
import com.vividsolutions.jts.index.quadtree.Quadtree;
import com.vividsolutions.jts.index.strtree.STRtree;

import scala.Tuple2;

// TODO: Auto-generated Javadoc
/**
* The Class AllByRectangleJudgementUsingIndex.
*/
public class AllByRectangleJudgementUsingIndex implements PairFlatMapFunction<Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>>, Envelope, HashSet<Geometry>>, Serializable{

/* (non-Javadoc)
* @see org.apache.spark.api.java.function.PairFlatMapFunction#call(java.lang.Object)
*/
@Override
public Iterator<Tuple2<Envelope, HashSet<Geometry>>> call(Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>> cogroup) throws Exception {
HashSet<Tuple2<Envelope, HashSet<Geometry>>> result = new HashSet<Tuple2<Envelope, HashSet<Geometry>>>();
Iterator<Object> iteratorWindow=cogroup._2()._2().iterator();
Iterator<Object> iteratorTree=cogroup._2()._1().iterator();
if(!iteratorTree.hasNext())
{
return result.iterator();
}
SpatialIndex treeIndex = (SpatialIndex) iteratorTree.next();
if(treeIndex instanceof STRtree)
{
treeIndex = (STRtree)treeIndex;
}
else
{
treeIndex = (Quadtree)treeIndex;
}
while(iteratorWindow.hasNext()) {
Envelope window=(Envelope)iteratorWindow.next();
List<Geometry> queryResult=new ArrayList<Geometry>();
queryResult=treeIndex.query(window);
HashSet<Geometry> objectHashSet = new HashSet<Geometry>(queryResult);
result.add(new Tuple2<Envelope, HashSet<Geometry>>(window, objectHashSet));
}
return result.iterator();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/**
* FILE: GeometryByPolygonJudgement.java
* PATH: org.datasyslab.geospark.joinJudgement.GeometryByPolygonJudgement.java
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.joinJudgement;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;

import org.apache.spark.api.java.function.PairFlatMapFunction;

import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.Polygon;

import scala.Tuple2;

// TODO: Auto-generated Javadoc
/**
* The Class GeometryByPolygonJudgement.
*/
public class GeometryByPolygonJudgement implements PairFlatMapFunction<Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>>, Polygon, HashSet<Geometry>>, Serializable{

/* (non-Javadoc)
* @see org.apache.spark.api.java.function.PairFlatMapFunction#call(java.lang.Object)
*/
@Override
public Iterator<Tuple2<Polygon, HashSet<Geometry>>> call(Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>> cogroup) throws Exception {
HashSet<Tuple2<Polygon, HashSet<Geometry>>> result = new HashSet<Tuple2<Polygon, HashSet<Geometry>>>();
Iterator iteratorWindow=cogroup._2()._2().iterator();
while(iteratorWindow.hasNext()) {
Polygon window=(Polygon)iteratorWindow.next();
HashSet<Geometry> resultHashSet = new HashSet<Geometry>();
Iterator iteratorObject=cogroup._2()._1().iterator();
while (iteratorObject.hasNext()) {
Geometry object = (Geometry)iteratorObject.next();
if (window.contains(object)) {
resultHashSet.add(object);
}
}
result.add(new Tuple2<Polygon, HashSet<Geometry>>(window, resultHashSet));
}
return result.iterator();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
/**
* FILE: GeometryByPolygonJudgementUsingIndex.java
* PATH: org.datasyslab.geospark.joinJudgement.GeometryByPolygonJudgementUsingIndex.java
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.joinJudgement;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

import org.apache.spark.api.java.function.PairFlatMapFunction;

import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.Polygon;
import com.vividsolutions.jts.index.SpatialIndex;
import com.vividsolutions.jts.index.quadtree.Quadtree;
import com.vividsolutions.jts.index.strtree.STRtree;

import scala.Tuple2;

// TODO: Auto-generated Javadoc
/**
* The Class GeometryByPolygonJudgementUsingIndex.
*/
public class GeometryByPolygonJudgementUsingIndex implements PairFlatMapFunction<Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>>, Polygon, HashSet<Geometry>>, Serializable{

/* (non-Javadoc)
* @see org.apache.spark.api.java.function.PairFlatMapFunction#call(java.lang.Object)
*/
@Override
public Iterator<Tuple2<Polygon, HashSet<Geometry>>> call(Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>> cogroup) throws Exception {
HashSet<Tuple2<Polygon, HashSet<Geometry>>> result = new HashSet<Tuple2<Polygon, HashSet<Geometry>>>();
Iterator<Object> iteratorWindow=cogroup._2()._2().iterator();
Iterator<Object> iteratorTree=cogroup._2()._1().iterator();
if(!iteratorTree.hasNext())
{
return result.iterator();
}
SpatialIndex treeIndex = (SpatialIndex) iteratorTree.next();
if(treeIndex instanceof STRtree)
{
treeIndex = (STRtree)treeIndex;
}
else
{
treeIndex = (Quadtree)treeIndex;
}
while(iteratorWindow.hasNext()) {
Polygon window=(Polygon)iteratorWindow.next();
List<Geometry> queryResult=new ArrayList<Geometry>();
queryResult=treeIndex.query(window.getEnvelopeInternal());
HashSet<Geometry> objectHashSet = new HashSet<Geometry>(queryResult);
result.add(new Tuple2<Polygon, HashSet<Geometry>>(window, objectHashSet));
}
return result.iterator();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/**
* FILE: GeometryByRectangleJudgement.java
* PATH: org.datasyslab.geospark.joinJudgement.GeometryByRectangleJudgement.java
* Copyright (c) 2016 Arizona State University Data Systems Lab.
* All rights reserved.
*/
package org.datasyslab.geospark.joinJudgement;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;

import org.apache.spark.api.java.function.PairFlatMapFunction;

import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.geom.Geometry;

import scala.Tuple2;

// TODO: Auto-generated Javadoc
/**
* The Class GeometryByRectangleJudgement.
*/
public class GeometryByRectangleJudgement implements PairFlatMapFunction<Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>>, Envelope, HashSet<Geometry>>, Serializable{

/* (non-Javadoc)
* @see org.apache.spark.api.java.function.PairFlatMapFunction#call(java.lang.Object)
*/
@Override
public Iterator<Tuple2<Envelope, HashSet<Geometry>>> call(Tuple2<Integer, Tuple2<Iterable<Object>, Iterable<Object>>> cogroup) throws Exception {
HashSet<Tuple2<Envelope, HashSet<Geometry>>> result = new HashSet<Tuple2<Envelope, HashSet<Geometry>>>();
Iterator iteratorWindow=cogroup._2()._2().iterator();
while(iteratorWindow.hasNext()) {
Envelope window=(Envelope)iteratorWindow.next();
HashSet<Geometry> resultHashSet = new HashSet<Geometry>();
Iterator iteratorObject=cogroup._2()._1().iterator();
while (iteratorObject.hasNext()) {
Geometry object = (Geometry)iteratorObject.next();
if (window.contains(object.getEnvelopeInternal())) {
resultHashSet.add(object);
}
}
result.add(new Tuple2<Envelope, HashSet<Geometry>>(window, resultHashSet));
}
return result.iterator();
}

}
Loading

0 comments on commit de58ead

Please sign in to comment.