예제 #1
0
from datetime import datetime

from shapely.geometry import Point

from pygw.store import DataStoreFactory
from pygw.store.rocksdb import RocksDBOptions
from pygw.geotools import SimpleFeatureTypeBuilder
from pygw.geotools import AttributeDescriptor
from pygw.geotools import FeatureDataAdapter
from pygw.geotools import SimpleFeatureBuilder

# "Point" Type
_point_type_builder = SimpleFeatureTypeBuilder()
_point_type_builder.set_name("TestPointType")
_point_type_builder.add(AttributeDescriptor.point("the_geom"))
_point_type_builder.add(AttributeDescriptor.date("date"))
_point_type_builder.add(AttributeDescriptor.float("flt"))
POINT_TYPE = _point_type_builder.build_feature_type()

# "Point" Type Adapter
POINT_TYPE_ADAPTER = FeatureDataAdapter(POINT_TYPE)

# "Point" Feature builder
POINT_FEATURE_BUILDER = SimpleFeatureBuilder(POINT_TYPE)


def _create_feature(id, geometry, timestamp):
    POINT_FEATURE_BUILDER.set_attr("the_geom", geometry)
    POINT_FEATURE_BUILDER.set_attr("date", datetime.fromtimestamp(timestamp))
    POINT_FEATURE_BUILDER.set_attr("flt", random.uniform(0, 1))
    return POINT_FEATURE_BUILDER.build(id)
예제 #2
0
def test_simple_feature_type():
    sftb = SimpleFeatureTypeBuilder()
    sftb.set_name("TestKitchenSinkType")
    sftb.set_namespace_uri("http://www.example.org")
    sftb.set_srs("EPSG:4326")
    sftb.add(AttributeDescriptor.point("the_geom", False))
    sftb.add(AttributeDescriptor.big_decimal("big_decimal", True))
    sftb.add(AttributeDescriptor.big_decimal_array("big_decimal_array"))
    sftb.add(AttributeDescriptor.big_integer("big_integer"))
    sftb.add(AttributeDescriptor.big_integer_array("big_integer_array"))
    sftb.add(AttributeDescriptor.boolean("boolean"))
    sftb.add(AttributeDescriptor.boolean_array("boolean_array"))
    sftb.add(AttributeDescriptor.primitive_boolean_array("prim_boolean_array"))
    sftb.add(AttributeDescriptor.float("float"))
    sftb.add(AttributeDescriptor.float_array("float_array"))
    sftb.add(AttributeDescriptor.primitive_float_array("prim_float_array"))
    sftb.add(AttributeDescriptor.double("double"))
    sftb.add(AttributeDescriptor.double_array("double_array"))
    sftb.add(AttributeDescriptor.primitive_double_array("prim_double_array"))
    sftb.add(AttributeDescriptor.byte("byte"))
    sftb.add(AttributeDescriptor.byte_array("byte_array"))
    sftb.add(AttributeDescriptor.primitive_byte_array("prim_byte_array"))
    sftb.add(AttributeDescriptor.short("short"))
    sftb.add(AttributeDescriptor.short_array("short_array"))
    sftb.add(AttributeDescriptor.primitive_short_array("prim_short_array"))
    sftb.add(AttributeDescriptor.integer("integer"))
    sftb.add(AttributeDescriptor.integer_array("integer_array"))
    sftb.add(AttributeDescriptor.primitive_int_array("prim_int_array"))
    sftb.add(AttributeDescriptor.long("long"))
    sftb.add(AttributeDescriptor.long_array("long_array"))
    sftb.add(AttributeDescriptor.primitive_long_array("prim_long_array"))
    sftb.add(AttributeDescriptor.string("string"))
    sftb.add(AttributeDescriptor.string_array("string_array"))
    sftb.add(AttributeDescriptor.date("date"))
    sftb.add(AttributeDescriptor.date_array("date_array"))
    sftb.add(AttributeDescriptor.calendar("calendar"))
    sftb.add(AttributeDescriptor.calendar_array("calendar_array"))
    sftb.add(AttributeDescriptor.point_array("point_array"))
    sftb.add(AttributeDescriptor.multi_point("multi_point"))
    sftb.add(AttributeDescriptor.multi_point_array("multi_point_array"))
    sftb.add(AttributeDescriptor.line_string("line_string"))
    sftb.add(AttributeDescriptor.line_string_array("line_string_array"))
    sftb.add(AttributeDescriptor.multi_line_string("multi_line_string"))
    sftb.add(
        AttributeDescriptor.multi_line_string_array("multi_line_string_array"))
    sftb.add(AttributeDescriptor.polygon("polygon"))
    sftb.add(AttributeDescriptor.polygon_array("polygon_array"))
    sftb.add(AttributeDescriptor.multi_polygon("multi_polygon"))
    sftb.add(AttributeDescriptor.multi_polygon_array("multi_polygon_array"))
    sftb.add(AttributeDescriptor.geometry_collection("geometry_collection"))
    sftb.add(
        AttributeDescriptor.geometry_collection_array(
            "geometry_collection_array"))
    sftb.add(AttributeDescriptor.geometry("geometry"))
    sftb.add(AttributeDescriptor.geometry_array("geometry_array"))
    sft = sftb.build_feature_type()

    assert sft.get_type_name() == "TestKitchenSinkType"
    check_attribute(sft, "the_geom", False, PointType)
    check_attribute(sft, "big_decimal", True, BigDecimalType)
    check_attribute(sft, "big_decimal_array", False, BigDecimalArrayType)
    check_attribute(sft, "big_integer", False, BigIntegerType)
    check_attribute(sft, "big_integer_array", False, BigIntegerArrayType)
    check_attribute(sft, "boolean", False, BooleanType)
    check_attribute(sft, "boolean_array", False, BooleanArrayType)
    check_attribute(sft, "prim_boolean_array", False,
                    PrimitiveBooleanArrayType)
    check_attribute(sft, "float", False, FloatType)
    check_attribute(sft, "float_array", False, FloatArrayType)
    check_attribute(sft, "prim_float_array", False, PrimitiveFloatArrayType)
    check_attribute(sft, "double", False, DoubleType)
    check_attribute(sft, "double_array", False, DoubleArrayType)
    check_attribute(sft, "prim_double_array", False, PrimitiveDoubleArrayType)
    check_attribute(sft, "byte", False, ByteType)
    check_attribute(sft, "byte_array", False, ByteArrayType)
    check_attribute(sft, "prim_byte_array", False, PrimitiveByteArrayType)
    check_attribute(sft, "short", False, ShortType)
    check_attribute(sft, "short_array", False, ShortArrayType)
    check_attribute(sft, "prim_short_array", False, PrimitiveShortArrayType)
    check_attribute(sft, "integer", False, IntegerType)
    check_attribute(sft, "integer_array", False, IntegerArrayType)
    check_attribute(sft, "prim_int_array", False, PrimitiveIntArrayType)
    check_attribute(sft, "long", False, LongType)
    check_attribute(sft, "long_array", False, LongArrayType)
    check_attribute(sft, "prim_long_array", False, PrimitiveLongArrayType)
    check_attribute(sft, "string", False, StringType)
    check_attribute(sft, "string_array", False, StringArrayType)
    check_attribute(sft, "date", False, DateType)
    check_attribute(sft, "date_array", False, DateArrayType)
    check_attribute(sft, "calendar", False, CalendarType)
    check_attribute(sft, "calendar_array", False, CalendarArrayType)
    check_attribute(sft, "point_array", False, PointArrayType)
    check_attribute(sft, "multi_point", False, MultiPointType)
    check_attribute(sft, "multi_point_array", False, MultiPointArrayType)
    check_attribute(sft, "line_string", False, LineStringType)
    check_attribute(sft, "line_string_array", False, LineStringArrayType)
    check_attribute(sft, "multi_line_string", False, MultiLineStringType)
    check_attribute(sft, "multi_line_string_array", False,
                    MultiLineStringArrayType)
    check_attribute(sft, "polygon", False, PolygonType)
    check_attribute(sft, "polygon_array", False, PolygonArrayType)
    check_attribute(sft, "multi_polygon", False, MultiPolygonType)
    check_attribute(sft, "multi_polygon_array", False, MultiPolygonArrayType)
    check_attribute(sft, "geometry_collection", False, GeometryCollectionType)
    check_attribute(sft, "geometry_collection_array", False,
                    GeometryCollectionArrayType)
    check_attribute(sft, "geometry", False, GeometryType)
    check_attribute(sft, "geometry_array", False, GeometryArrayType)

    # Get Attribute by index
    assert sft.get_attribute(2).descriptor == "big_decimal_array"
    assert sft.get_attribute(15).descriptor == "byte_array"

    # Get non-existent attribute
    assert sft.get_attribute("nonexistent") is None
