Location categories: Areas, Lines, & Points

Introduction

Farm maps in LiteFarm allow users to add three categories of locations to their farm maps: areas, lines, and structures.

  1. Areas are drawn polygons that have area. In general, the utility of the polygon is tied to its size. Examples of areas include fields, natural areas, residences, barns, greenhouses, etc.

  2. Lines are drawn, multi-point segments that don’t form a closed polygon. In general, lines don’t have an area (such as with fences) or their area is relatively uniform and based on the direction of the line (such as with creeks or buffer areas). Examples of lines are: fences, creeks, roads, and footpaths

  3. Points on the other hand are coordinates that are dropped on the map. For all intents and purposes, they don’t have an “area” per se, but rather provide a service based on their location. Examples of structures include water valves and gates

 

For each of the location types, please refer to https://lite-farm.atlassian.net/wiki/spaces/LITEFARM/pages/713949185 to understand how they’ll be built, per the description in “Available Views” in the below tables.

Areas

For our Spring 2021 release, the following areas will be supported:

Area type

Attributes

Other notes

Available Views and actions

Area type

Attributes

Other notes

Available Views and actions

Farm site boundary

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Notes (optional)

 

 

 

Hybrid:

  1. Tasks (List)

  2. Detail**

** including edit, retire (only if no incomplete tasks or crops reference this field), reestablish

Field

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Organic status: Enum

    • Transition Date: Date

  • Notes (optional)

 

Total area and perimeter should be pre-populated by the maps API, but modifiable by the user.

Organic status: {“Non-organic” (default), “Transitional”, “Organic”)

Transition date only shown if transitional chosen.

Hybrid:

  1. Tasks (List)

  2. Crops (Tile)

  3. Detail**

** including edit, retire (only if no incomplete tasks or crops reference this field), reestablish

Garden

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Organic status: Enum

    • Transition Date: Date

  • Notes (optional)

Total area and perimeter should be pre-populated by the maps API, but modifiable by the user.

Organic status: {“Non-organic” (default), “Transitional”, “Organic”)

Transition date only shown if transitional chosen.

Hybrid:

  1. Tasks (List)

  2. Crops (Tile)

  3. Detail**

** including edit, retire (only if no incomplete tasks or crops reference this field), reestablish

Barn

  • Name: String

  • Total area: Decimal

  • Has wash and pack station: Enum (option)

  • Has cold storage: Enum (option)

  • Notes (optional)

Total area should be pre-populated by the maps API, but modifiable by the user.

Both enums have the following values: {““, “No”, “Yes”}

Hybrid:

  1. Tasks (List)

  2. Inventory* (List)

  3. Detail**

* Not in current scope - just an FYI

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Greenhouse

  • Name: String

  • Total area: Decimal

  • Organic status: Enum

    • Transition Date: Date

  • Notes (optional)

Total area should be pre-populated by the maps API, but modifiable by the user.

Organic status: {“Non-organic” (default), “Transitional”, “Organic”)

Transition date only shown if transitional or organic are chosen.

Hybrid:

  1. Tasks (List)

  2. Crops (Tile)

  3. Detail**

 

** including edit, retire (only if no incomplete tasks or crops reference this location), reestablish

Natural area

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Notes (optional)

Total area and perimeter should be pre-populated by the maps API, but modifiable by the user.

Hybrid:

  1. Tasks (List)

  2. Detail**

 

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Surface water

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Used for irrigation: Enum (optional)

  • Notes (optional)

Total area and perimeter should be pre-populated by the maps API, but modifiable by the user.

  • Used for irrigation: {““, “No”, “Yes”}

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Residence

  • Name: String

  • Total area: Decimal

  • Notes (optional)

Total area should be pre-populated by the maps API, but modifiable by the user.

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Ceremonial area

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Notes (optional)

Total area and perimeter should be pre-populated by the maps API, but modifiable by the user.

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

 

Proposed Area Types

Area type

Attributes

Other notes

Available Views and actions

Area type

Attributes

Other notes

Available Views and actions

Custom

  • Name: String

  • Total area: Decimal

  • Perimeter: Decimal

  • Colour: RGB value

  • Notes (optional)

  • Crop enabled: Boolean

If crop-enabled:

  • Organic status: Enum

    • Transition Date: Date

Total area should be pre-populated by the maps API, but modifiable by the user.

Organic status: {“Non-organic” (default), “Transitional”, “Organic”)

Transition date only shown if transitional or organic are chosen.

If crop-enabled, Hybrid:

  1. Crops (Tile)

  2. Detail**

Otherwise, just Detail**

 

** including edit, retire

