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)
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
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']