예제 #3
0
from pygw.geotools import SimpleFeatureTypeBuilder
from pygw.geotools import AttributeDescriptor
from pygw.geotools import FeatureDataAdapter
from pygw.geotools import SimpleFeatureBuilder

# "Point" Type
POINT_TYPE_NAME = "TestPointType"
POINT_GEOMETRY_FIELD = "the_geom"
POINT_TIME_FIELD = "date"
POINT_NUMBER_FIELD = "flt"
POINT_COLOR_FIELD = "color"
POINT_SHAPE_FIELD = "shape"
_point_type_builder = SimpleFeatureTypeBuilder()
_point_type_builder.set_name(POINT_TYPE_NAME)
_point_type_builder.add(AttributeDescriptor.point(POINT_GEOMETRY_FIELD))
_point_type_builder.add(AttributeDescriptor.date(POINT_TIME_FIELD))
_point_type_builder.add(AttributeDescriptor.float(POINT_NUMBER_FIELD))
_point_type_builder.add(AttributeDescriptor.string(POINT_COLOR_FIELD))
_point_type_builder.add(AttributeDescriptor.string(POINT_SHAPE_FIELD))
POINT_TYPE = _point_type_builder.build_feature_type()

# "Point" Type Adapter
POINT_TYPE_ADAPTER = FeatureDataAdapter(POINT_TYPE)

# "Point" Feature builder
POINT_FEATURE_BUILDER = SimpleFeatureBuilder(POINT_TYPE)

COLORS = ['RED', 'GREEN', 'BLUE']
SHAPES = ['SQUARE', 'CIRCLE', 'TRIANGLE', 'RECTANGLE']