Modeling from point cloud data can usually achieve high level of detail. However, the procedure to reconstruct a highly accurate model is usually complex. This paper presents a systematic approach to reconstruct building models conforming to OGC CityGML LOD3 standard from airborne and ground-based Lidar point clouds. The proposed method is divided into three main parts: "data registration", "point cloud partitioning" and "surface reconstruction". First, after acquiring point cloud data, they are merged to a single point cloud dataset through scaling and translation transformation. Error analysis is performed on the merged point cloud model to minimize registration errors. Then, the point cloud data are partitioned into several groups based on different conditions such as coplanarity etc. For each point group, a three-dimensional surface (or plane) is reconstructed with Least Squares Method. Finally all surfaces are combined to a complete 3D model and the accuracy is evaluated.