@@ -92,19 +92,35 @@ def _post_parsed(self, stream, context, path):
92
92
for i in range (self .size ):
93
93
self .points .append (MPoint .parse_stream (stream ))
94
94
elif self .point_type == 3 : # POLYGON
95
- self .polygons = []
95
+ self .polygon = []
96
96
self .psize = cs .Int32ul .parse_stream (stream )
97
97
for i in range (self .psize ):
98
98
size = cs .Int32ul .parse_stream (stream )
99
99
points = []
100
100
for j in range (size ):
101
101
points .append (MPoint .parse_stream (stream ))
102
- self .polygons .append (points )
102
+ self .polygon .append (points )
103
103
elif self .point_type == 4 : # MULTIPOINT
104
104
self .size = cs .Int32ul .parse_stream (stream )
105
105
self .points = []
106
106
for i in range (self .size ):
107
107
self .points .append (MGPoint .parse_stream (stream ))
108
+ elif self .point_type == 5 :
109
+ self .size = cs .Int32ul .parse_stream (stream )
110
+ self .lines = []
111
+ for i in range (self .size ):
112
+ self .lines .append (MGPoint .parse_stream (stream ))
113
+ elif self .point_type == 6 :
114
+ self .size = cs .Int32ul .parse_stream (stream )
115
+ self .polygons = []
116
+ for i in range (self .size ):
117
+ self .polygons .append (MGPoint .parse_stream (stream ))
118
+
119
+ elif self .point_type == 7 :
120
+ self .size = cs .Int32ul .parse_stream (stream )
121
+ self .geos = []
122
+ for i in range (self .size ):
123
+ self .geos .append (MGPoint .parse_stream (stream ))
108
124
109
125
110
126
def _post_build (self , obj , stream , context , path ):
@@ -117,7 +133,7 @@ def _post_build(self, obj, stream, context, path):
117
133
stream .write (p .build ())
118
134
elif self .point_type == 3 :
119
135
stream .write (cs .Int32ul .build (self .psize ))
120
- for polygon in self .polygons :
136
+ for polygon in self .polygon :
121
137
if len (polygon ) == 0 :
122
138
continue
123
139
stream .write (cs .Int32ul .build (len (polygon )))
@@ -128,6 +144,20 @@ def _post_build(self, obj, stream, context, path):
128
144
stream .write (cs .Int32ul .build (self .size ))
129
145
for p in self .points :
130
146
stream .write (p .build ())
147
+ elif self .point_type == 5 :
148
+ stream .write (cs .Int32ul .build (self .size ))
149
+ for l in self .lines :
150
+ stream .write (l .build ())
151
+
152
+ elif self .point_type == 6 :
153
+ stream .write (cs .Int32ul .build (self .size ))
154
+ for l in self .polygons :
155
+ stream .write (l .build ())
156
+
157
+ elif self .point_type == 7 :
158
+ stream .write (cs .Int32ul .build (self .size ))
159
+ for l in self .geos :
160
+ stream .write (l .build ())
131
161
132
162
class MGeo (CC ):
133
163
SRID : int = cfield (cs .Int32ub )
0 commit comments