1+ java_import org . opengis . feature . type . FeatureType
2+ java_import org . opengis . feature . type . GeometryDescriptor
3+ java_import org . geotools . feature . NameImpl
4+ java_import org . geotools . feature . simple . SimpleFeatureTypeBuilder
5+
16module GeoScript
27 module Feature
38 class Schema
9+ include GeoScript ::Feature
10+
11+ attr_accessor :feature_type
12+
13+ def initialize ( name = nil , fields = [ ] , type = nil , uri = 'http://geoscript.org/feature' )
14+ if name && !fields . empty?
15+ type_builder = SimpleFeatureTypeBuilder . new
16+ type_builder . set_name NameImpl . new ( name )
17+ type_builder . setNamespaceURI uri
18+ fields . each do |field |
19+ if field . instance_of? GeoScript ::Feature ::Field
20+ name , type , proj = field . name , field . type , field . proj
21+ else
22+ if field . instance_of? Hash
23+ name , type = field . keys . first , field . values . first
24+ elsif field . instance_of? Array
25+ name , type = field [ 0 ] , field [ 1 ]
26+
27+ if type . kind_of? GeoScript ::Geom
28+ proj = GeoScript ::Projection . new ( field [ 2 ] ) if field [ 2 ]
29+ else
30+ raise 'Invalid type specified. Must be of type GeoScript::Geom::*'
31+ end
32+ end
33+ end
34+ type_builder . crs proj if proj
35+ type_builder . add name , type . java_class
36+ @feature_type = type_builder . build_feature_type
37+ end
38+ else
39+ raise "No fields specified for feature type: #{ type } "
40+ end
41+ end
42+
43+ def get_name
44+ @feature_type . name . local_part
45+ end
46+
47+ def get_uri
48+ @feature_type . name . namespaceURI
49+ end
50+
51+ def get_proj
52+ crs = @feature_type . coordinate_reference_system
53+ GeoScript ::Projection . new crs if crs
54+ end
55+
56+ def get ( name )
57+ ad = @feature_type . get_descriptor name
58+ end
459 end
560 end
661end
0 commit comments