Get your unit counts right for a yield study by understanding how Giraffe turns a building's area and unit mix into dwelling counts, prices, residents, and parking.
Calculation Methods
There are two main methods for calculating dwelling counts - massing and per feature.
Massing
When assigning a unit mix to a mass (IE the Residential Usage), the calculation for each unit type is (grossBuildingArea * sellEfficiency * mix) / dwellingSize. The result is rounded to the nearest whole number.
You establish unit size and mix in the Dwellings property in the Usage.
Units
When drawing individual units, like apartments (with flow), townhomes, or single family, you can assign the Dwelling Count and Dwelling Count Per Level properties.
When setting these properties, instead of calculating areas and efficiencies to determine dwelling counts, Giraffe assumes the entire geometry is a dwelling
The calculation depends on the dwelling count per level toggle.
On - d
wellingCount*levelsOff -
dwellingCount
Set the unit mix
The unit mix sets what share of a residential building goes to each dwelling type, like studios, 1 beds, and 2 beds. Giraffe uses the mix with each type's size to work out unit counts, residents, and parking, so a tested mix flows straight into your yield and feasibility numbers.
You can set the unit mix in two places. Set it on a usage to apply one mix to every building with that usage. Set it on a single building to test a different mix there.
Set the unit mix for a usage
Set the mix on a residential usage to give every building with that usage the same starting mix. Open the usage in the Usage Editor and find the Dwellings group.
Open the Usage Editor.
Select a residential usage.
Scroll to the Dwellings group.
Edit the Mix value for each dwelling type.
Set the unit mix for one building
Set the mix on a single building to override its usage. Select the building and open the Property Palette. The Dwellings group appears for buildings with a residential usage.
Select a building on the map.
Open the Property Palette.
Find the Dwellings group.
Edit the Mix value for each dwelling type.
A value set on the building takes priority over the value from its usage.
How the unit mix adds up
The unit mix always adds up to 100%. When you change one dwelling type's Mix, Giraffe adjusts the neighboring types to keep the total at 100%.
You can also drag the mix slider under the dwelling type columns. Each section of the slider is one dwelling type.
Dwelling type fields
Each dwelling type is a column in the Dwellings group. Every column has these fields:
Size: the area of one unit.
Price: the price of one unit.
Cars: parking spaces needed per unit.
People: residents per unit.
Mix: the share of units of this type, as a percent.
Add, rename, reorder, or remove a dwelling type
To add a type, click the Add new column button at the top right of the Dwellings group. Type a name in New dwelling type and press
Enter.To rename a type, edit the name at the top of its column. Each name must be unique.
To reorder types, drag a column left or right.
To remove a type, delete its column and confirm.
If the dwelling types fall out of sync across Mix, Size, Price, People, and Cars, the Dwellings group shows a warning. Re-add or edit the dwelling types to line them up again.
Learn how usages pass values to geometries in Apply a Usage to a Geometry.
Calculations
Dwelling Total Count
The count of all dwellings for the selected feature.
dwellingTotalCount =
(
grossBuildingArea*sellEfficiency*mix) /dwellingSized
wellingCount*levelsdwellingCount
Dwelling {{unit type}} count
All dwellings of the selected type for the current feature, summed.
IE - Dwelling 1 Bedroom count returns the sum of all 1 bedroom units in a feature
Dwelling Total Price
dwellingTotalPrice= sum for all dwellings in the feature
Dwelling Price Per
{{dwelling name}}Price * {{dwelling}}Count
IE - Dwelling 1 Bedroom Price returns the price input for 1 Bedroom units
Dwelling Total Parking Required
dwellingCars * dwellingCount , summed for all dwellings in the feature
Dwelling Parking Required Per
dwellingCars
IE - Dwelling 1 Bedroom Cars returns the required cars input for 1 Bedroom units
Dwelling Total Residents
dwellingResidents * dwellingCount, summed for all dwellings in the feature
Dwelling {{unit type}} Residents Per
dwellingResidents
IE - Dwelling 1 Bedroom Residents returns the residents input for 1 Bedroom units
Why Analytics shows 0 dwellings
Analytics counts dwellings from a building's floor area, its Sell Efficiency, and each dwelling type's Mix and Size. If any of these is 0, the dwelling count is 0, even when the plot ratio is correct.
You don't need to configure your layers for dwellings to show in Analytics. Analytics counts geometries on hidden drawing layers too.
Select the building, open the Property Palette, and check that:
Sell Efficiency is above 0.
Each dwelling type in the Dwellings group has a Size and a Mix above 0.
The building has a usage.
Dwelling Counts isn't also set. Dwelling Counts take priority over the mix. If the Dwellings group shows a warning, click Clear unit mix.
Dwelling Warnings
The Dwellings group in the Property Palette and the Usage Editor shows a warning when dwelling values conflict. Each warning explains which value Giraffe uses in Analytics, so you know which number to trust.
Message | What it means | What to do |
"Dwellings will not be counted until a usage is assigned." | The geometry has no usage. Giraffe only counts dwellings on geometries with a usage. | Assign a residential or dwelling usage to the geometry. |
Mixed dwelling values: "Some dwelling values are single numbers and others are per-type lists. Pick one so the dwelling calculations stay consistent." | Some dwelling fields hold one number for the whole geometry, and others hold a value for each dwelling type. Giraffe can't combine the two, so the dwelling calculations are unreliable. This one is an error. | Click Use single values to use one number for every field, or Use per-type lists to give each dwelling type its own values. |
"Both dwelling counts and a dwelling mix are set. Dwelling counts take precedence, the size/mix is ignored in calculations." | The geometry has Dwelling Counts and also a Mix or Size. Giraffe uses the counts and ignores the mix. | Click Clear unit mix to keep the counts. To use the mix, remove the Dwelling Counts instead. |
"Dwelling counts and the per-dwelling rates (Price, People, Cars) use different dwelling types. Rates only apply to types that match a dwelling count." | A dwelling type in Price, People, or Cars has no matching row in Dwelling Counts. Giraffe skips that rate, so totals like Dwelling Total Price come out lower. | Give the rate rows the same dwelling type names as the Dwelling Counts rows. |
"Per-dwelling Parking Required takes precedence, the building's area-based Parking Required is ignored in calculations." | The geometry has parking set per dwelling (Cars) and also by floor area (Parking Required). Giraffe uses the per-dwelling value. | Keep the one you want. Set Cars to 0 to use area-based parking. |
"Dwelling types are out of sync across Mix, Size, Price, People and Cars. Re-add or edit the dwelling types to realign them." | The dwelling type names or order differ between fields. Giraffe matches values by position, so a type can pick up another type's size or price. | Edit the dwelling types so every field lists the same types in the same order, or remove and re-add the type that's out of place. |
Warnings show at the top of the Dwellings group. Warnings with a fix button change the values for you when clicked.
Dwelling Counts messages
The Dwelling Counts list sets how many of each dwelling type a geometry or usage holds. Each row is a dwelling type name and a count. Giraffe shows these toasts at the bottom of the screen when two rows would share a name.
Message | What triggers it | What to do |
"Invalid name - must be unique." | In the Dwelling Counts list, you renamed a dwelling type, like 1 Bed or Studio, to a name another row already uses. | Give the dwelling type a name no other row uses. |
"Cannot add key new type because it already exists" | You clicked Add dwelling type, and the list already has a row called "new type". Each new row starts with that name. | Rename the existing "new type" row, then click Add dwelling type again. |


