Last active
February 3, 2017 22:53
-
-
Save jiayuasu/bcecaa2e9e6f280a0f9a72bb7549ffaa to your computer and use it in GitHub Desktop.
These Scala APIs work for GeoSpark 0.3.X line
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*---------------------------- GeoSpark 0.3.X or older Scala API usage ----------------------------*/ | |
/* | |
* If you are writing GeoSpark program in Spark Scala Shell, no need to declare the Spark Context by yourself. | |
* If you are writing a self-contained GeoSpark Scala program, please declare the Spark Context as follows and | |
* stop it at the end of the entire program. | |
*/ | |
import org.apache.spark.SparkContext | |
import org.apache.spark.SparkConf | |
val conf = new SparkConf().setAppName("Simple Application").setMaster("spark://jias-mbp.mobile.asu.edu:7077"); | |
val sc = new SparkContext(conf) | |
/*---------------------------- Start an example Spatial Range Query without Index ----------------------------*/ | |
import org.datasyslab.geospark.spatialOperator.RangeQuery; | |
import org.datasyslab.geospark.spatialRDD.PointRDD; | |
import com.vividsolutions.jts.geom.Envelope; | |
val queryEnvelope=new Envelope (-113.79,-109.73,32.99,35.08); | |
val objectRDD = new PointRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/arealm.csv", 0, "csv"); /* The O means spatial attribute starts at Column 0 */ | |
val resultSize = RangeQuery.SpatialRangeQuery(objectRDD, queryEnvelope, 0).getRawPointRDD().count(); /* The O means consider a point only if it is fully covered by the query window when doing query */ | |
/*---------------------------- End an example Spatial Range Query without Index ----------------------------*/ | |
/*---------------------------- Start an example Spatial Range Query with Index ----------------------------*/ | |
import org.datasyslab.geospark.spatialOperator.RangeQuery; | |
import org.datasyslab.geospark.spatialRDD.PointRDD; | |
import com.vividsolutions.jts.geom.Envelope; | |
val queryEnvelope=new Envelope (-113.79,-109.73,32.99,35.08); | |
val objectRDD = new PointRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/arealm.csv", 0, "csv"); /* The O means spatial attribute starts at Column 0 */ | |
objectRDD.buildIndex("rtree"); /* Build R-Tree index */ | |
val resultSize = RangeQuery.SpatialRangeQueryUsingIndex(objectRDD, queryEnvelope, 0).getRawPointRDD().count(); /* The O means consider a point only if it is fully covered by the query window when doing query */ | |
/*---------------------------- End an example Spatial Range Query with Index ----------------------------*/ | |
/*---------------------------- Start an example Spatial KNN Query without Index ----------------------------*/ | |
import org.datasyslab.geospark.spatialOperator.KNNQuery; | |
import org.datasyslab.geospark.spatialRDD.PointRDD; | |
import com.vividsolutions.jts.geom.GeometryFactory; | |
import com.vividsolutions.jts.geom.Point; | |
import com.vividsolutions.jts.geom.Coordinate; | |
val fact=new GeometryFactory(); | |
val queryPoint=fact.createPoint(new Coordinate(-109.73, 35.08)); | |
val objectRDD = new PointRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/arealm.csv", 0, "csv"); /* The O means spatial attribute starts at Column 0 */ | |
val resultSize = KNNQuery.SpatialKnnQuery(objectRDD, queryPoint, 5); /* The number 5 means 5 nearest neighbors */ | |
/*---------------------------- End an example Spatial KNN Query without Index ----------------------------*/ | |
/*---------------------------- Start an example Spatial KNN Query with Index ----------------------------*/ | |
import org.datasyslab.geospark.spatialOperator.KNNQuery; | |
import org.datasyslab.geospark.spatialRDD.PointRDD; | |
import com.vividsolutions.jts.geom.GeometryFactory; | |
import com.vividsolutions.jts.geom.Point; | |
import com.vividsolutions.jts.geom.Coordinate; | |
val fact=new GeometryFactory(); | |
val queryPoint=fact.createPoint(new Coordinate(-109.73, 35.08)); | |
val objectRDD = new PointRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/arealm.csv", 0, "csv"); /* The O means spatial attribute starts at Column 0 */ | |
objectRDD.buildIndex("rtree"); /* Build R-Tree index */ | |
val resultSize = KNNQuery.SpatialKnnQueryUsingIndex(objectRDD, queryPoint, 5); /* The number 5 means 5 nearest neighbors */ | |
/*---------------------------- End an example Spatial KNN Query with Index ----------------------------*/ | |
/*---------------------------- Start an example Spatial Join Query without Index ----------------------------*/ | |
import org.datasyslab.geospark.spatialOperator.JoinQuery; | |
import org.datasyslab.geospark.spatialRDD.PointRDD; | |
import org.datasyslab.geospark.spatialRDD.RectangelRDD; | |
val objectRDD = new PointRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/arealm.csv", 0 ,"csv","rtree",4); /* The O means spatial attribute starts at Column 0, number 4 means 4 RDD partitions, "rtree" means use R-Tree Spatial Partitioning Grid */ | |
val rectangleRDD = new RectangleRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/zcta510.csv", 0, "csv"); /* The O means spatial attribute starts at Column 0 */ | |
val joinQuery = new JoinQuery(sc,objectRDD,rectangleRDD); | |
val resultSize = joinQuery.SpatialJoinQuery(objectRDD,rectangleRDD).count(); | |
/*---------------------------- End an example Spatial Join Query without Index ----------------------------*/ | |
/*---------------------------- Start an example Spatial Join Query with Index ----------------------------*/ | |
import org.datasyslab.geospark.spatialOperator.JoinQuery; | |
import org.datasyslab.geospark.spatialRDD.PointRDD; | |
import org.datasyslab.geospark.spatialRDD.RectangelRDD; | |
val objectRDD = new PointRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/arealm.csv", 0 ,"csv","rtree",4); /* The O means spatial attribute starts at Column 0, number 4 means 4 RDD partitions, "rtree" means use R-Tree Spatial Partitioning Grid */ | |
val rectangleRDD = new RectangleRDD(sc, "/home/SparkUser/Downloads/GeoSpark/src/test/resources/zcta510.csv", 0, "csv"); /* The O means spatial attribute starts at Column 0 */ | |
val joinQuery = new JoinQuery(sc,objectRDD,rectangleRDD); | |
objectRDD.buildIndex("rtree"); /* Build R-Tree index */ | |
val resultSize = joinQuery.SpatialJoinQueryUsingIndex(objectRDD,rectangleRDD).count(); | |
/*---------------------------- End an example Spatial Join Query with Index ----------------------------*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment