@@ -174,8 +174,51 @@ private function loadPolyLineRecord() {
174
174
),
175
175
);
176
176
177
+ $ geometries = $ this ->processLineStrings ();
178
+
179
+ $ return ['numGeometries ' ] = $ geometries ['numParts ' ];
180
+ if ($ geometries ['numParts ' ] > 1 ) {
181
+ $ return ['wkt ' ] = 'MULTILINESTRING( ' . implode (', ' , $ geometries ['geometries ' ]) . ') ' ;
182
+ }
183
+ else {
184
+ $ return ['wkt ' ] = 'LINESTRING( ' . implode (', ' , $ geometries ['geometries ' ]) . ') ' ;
185
+ }
186
+
187
+ return $ return ;
188
+ }
189
+
190
+ private function loadPolygonRecord () {
191
+ $ return = array (
192
+ 'bbox ' => array (
193
+ 'xmin ' => $ this ->loadData ("d " ),
194
+ 'ymin ' => $ this ->loadData ("d " ),
195
+ 'xmax ' => $ this ->loadData ("d " ),
196
+ 'ymax ' => $ this ->loadData ("d " ),
197
+ ),
198
+ );
199
+
200
+ $ geometries = $ this ->processLineStrings ();
201
+
202
+ $ return ['numGeometries ' ] = $ geometries ['numParts ' ];
203
+ if ($ geometries ['numParts ' ] > 1 ) {
204
+ $ return ['wkt ' ] = 'MULTIPOLYGON( ' . implode (', ' , $ geometries ['geometries ' ]) . ') ' ;
205
+ }
206
+ else {
207
+ $ return ['wkt ' ] = 'POLYGON( ' . implode (', ' , $ geometries ['geometries ' ]) . ') ' ;
208
+ }
209
+
210
+ return $ return ;
211
+ }
212
+
213
+ /**
214
+ * Process function for loadPolyLineRecord and loadPolygonRecord.
215
+ * Returns geometries array.
216
+ */
217
+
218
+ private function processLineStrings () {
177
219
$ numParts = $ this ->loadData ("V " );
178
220
$ numPoints = $ this ->loadData ("V " );
221
+ $ geometries = array ();
179
222
180
223
$ parts = array ();
181
224
for ($ i = 0 ; $ i < $ numParts ; $ i ++) {
@@ -190,32 +233,25 @@ private function loadPolyLineRecord() {
190
233
}
191
234
192
235
if ($ numParts == 1 ) {
193
- $ lines = array ();
194
236
for ($ i = 0 ; $ i < $ numPoints ; $ i ++) {
195
- $ lines [] = sprintf ('%f %f ' , $ points [$ i ]['x ' ], $ points [$ i ]['y ' ]);
237
+ $ geometries [] = sprintf ('%f %f ' , $ points [$ i ]['x ' ], $ points [$ i ]['y ' ]);
196
238
}
197
239
198
- $ return ['wkt ' ] = 'LINESTRING ( ' . implode (', ' , $ lines ) . ') ' ;
199
240
}
200
241
else {
201
- $ geometries = array ();
202
242
for ($ i = 0 ; $ i < $ numParts ; $ i ++) {
203
243
$ my_points = array ();
204
244
for ($ j = $ parts [$ i ]; $ j < $ parts [$ i + 1 ]; $ j ++) {
205
245
$ my_points [] = sprintf ('%f %f ' , $ points [$ j ]['x ' ], $ points [$ j ]['y ' ]);
206
246
}
207
247
$ geometries [] = '( ' . implode (', ' , $ my_points ) . ') ' ;
208
248
}
209
- $ return ['wkt ' ] = 'MULTILINESTRING ( ' . implode (', ' , $ geometries ) . ') ' ;
210
249
}
211
250
212
- $ return ['numGeometries ' ] = $ numParts ;
213
-
214
- return $ return ;
215
- }
216
-
217
- private function loadPolygonRecord () {
218
- $ this ->loadPolyLineRecord ();
251
+ return array (
252
+ 'numParts ' => $ numParts ,
253
+ 'geometries ' => $ geometries ,
254
+ );
219
255
}
220
256
221
257
private function loadMultiPointRecord () {
0 commit comments