blob: c133a9db2ea7c88d4e5628a355d2e369418ae511 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
import os
from tests import tests_resource
from tests.test_base import TestBase
from sedona.spark.core.enums import FileDataSplitter, IndexType
from sedona.spark.core.SpatialRDD import LineStringRDD, PointRDD, PolygonRDD
point_rdd_input_location = os.path.join(tests_resource, "arealm-small.csv")
polygon_rdd_input_location = os.path.join(tests_resource, "primaryroads-polygon.csv")
linestring_rdd_input_location = os.path.join(
tests_resource, "primaryroads-linestring.csv"
)
linestring_rdd_splittter = FileDataSplitter.CSV
polygon_rdd_splitter = FileDataSplitter.CSV
polygon_rdd_index_type = IndexType.RTREE
polygon_rdd_num_partitions = 5
polygon_rdd_start_offset = 0
polygon_rdd_end_offset = 9
point_rdd_offset = 1
point_rdd_splitter = FileDataSplitter.CSV
class TestRDDSerialization(TestBase):
def test_point_rdd(self):
point_rdd = PointRDD(
sparkContext=self.sc,
InputLocation=point_rdd_input_location,
Offset=point_rdd_offset,
splitter=point_rdd_splitter,
carryInputData=False,
)
collected_points = point_rdd.getRawSpatialRDD().collect()
points_coordinates = [
[-88.331492, 32.324142],
[-88.175933, 32.360763],
[-88.388954, 32.357073],
[-88.221102, 32.35078],
]
assert [
[geo_data.geom.x, geo_data.geom.y] for geo_data in collected_points[:4]
] == points_coordinates[:4]
def test_polygon_rdd(self):
polygon_rdd = PolygonRDD(
sparkContext=self.sc,
InputLocation=polygon_rdd_input_location,
startOffset=polygon_rdd_start_offset,
endOffset=polygon_rdd_end_offset,
splitter=polygon_rdd_splitter,
carryInputData=True,
)
collected_polygon_rdd = polygon_rdd.getRawSpatialRDD().collect()
input_wkt_polygons = [
"POLYGON ((-74.020753 40.836454, -74.020753 40.843768, -74.018162 40.843768, -74.018162 40.836454, -74.020753 40.836454))",
"POLYGON ((-74.018978 40.837712, -74.018978 40.852181, -74.014938 40.852181, -74.014938 40.837712, -74.018978 40.837712))",
"POLYGON ((-74.021683 40.833253, -74.021683 40.834288, -74.021368 40.834288, -74.021368 40.833253, -74.021683 40.833253))",
]
assert [geo_data.geom.wkt for geo_data in collected_polygon_rdd][
:3
] == input_wkt_polygons
# def test_circle_rdd(self):
# object_rdd = PointRDD(
# sparkContext=self.sc,
# InputLocation=point_rdd_input_location,
# Offset=point_rdd_offset,
# splitter=point_rdd_splitter,
# carryInputData=False
# )
# circle_rdd = CircleRDD(object_rdd, 0.1)
# collected_data = circle_rdd.getRawSpatialRDD().collect()
# print([geo_data.geom.wkt for geo_data in collected_data])
def test_linestring_rdd(self):
linestring_rdd = LineStringRDD(
sparkContext=self.sc,
InputLocation=linestring_rdd_input_location,
startOffset=0,
endOffset=7,
splitter=FileDataSplitter.CSV,
carryInputData=True,
)
wkt = "LINESTRING (-112.506968 45.98186, -112.506968 45.983586, -112.504872 45.983586, -112.504872 45.98186)"
collected_linestring_rdd = linestring_rdd.getRawSpatialRDD().collect()
assert wkt == collected_linestring_rdd[0].geom.wkt
def test_rectangle_rdd(self):
pass