1. Select the buildings that you want to use in your site model:
The first thing you need to do is to create a specific GIS layer that holds the buildings that you want to use for your site model. You can find all the Massachusetts building footprints (and their associated attributes) on MassGIS. Download the towns you seek to map. You can also navigate to the M Drive and download the footprints for New York City, if you are looking for a good sample dataset. They can be found on the M Drive at M:\US_Cities\New_York_City\Base_Data\BUILDINGS\building_footprints_July2015. NYC buildings will be used for this example.
In a new ArcMap document, add the base layer from which you want to pull the specific buildings (if you are using the files on the M drive, you should add the Bldg_Attribute since that is the one that has a “Height” field associated with it). To connect your computer to the M drive, follow these instructions. If you can’t see the M drive in ArcGIS, you might have to set up a connection to the folder using the “Connect to Folder” button.
2. Once you have the base layer in your map document, select the buildings that you want to use in your site model. There are multiple ways of selecting buildings in GIS, but the easiest is to use the selection tool. You can draw a rectangle around the buildings that you want to select or click on them holding the shift key to add multiple buildings. Explore the different options for “remove from selection”, “add to selection”, and the variety of selection cursors. Once you have all of what you want selected, right-click on the layer and choose, Data > Export Data. Make sure on the top part of the menu it says Export: Selected Features, and choose a location where to save the new shapefile. Pay attention at where you save your files with GIS because the default location is difficult to find. You don’t need to add the new layer to the map.
3. Now you need to switch to ArcScene, the 3D version of ArcMap. Open ArcScene and add the layer that you just created.
Then, right-click on the layer and go to Properties. Here go to the “Extrusion” tab and check “Extrude Features in Layer”. Also, click on the little calculator and choose the field that represents the height of the buildings to extrude. In this case this field is called “height_12”. If you need to multiply that number by a factor you could do it in the “Expression” option. Click OK and OK, and you will see how your buildings are now extruded.
4. The next thing you can do is to adjust the base height of your buildings to take into account the terrain they are sitting on. For this, you will need a topography file (raster) with that information. If you are working with buildings in Manhattan, add the file nyc_terrain, located on the M Drive in M:\US_Cities\New_York_City\Natural_Environment\Terrain.
Once you have your topography file, right-click on the building layer, go to Properties and open the “Base Heights” tab. In there, check the option “Floating on a Custom Surface” and GIS will automatically select the raster file with the topography data. Once you say OK, the buildings will adjust to the terrain information provided by the raster file. If you look closely under them, and if your terrain has some variation you will notice that the buildings have different base heights.
5. Once you have your buildings extruded and at the right base heights, remove the topography layer (right-click on it and say “Remove”), and go to File > Export Scene > 3D. Save your file (the only option is VRML format). Depending on how big your file is, this might take some time.
6. Once you have done this open Rhino and import the file you just saved. You need to change the type of file to VRML in order to see this file. Once you import it you will notice that the file is all one mesh and that it has been rotated 90 degrees. You can rotate it back to its normal position and delete the camera that comes with it. Although the buildings don’t look fine under rendered or shaded view, they will render perfectly, and if you want to modify the buildings in any way you can always explode the mesh and convert it to NURBS using the MeshToNURBS command. However, you have to be careful with this because if you have too many buildings you might crash your computer.
The other thing that you could do to have a perfectly clean site model (in polysurfaces as opposed to meshes) is to, in addition to what we just did, export a building footprint layer from GIS to CAD, and then in Rhino, change the base heights and extrude the buildings using the mesh as a “snapping” reference. However, you will have to do this for every single building. The advantage is that you will have a site model that is super clean and built only with polysurfaces.
You can also produce clean NURBS geometry through an alternative method, by using Grasshopper to import and build the geometry directly from the GIS data. This method is outlined in the tutorial Importing GIS Data into Grasshopper
Material for this tutorial is adopted from Columbia GSAPP.