Lines

For our Spring 2021 release, the following lines will be supported:

Line type

Attributes

Other notes

Available Views

Line type

Attributes

Other notes

Available Views

Fence

  • Name: String

  • Length: Decimal

  • Pressure treated: Enum (Organic required)

  • Notes (optional)

Length should be pre-populated by the maps API, but modifiable by the user.

Fences that are pressure treated need to be declared for organic certifications. Only shown for organic certification. Options: {““, “Yes”, “No”}

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Watercourse

  • Name: String

  • Length: Decimal

  • Used for irrigation: Enum (optional)

  • Includes riparian buffer: Enum (optional)

    • Buffer width: Decimal (optional)

  • Notes (optional)

Length should be pre-populated by the maps API, but modifiable by the user.

Used for irrigation: {““, “Yes”, “No”}

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Buffer zone

  • Name: String

  • Width: Decimal

  • Notes (optional)

Total area and perimeter should be pre-populated by the maps API, but modifiable by the user.

Width is required. Standard is 8 meters for separation of organic and non-organic areas - though there are many reasons it can be less. Must be modifiable.

Hybrid:

  1. Tasks (List)

  2. Crops (Tile)

  3. Detail**

 

** including edit, retire (only if no incomplete tasks or crops reference this location), reestablish

Road

  • Name: String

  • Length: Decimal

  • Type: Enum (optional)

  • Notes (optional)

Length should be pre-populated by the maps API, but modifiable by the user.

Type: {“Earthen” (default), “Gravel”, “Paved”}

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Footpath

  • Name: String

  • Length: Decimal

  • Type: Enum (optional)

  • Notes (optional)

Length should be pre-populated by the maps API, but modifiable by the user.

Type: {“Earthen” (default), “Gravel”, “Paved”}

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Points

For our Spring 2021 release, the following points will be supported:

Point type

Attributes

Other notes

Available Views

Point type

Attributes

Other notes

Available Views

Water valve

  • Name: String

  • Water source: Enum (optional)

  • Maximum flow rate: Decimal (optional)

  • Flow rate unit: Enum (optional)

  • Notes (optional)

Water source: {“Municipal water” (default), “Surface water”, “Groundwater”, “Rain water”}

Flow rate unit is based on the users measurement preference. For metric: l/min, l/hour (default)

For imperial: g/min (default), g/hour

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Gate

  • Name: String

  • Notes (optional)

 

Hybrid:

  1. Tasks (List)

  2. Detail**

     

** including edit, retire (only if no incomplete tasks reference this location), reestablish

Sensor

  • Name: String

  • External_ID: String (optional)

  • Latitude: Decimal

  • Longitude: Decimal

  • Read_types: Enum

  • Depth: Decimal (optional)

  • Brand: String (optional)

  • Model: String (optional)

See https://lite-farm.atlassian.net/wiki/spaces/LITEFARM/pages/1185611781

Hybrid:

  1. Readings (List)

  2. Tasks (List)

  3. Detail**

 

** including edit, retire (only if no incomplete tasks reference this location), reestablish

 

Transitioning from legacy fields to areas, lines, and points

For Winter 2021 and all previous versions of LiteFarm, fields were an entity that lived just below a farm. Moving forward, we’ll have three categories of of geospatial entities that live below a farm:

  • Areas

  • Lines

  • Points

For this transition, fields will become an area of type Field. The endpoint that populated fields and displayed them on google maps will need to be augmented to display all categories of geospatial entities.

Handling overlaps between locations

In the general case, locations are assumed to be independent from each other. For example, if a user decided to draw a farm site boundary and then chose to draw a field outside this boundary, it is not the system’s responsibility to warn or prevent the user from doing this. Instead, the system assumes the user can make their own choices in this regard as long as the user is provided with the appropriate contextual information, specifically:

  • Users can view existing locations while adding new locations

  • Users can zoom in and out and change the viewed area while adding a new location

  • After placing a new location, users can modify it while viewing existing locations

One specific example of this general case is overlaps between areas. If a user decided to create a large field and then place a residence partially or entirely within the field, that is their prerogative. The areas of each will be calculated independently. A description of how the system will handle selection of these overlapping locations is described in https://lite-farm.atlassian.net/wiki/spaces/LITEFARM/pages/707231747.

The reason we’re laissez faire about these interactions are two fold:

  1. For certifications or research where areas are being compared someone will look at the visual map

  2. Users can override areas and perimeters when they create a shape (such that if I knew my field was 10,000 sq ft and my house 2,000 sq ft in the above example, I could overwrite the field area to be 8,000 sq ft to compensate)