public void AddChildValue(Geometry value) { geoValues.Add(value); }
void ReadGeometry(List<Geometry> result, byte[] buffer, int byteOrder, int wkbType, int offset) { #if DEBUG dbugBreakOnMonitorData(); #endif double x; double y; int numPoints; Geometry value = new Geometry(); switch (wkbType) { case 1:// WKBPoint x = byteOrder != 0 ? ReadDoubleLE(buffer, offset) : ReadDoubleBE(buffer, offset); offset += 8; y = byteOrder != 0 ? ReadDoubleLE(buffer, offset) : ReadDoubleBE(buffer, offset); offset += 8; value.SetValue(x, y); result.Add(value); break; // var x = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; // var y = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; // result = {x: x, y: y}; // break; case 2:// WKBLineString numPoints = byteOrder != 0 ? ReadInt32LE(buffer, offset) : ReadInt32BE(buffer, offset); offset += 4; for (int i = numPoints; i > 0; i--) { x = byteOrder != 0 ? ReadDoubleLE(buffer, offset) : ReadDoubleBE(buffer, offset); offset += 8; y = byteOrder != 0 ? ReadDoubleLE(buffer, offset) : ReadDoubleBE(buffer, offset); offset += 8; value.SetValue(x, y); result.Add(value); } break; // var numPoints = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; // result = []; // for(var i=numPoints;i>0;i--) { // var x = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; // var y = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; // result.push({x: x, y: y}); // } // break; case 3:// WKBPolygon int numRings = byteOrder != 0 ? ReadInt32LE(buffer, offset) : ReadInt32BE(buffer, offset); offset += 4; for (int i = numRings; i > 0; i--) { numPoints = byteOrder != 0 ? ReadInt32LE(buffer, offset) : ReadInt32BE(buffer, offset); offset += 4; List<Geometry> lines = new List<Geometry>(); for (int j = numPoints; i > 0; j--) { x = byteOrder != 0 ? ReadDoubleLE(buffer, offset) : ReadDoubleBE(buffer, offset); offset += 8; y = byteOrder != 0 ? ReadDoubleLE(buffer, offset) : ReadDoubleBE(buffer, offset); offset += 8; lines.Add(new Geometry(x, y)); } value.AddChildValues(lines); result.Add(value); } break; // var numRings = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; // result = []; // for(var i=numRings;i>0;i--) { // var numPoints = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; // var line = []; // for(var j=numPoints;j>0;j--) { // var x = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; // var y = byteOrder? buffer.readDoubleLE(offset) : buffer.readDoubleBE(offset); offset += 8; // line.push({x: x, y: y}); // } // result.push(line); // } // break; case 4:// WKBMultiPoint case 5:// WKBMultiLineString case 6:// WKBMultiPolygon case 7:// WKBGeometryCollection int num = byteOrder != 0 ? ReadInt32LE(buffer, offset) : ReadInt32BE(buffer, offset); offset += 4; for (int i = num; i > 0; i--) { ReadGeometry(result, buffer, byteOrder, wkbType, offset); } //var num = byteOrder? buffer.readUInt32LE(offset) : buffer.readUInt32BE(offset); offset += 4; // var result = []; // for(var i=num;i>0;i--) { // result.push(parseGeometry()); // } break; //return reult; } }